跳至主要內容

斯坦福机器学习笔记-第三周

yczha大约 6 分钟Machine LearningMachine Learning

这篇文章是斯坦福大学吴恩达老师机器学习课程第三周的笔记

分类

分类问题如同回归问题,只不过其预测值变成了有限的特定集合。对于二分类来说,预测值仅仅为0或者1,称为逻辑回归

假设函数

对于逻辑回归其假设函数是hθ(x)=θTX,而对于分类问题,假设函数变为:hθ(x)=g(θTx),其中g(z)=11+ez,称该函数为Sigmoid 函数或者Logistic 函数。该函数图像如下:

Sigmoid函数
Sigmoid函数

这里,h给出的结果是对预测的概率值,取值为从0到1。hθ(x)=P(y=1|x;θ)=1P(y=0|x;θ)

决策边界

为了对分类进行预测,给定一个阈值0.5,当hθ(x)>0.5时,则预测y=1,反之则为y=0。而该分界点对应着θTx=0,也就是说:

θTx0y=1θTx0y=0

决策边界就是将y=0;y=1分离开来的边界线,对应着hθ(x)=0.5,这是由假设函数所决定的线。当然,值得强调一点的是,决策边界可能是直线,也可能是任意形状,比如下图:

决策边界示意
决策边界示意

逻辑回归的损失函数

在线性回归中,曾讨论过线性回归的损失函数J(θ)=12mi=1m(hθ(xi)yi)2,首先我们定义一个代价函数Cost(hθ(x),y)=12(hθ(x)y)2,对于线性回归​,由于hθ(x)是多项式,其损失函数总是凸函数Convex,而对于逻辑回归函数,由于hθ(x)当中有一项11+ez,导致其损失函数是一个非凸函数,进而会导致函数求解存在局部最优解,如下图示意:

左:非凸函数;右:凸函数
左:非凸函数;右:凸函数

鉴于以上原因,需要重新定义逻辑回归的损失函数,给出定义如下:

J(θ)=1mi=1m(Cost(hθ(x),y))

$Cost(h_\theta(x),y)=-log(h_\theta(x)) \quad if\ y=1 $

Cost(hθ(x),y)=log(1hθ(x))if y=0

上述的两个代价函数可以合并为以下形式:

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

函数图像如下示意:

逻辑回归损失函数
逻辑回归损失函数

现在,逻辑回归的损失函数可以完整表示为:J(θ)=1mi=1m[y(i)log(hθ(x(i)))(1y)log(1hθ(x(i)))]

向量化表示为:h=g(Xθ);J(θ)=1m(yTlog(h)(1y)Tlog(1h))

其梯度下降更新公式为:θj:=θjαθjJ(θ)=θjαmi=1m(hθ(x(i))y(i))xj(i)

向量化表示为:θ:=θαmXT(g(Xθ)y)

高级优化器

为了求解参数,我们使用了梯度下降算法作为优化算法,事实上,有其他更多高级的优化算法,比如BFGS(共轭梯度),L-BFGS等。这些算法通常有着比梯度下降更好的性能、更快的收敛速度,但是实现更为复杂。在Octave中,可以使用fminunc函数来使用这些优化器,函数会自动选择合适的优化器。

% 计算损失J及其梯度
function [jVal, gradient] = costFunction(theta)
  jVal = [...code to compute J(theta)...];
  gradient = [...code to compute derivative of J(theta)...];
end

% 调用优化器
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

多分类问题

逻辑回归多分类原理
逻辑回归多分类原理

逻辑回归的多分类问题可以通过一对多实现,即:对于n个分类,针对每一个类别与其他类别,分别训练一个分类器,共训练n个分类器。对于某样本的预测值,最后取n个分类器概率最大值即可。

过拟合

如下图,对于房价预测的例子,假设我们有A,B,C,D,E,F,G,H,I这样一组数据,想要做出一个拟合模型。最简单的就是直线拟合hθ(x)=θ0+θ1x,如图中灰色线,但此时很多点都在直线外;进一步,使用三次多项式拟合hθ(x)=θ0+θ1x+θ2x2+θ3x3,此时对点的拟合效果较好;更进一步,如果使用5次多项式进行拟合hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4+θ5x5,此时几乎所有点都在直线上,但是这也明显看得出来这条预测线对已知数据拟合得**“太好了”** ,几乎已经失去了对新数据进行合理预测的能力。因此称这种现象为过拟合(Over fitting) ,而第一种情况则相应的称为欠拟合

各种情况的的拟合
各种情况的的拟合

一般的,欠拟合:存在着高偏差(bias),而过拟合,则存在着高方差(variance)。

为了减少过拟合的问题,可采用的方法包括:

  1. 减少特征数量
  2. 正则化

代价函数的改进

为了解决过拟合的问题,我们可以在代价函数上进行改进。在上面的房价预测中,我们希望假设函数是一个接近二次或者三次的多项式,但实际上我们的假设函数是五次多项式:hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4+θ5x5,此时,实际上我们希望θ3,θ4,θ5接近0,那么真实的预测函数就会接近二次多项式。这种情况可以通过在损失函数中添加正则化项来实现。

J(θ)=12mi=1m(hθ(x(i)y(i))2)+λj=1nθj2

上式中,λ称为正则化参数,该参数能平滑拟合函数,减少过拟合。当其过大,会造成拟合线趋近于水平线,导致欠拟合,而当其过小(接近于0),则起不到平滑作用,导致过拟合

正则化线性回归

首先,将参数更新修改为以下形式:

θ0分离出来的原因是正则化项并不从0开始。这是一种约定俗成。

将上述更新公式稍作改变:θj:=θj(1αλm)αmi=1m(hθ(x(i)y(i))xj(i)

可以发现,正则化后的更新公式就是在原来的更新公式基础上对θj做了缩放,并且,由于α>0,λ>0,m>01αλm<1。所以正则化总是将参数进行了压缩

正规方程解法的改进

添加了正则化项后的正规方程变化为以下形式:

当然,此时同样需要注意矩阵的不可逆问题

正则化逻辑回归

对于逻辑回归,其原理跟线性回归完全一致,只不过相应的损失函数变为:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2