我的人工智能之旅——正则化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daihuimaozideren/article/details/81431135

无论线性回归,还是逻辑回归,都需要对假设函数进行设定。而假设函数的设定,将影响到预测结果的准确性。因此,如何判断假设函数是否合适,以及如何修改假设函数将变得十分重要。本文,我们将记录假设函数的正则化。在记录的过程当中,将涉及以下概念。

(1)过度拟合,overfitting

(2)欠拟合,underfitting

(3)正则化,regularization

(4)惩罚项(或正则化项),penalize item

以下为正文。


拟合曲线

假设函数,为N元M次方程式(N\geq 1M\geq 1)。不同的方程式,代表不同的图形。

例如,

f(x)=1+2x,为直线;

f(x)=1+x+x^2,为抛物线;

f(x)=1+x+x^2-5x^3-x^4+x^5,为曲线;

在线性回归中,正是通过设定的方程式(假设函数),画出特定形状的曲线,将尽量多的样本点串联起来。而逻辑回归,则是使用设定的方程式(假设函数),尽量分隔不同样本。但不论串联还是分隔,我们将画出的曲线,称为拟合曲线。

我们仍以房价预估为例,来看一下线性回归中的拟合曲线。

从左至右,图(1)(2)(3)(4)中,蓝色的点为样本集合。横坐标为面积,纵坐标为价格。

分别选取三个的方程式作为假设函数,通过参数推算,可以获得三条不同的曲线。

其中图(4)中的曲线,完美的连接所有样本点。

但经验告诉我们,

(a)在同一地段,面积越大,房价通常越高。

(b)在同一地段,面积越大,单价越低,价格不会呈现以固定比例增长。

因此,图(4)(2)对应的假设函数不合常理。

当有新样本(绿色)加入时,更能进一步证实我们的推测。

相对而言,图(3)中的假设函数较为适中。

我们将图(4)中,对前期样本完美拟合,但对后期样本存在较大偏差的情况,称为过度拟合。

对于图(2)中,无论前期样本,还是后期样本,偏差都较大的情况,称为欠拟合。

当然,逻辑回归中也会存在同样的问题,如图。

通过简单的示例,我们可以了解到,设定合适假设函数的重要性。那么如何设定假设函数呢?

正则化

对比上节例子中的三个假设函数,我们会发现,变量的阶数越高,曲线越扭曲。换一个角度,若将高阶变量看做一个新变量,也可以理解为,变量越多,曲线越扭曲。那么,如何降低高阶变量对结论的影响呢?最简单的方式,就是移除高阶变量,或多余变量。但移除过于简单粗暴,因为变量数量或者高阶变量的减少,将会或多或少的影响结论的准确度。另一方面,移除哪个变量也是一个让人纠结的问题。因此,我们引入正则化(regularization)的概念

正则化的核心思想是,通过在代价函数中添加惩罚项(penalize item,或正则化项),降低某一变量对预估结论的影响。

正则化后的代价函数如下

(1)线性回归代价函数

J(A^T)=\frac{1}{2m}\left [ \sum _{j=1}^{m}{(A^TX_j-Y_j)^2}+\lambda \sum _{i=0}^{m}{a_i^2} \right ]

(2)逻辑回归代价函数

J(A^T)=-\frac{1}{m}\sum _{j=1}^{m}{\left [ Y_jlog(f(X_j))+(1-Y_j)log(1-f(X_j)) \right ]}+\frac{\lambda}{2m} \sum _{j=0}^{m}{a_j^2}

其中a_i为A中的元素,\lambda为正则化参数,

\frac{1}{2m}\lambda \sum _{i=0}^{m}{a_i^2}即为惩罚项。

惩罚项的加入,可以防止假设函数的过度拟合问题。

有利也有弊。加入惩罚项,需要初始化正则参数\lambda。如果\lambda过大,将是的a_i\rightarrow 0。对于线性回归而言,其假设函数的对应图形将变成一条平行于X轴的直线。对于房价预估问题,这样的假设函数肯定欠拟合。同样,对于其他回归问题,也并非是最好的预估模型。所以,\lambda的取值对于正则化是十分重要的。

线性回归的正则化

在线性回归章节中,我们提到过,使用梯度下降和正规方程的两种方式来推算A^T。加入正则参数后,原有方法仍然有效。

\frac{\partial }{\partial a_j}J(A^T)=\frac{1}{m}\sum _{i=1}^{m}{x_i_j(f(X_i)-y_i)}+\frac{\lambda }{m}a_j\\=\frac{1}{m}\left \{\left [ \sum _{i=1}^{m}{x_i_j(f(X_i)-y_i)}\right ] +\lambda a_j \right \}

梯度下降算法

对于梯度下降算法而言,由于

{a_j}_{next}={a_j}-\beta \frac{\partial }{\partial a_j}J(A^T)

那么,

{a_j}_{next}\\={a_j}-\frac{\beta }{m}\left \{\left [ \sum _{i=1}^{m}{x_i_j(f(X_i)-y_i)}\right ] +\lambda a_j \right \}\\=a_j(1-\frac{\beta \lambda }{m})-\frac{\beta }{m}\sum _{i=1}^{m}{x_i_j(f(X_i)-y_i)}

与不加正则化项的{a_j}_{next}相比,只是在a_j前多了一个参数项(1-\frac{\beta \lambda }{m})

通常来说,该参数项是一个趋近于1的值,例如0.99。原因在于,作为样本数量的m通常都是非常巨大,学习率\beta又非常小(学习率太大将影响收敛)。从效果上来看,在正则化后,梯度下降算法变得更加精细了。

正规方程式算法

正规方程的核心思路是,通过使\frac{\partial }{\partial a_j}J(A^T)=0计算出a_j

那么,加入正则项后,须使得\frac{1}{m}\left \{\left [ \sum _{i=1}^{m}{x_i_j(f(X_i)-y_i)}\right ] +\lambda a_j \right \}=0

那么,a_j=\frac{1}{\lambda} \sum _{i=1}^{m}{x_i_j(y_i-f(X_i))}

逻辑回归的正则化

猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/81431135
今日推荐