处理过拟合问题-Regularization

数学中的Regularization是为了解决overfitting问题而引入的一种方法。所谓overfitting就是在一些数学模型中由于过于复杂,有太多的观测参数,以至于一点点微小的误差都回产生巨大的影响,任何微小的数据扰动都会带来巨大的改变。在一些训练模型中用来fitting的data也会因为结构问题而Overfitting。

 

一般来说有两种克服Overfitting的方法:一是补偿模型的某些部分(如Regularization);二是根据潜在的问题提供而外的数据来训练。

 

下面介绍Tikhonov Regularization作为例子。

 

在如下方程中:

Ax = b

要求解x的标准方法是最小二乘法:

Min || Ax – b ||^2

求解这个方程除了overfitting外,还有overdetermined (underdetermined)的问题。所谓overdetermined (underdetermined),是指方程组中未知数的个数与方程数不不一致。如果把一个未知数看成一个自由度的话,每个单独的方程可以看成一个对应的constraint,当constraint的数目比未知数还多时,有可能找不到符合方程组的解;当方程的数目少于未知数时,可能有无穷多组解。显然当A不是方阵的时候肯定overdetermined(underdetermined)的。

A可能是奇异阵,这也是一个问题。

为了获得在某种条件下的解,加入regularization项如下:

|| Ax – b ||^2 + || Rx ||^2

其中,||.||是Euclidean norm,即平方和的根。

在很多情况下,R可以直接取单位阵。加入R之后可解如下:

x = (A^TA + RTR)^(-1)A^Tb

 

一些另外的取法。令R = a*L,L是对称Laplace-Beltrami算子。

L = V^(-1/2) * C * V^(-1/2)

V是一个voronoi area对角阵,C是一个系数对称cotangentweight矩阵。(cot(Betai,j) + cot(Betai,j)^-)/2, Beta是相邻三角形的角度。

 

可以把L作特征值分解,L = QBQ^T,Q为正交矩阵。因为正交矩阵不改变Frobenius norm,所以:

|| RU || = || aLU || = a|| QBQ^TU || = a|| BQ^TU||



一、过拟合:是指因过分强调对训练样本的效果导致过度拟合,使得对未知预测样本效果就会变差的一种情况。

	拟合度就是说这个模型和你想象的理想情况差多少。
	试想如果所有的点都在直线上,一点也没有离开直线,那就说明拟合度很好,是1。就是能够完全解释。
	而现实情况肯定没有这样的。就比如你的努力程度和历次考试成绩,虽然越努力成绩越好,但是你不能保证自己没有失误	啊。这个失误就是残差,但是失误肯定不是主要部分,所以R平方还是很大的。
	R方没有很明确的界限,说什么就是好什么就是不好,有的时候时间序列的拟合程度都不是很好,甚至只有0.3到0.4,所	以要综合来看,没有很确定的界限

二、什么情况下出现过拟合:

  当你拟合的函数中,一些特征权重阶数越高时,过度拟合的情况越有可能发生,反之阶数越小,过拟合发生概率越小,甚至会欠拟合。

  比如有三个拟合函数:

    a0 + a1x1+ a2x2 

     a0 + a1x1+ a2x2 + a3x12 + a4x22

    a0 + a1x1+ a2x2 + a3x12 + a4x22 + a5x13 + a6x23

  则最后这个过拟合的可能最高。

三、如何解决过拟合问题:

1.  将那些特征权重阶数高的特征删除。比如在上面的例子中删除特征x13 、x23。

     删除方式有两种:

  一种:人工查看样本集合筛选

     另一种:有机器学习的规则用于筛选这种特征,后续才会讲到。

2. 正则化:特征全部保留,但特征系数进行最小优化。

     设一般情况下的成本函数为costFucntion(a,x,y)

     为了时特征系数减小,以使axj变小,新的成本函数为 costFunction_reg(a,x,y) = costFunction(a,x,y) + sum(aj2) 

  我们将这种处理叫做正则化

  新增的正则化项为 a02 + a12 + ... + an2,  惯例上不要a02这项(他是1的系数),但即使加上效果影响不大。

四、正则化的线性回归问题

     成本函数:costFunction(a,X,y) = 1/2m *sum((h(a,X)-y).^2), 其中h(a,X)=Xa;

          正则化后:costFunctionReg(a,X,y) = costFunction(a,X,y) + lambda*sum(aj2)

     梯度下降法:aj = aj - 1/m *alpha * ( h(a,X)-y ) * Xj

          正则化后:aj = aj - 1/m * alpha * ( h(a,X)-y ) * Xj  - 1/m * alpha * lambda * aj

     正规方程组解法 a = (XT*X)-1*XT*y

          正则化后:a = (XT*X - lambda * I )-1*XT*y

五、logistic分类问题过拟合解决

  成本函数:costFunction(ha(x),y) = -y*log( ha(x) ) - (1-y)*log( 1- ha(x))

    正则化后:costFunctionReg(ha(x),y) = costFunction(ha(x),y)  +  lambda*sum(aj2)

  梯度下降法:aj =aj - 1/m*(ha(x)-y )* Xj;

    正则化后:aj =aj - 1/m*(ha(x)-y )* Xj -1/m*lambda*a

你可能感兴趣的:(机器学习)