欠拟合 过拟合 正则化-------吴恩达机器学习心得

欠拟合 过拟合 正则化

模型训练过程中会出现“欠拟合”(Underfitting)“过拟合”(Overfitting)现象。
(欠拟合又可以表示为“高偏差”,而过拟合又可以称为“高方差”,对于高误差和高方差的解释会在另一篇里解释。)
如下图的线性回归函数和逻辑回归函数的第一个图形,就是欠拟合,即假设函数不能很好的拟合训练数据。
而第三个图形就是过拟合的例子,即学习的假设能够完全拟合训练集的每一个数据,但不能推广到新的数据集。(对于变量多,训练集少的数据就很容易导致)而我们训练目的是训练出适用于所有样本的“普遍规律”,并且能够对新样本做出正确的判别。
欠拟合 过拟合 正则化-------吴恩达机器学习心得_第1张图片
欠拟合 过拟合 正则化-------吴恩达机器学习心得_第2张图片
对于“欠拟合”比较容易克服,通常是由于学习能力低下造成的。比如在神经网络中可以增加训练轮数,在决策树中扩展分支等等来解决欠拟合。
而“过拟合”是在训练过程中经常存在的一个危害很大的问题,造成过拟合的原因有很多,它会导致泛化性能降低,增加泛化误差。无法彻底避免,只能尽力减小误差。
对于这个问题,解决方法有:
1.减少变量数目,
2.采用正则化,保留所有变量,减小theta参数。
正则化表达形式一般如下:
对于正则化线性回归代价函数(相当于在原代价函数的基础上加上一个正则化项)欠拟合 过拟合 正则化-------吴恩达机器学习心得_第3张图片
第一项是经验风险,第二项是正则化项,入要选择合适的值,过高会导致欠拟合,过低会导致过拟合。
相应的正则化梯度下降表达式:(对于theta0不需要进行正则化)

欠拟合 过拟合 正则化-------吴恩达机器学习心得_第4张图片
对于上式第二项,可简写为:
在这里插入图片描述
可以看出theta参数在每次梯度下降的基础上减少一定的数值,从而达到减少参数theta的目的。
同样也可以利用正规方程求解参数:
欠拟合 过拟合 正则化-------吴恩达机器学习心得_第5张图片
同样,对于正则化逻辑回归代价函数
在这里插入图片描述
对于正则化逻辑回归函数的梯度下降求解参数:
欠拟合 过拟合 正则化-------吴恩达机器学习心得_第6张图片
表达式与线性回归一样,但是两者的假设函数是不一样的。
同样的,跟逻辑回归的参数求解一样,正则化逻辑回归函数也可以通过高级方法求解参数,如共轭梯度法,BFGS,L-BFGS等
例如在matlab中提供了fminunc函数,可以不需要设置学习率,很方便的计算出使代价函数最小的参数值theta,相关代码如下:

function [J, grad] = costFunctionReg(theta, X, y, lambda)
m = length(y); 
J = 0;
grad = zeros(size(theta));
theta_t=theta;
theta_t(1)=0;
J=(1/m)*(-y'*log(sigmoid(X*theta))-(1-y')*log(1-sigmoid(X*theta)))+(lambda/(2*m))*sum(theta_t.^2);
grad=(1/m)*X'*(sigmoid(X*theta)-y)+(lambda/m)*theta_t;

end
  [theta, cost] = ...
	fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

注:对于其他没有自带高级函数的软件来说,或者是其他语言,如Python,R等,相应的高级函数就需要自己编写。

你可能感兴趣的:(Machine,Learning,欠拟合,过拟合,正则化)