摘要:然而,如果加入过多的特征,尽管可以获得完美的拟合度,但是却不是一个好的预测函数。我们称图叫拟合不足,图为过度拟合。例如,我们想让下面这个多项式更接近二次曲线如果都为,那么多项式就是个二次函数曲线。从而得到几乎是接近二次函数的假设函数。
过度拟合
考虑如下的一个数据集的三种拟合曲线
图1采用$ y = θ_0 + θ_1x $的直线作为假设函数,然而训练数据集看起来并不适合直线,所以假设函数看起来不太合适。图2采用$ y = θ_0 + θ_1x + θ_2x^2 $,我们得到了一个拟合度更好的曲线。观察图3,貌似的,通过添加高阶特征,我们获得了更好的拟合。然而,如果加入过多的特征,尽管可以获得“完美”的拟合度,但是却不是一个好的预测函数。我们称图1叫拟合不足(underfitting),图3为过度拟合(overfitting)。
拟合不足或者叫高偏差(high bias),导致假设函数不能很好的表示数据的趋势,这通常是由于函数过于简单,或者特征太少。另一个极端,过度拟合虽然可以“很好”拟合训练数据集,但是却不能很好的预测新数据,这可能是由于假设函数过于复杂,引入了过多的曲线和转角。
无论是线性回归还是逻辑回归都有这种情况,下面是逻辑回归的例子:
有两种主要的解决方案:
减少特性的数量:人工去掉一些不需要的特性或者使用模型选择算法。
正则化代价函数:保留特征,但是设法减小θ,如果有很多权重不大的特征,正则化很适合。
正则化的代价函数正则化(regularized)的基本思想是:如果想要降低多项式中某些项的比重,那么就提升这些项系数在代价函数中的比重。例如,我们想让下面这个多项式更接近二次曲线:
$$ θ_0 + θ_1x + θ_2x^2 + θ_3x^3 + θ_4x^4 $$
如果$ θ_3 、θ_4 $都为0,那么多项式就是个二次函数曲线。不过,我们不需要完全去掉这两个高阶项,只要让$ θ_3 、θ_4 $减小,甚至趋向于0即可。设置如下代价函数:
$$ min_ heta frac{1}{2m}sum_{i=1}^m (h_ heta(x^{(i)}) - y^{(i)})^2 + 1000cdot heta_3^2 + 1000cdot heta_4^2 $$
观察这个代价函数,我们在原先的代价函数中,增加两个额外的项,这两项会让过大的$ θ_3 、θ_4 $得到惩罚。因此,为了让代价函数的结果最小,算法会自动地选择比较小的$ θ_3 、θ_4 $,甚至接近0。从而得到几乎是接近二次函数的假设函数。
我们只要将所有的θ都添加进代价函数,就实现了正则化的代价函数:
$$ min_ heta frac{1}{2m}sum_{i=1}^m (h_ heta(x^{(i)}) - y^{(i)})^2 + λsum_{j=1}^nθ_j^2 $$
这里的λ是正则化参数,可以想象,如果λ过大,最终的假设函数会趋向于常数项$ θ_0 $,从而造成拟合不足;而过小的λ,会使得正则化无效,造成过度拟合。
用作业中的一个实际的例子来观察一下λ对拟合度的影响。以分类问题为例,下图是一个二值化分类的训练样本:
这个样本有两个变量Microchip Test 1和Microchip Test 2,分别记作x_1和x_2。我们首先将两个特征映射成28个特征(通过将两个参数进行高阶组合):
$$ mapFeature(x)=egin{bmatrix}1 ewline x_1 ewline x_2 ewline x_1^2 ewline x_1x_2 ewline x_2^2 ewline x_1^3 ewline vdots ewline x_1x_2^5 ewline x_2^6end{bmatrix} $$
如果λ=0,得到如下决策边界,显然这个决策边界有过度拟合(overfitting)之嫌:
如果λ=1,得到如下决策边界,看起来这个决策边界比较合适:
如果λ=100,得到如下决策边界,看起来这个决策边界又拟合不足(underfitting):
梯度下降推导前面给出了引入正则项的代价函数:
$$ min_ heta frac{1}{2m}sum_{i=1}^m (h_ heta(x^{(i)}) - y^{(i)})^2 + λsum_{j=1}^nθ_j^2 $$
观察发现,正则化的代价函数引入的额外项$ λsum_{j=1}^nθ_j^2 $,是从j=1开始的(即不惩罚常数项),所以我们的梯度下降算法公式推导需要区分j=0和j=1两种情况:
$$ egin{align*} & ext{Repeat} lbrace ewline & heta_0 := heta_0 - alpha frac{1}{m} sum_{i=1}^m (h_ heta(x^{(i)}) - y^{(i)})x_0^{(i)} ewline & heta_j := heta_j - alpha left[ left( frac{1}{m} sum_{i=1}^m (h_ heta(x^{(i)}) - y^{(i)})x_j^{(i)} ight) + frac{lambda}{m} heta_j ight] & j in lbrace 1,2...n brace ewline & brace end{align*} $$
上述公式的第二部分可以改写成:
$$ θ_j := θ_j(1 - αfrac{λ}{m}) - αfrac{1}{m}sum_{i=1}^m(h_θ(x^{(i)}) - y^{(i)})x_j^{(i)} $$
上式的第一项$ 1 - αfrac{λ}{m} < 1 $,这相当于在原来的基础上又对$ θ_j $作了一定比例的缩小。
逻辑回归代码总结采用fminunc算法的逻辑回归代价函数实现如下,sigmoid函数相当于g(z):
function [J, grad] = costFunction(theta, X, y) m = length(y); % number of training examples J = 0; grad = zeros(size(theta)); J = (1 / m) * ( (-1 .* y") * log(sigmoid((X * theta))) - (1 - y)" * log(1 - sigmoid((X * theta))) ); grad = ((1 / m) .* sum((sigmoid((X * theta)) - y) .* X))"; end
调用fminunc:
options = optimset("GradObj", "on", "MaxIter", 400); % Run fminunc to obtain the optimal theta % This function will return theta and the cost [theta, cost] = ... fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
正则化的代价函数,这里需要注意的是正则项中是不对$ heta_0 $惩罚的:
function [J, grad] = costFunctionReg(theta, X, y, lambda) m = length(y); % number of training examples J = 0; grad = zeros(size(theta)); theta_2 = theta; theta_2(1) = 0; J = (1 / m) * ( (-1 .* y") * log(sigmoid((X * theta))) - (1 - y)" * log(1 - sigmoid((X * theta))) ) + sum(theta_2.^2) * lambda / (2 * m); grad = ( (1 / m) .* sum((sigmoid((X * theta)) - y) .* X) + ( (lambda / m) .* theta_2" ) )"; end
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/18359.html
摘要:线性回归的正则化对于线性回归,我们在之前的内容中有说过两种算法,一种是基于梯度下降,一种是基于正规方程。以上,就是吴恩达机器学习第三周部分的课程笔记。 概念 假设我们有一组数据集如下图所示: showImg(https://segmentfault.com/img/remote/1460000016306911); 左边的图中,我们假设$y = heta_0 + heta_1x$,...
摘要:引言上一小节中,我们介绍了过拟合的概念,在机器学习中最大的危险就是过拟合,为了解决过拟合问题,通常有两种办法,第一是减少样本的特征即维度,第二就是我们这里要说的正则化又称为惩罚。 引言 上一小节中,我们介绍了过拟合的概念,在机器学习中最大的危险就是过拟合,为了解决过拟合问题,通常有两种办法,第一是减少样本的特征(即维度),第二就是我们这里要说的正则化(又称为惩罚,penalty)。 ...
摘要:偏差度量学习算法的期望预测与真实结果的偏离程度,也叫拟合能力。当这一轮完成后,重新随机选择份来训练数据。若干轮小于之后,选择损失函数评估最优的模型和参数。此方法主要用于样本量非常少的情况。 视频教程的总结和一些自行补充的内容,旨在尽可能的理解其原理。 showImg(https://segmentfault.com/img/remote/1460000012474417); 训练、开...
摘要:近来在深度学习中,卷积神经网络和循环神经网络等深度模型在各种复杂的任务中表现十分优秀。机器学习中最常用的正则化方法是对权重施加范数约束。 近来在深度学习中,卷积神经网络和循环神经网络等深度模型在各种复杂的任务中表现十分优秀。例如卷积神经网络(CNN)这种由生物启发而诞生的网络,它基于数学的卷积运算而能检测大量的图像特征,因此可用于解决多种图像视觉应用、目标分类和语音识别等问题。但是,深层网络...
摘要:摘要提起神经网络,你会想到什么关于深度学习,你又是否思考过其中的原理呢从上个世纪四十年代神经网络诞生开始,到今天已经历经多年的发展,这中间它又经历了什么本文将带领大家走进神经网络的前世今生一探究竟。 摘要:提起神经网络,你会想到什么?关于深度学习,你又是否思考过其中的原理呢?从上个世纪四十年代神经网络诞生开始,到今天已经历经70多年的发展,这中间它又经历了什么?本文将带领大家走进神经网...
阅读 2429·2021-11-02 14:39
阅读 3929·2021-10-11 10:58
阅读 3958·2021-09-23 11:20
阅读 1099·2021-09-06 15:12
阅读 1574·2021-09-01 10:49
阅读 1187·2019-08-29 18:31
阅读 1778·2019-08-29 16:10
阅读 3176·2019-08-28 18:21