机器学习中的Logistic回归算法(LR)

来源:互联网 发布:mac os怎么升级 编辑:程序博客网 时间:2024/05/22 10:29

Logistic回归算法(LR)

算法简介

LR名为回归,实际是一种分类算法。其针对输入样本集x,假设的输出结果 y=hθ(x) 的取值范围为 y=[0,1] 。在线性回归中,hθ(x)=θTX,在此引入Logistic函数,也被称为Sigmoid函数

g(z)=11+ez
其图像
为
在线性回归中,hθ(x)=θTX,令z=hθ(x),代入上式即可得到
g(x)=11+eθTX
这里的hθ(x)也被称做是该Logistic回归的“决策边界”,再令hθ(x)=g(x),即为Logistic回归的假设函数,那么下面来讨论如何得到该假设的最佳参数θ

利用梯度下降来最小化代价函数
要使用该方法,首先需要求出Logistic回归的代价函数J(θ),由于LR属于一种监督学习,所以样本集包括输入和输出两部分,在LR中,样本的输出y={0,1},我们在这里分两种方式来讨论,y=0y=1的情况。

y=0的情况中,我们需要的是输出结果尽可能地靠近0,尽可能的远离1,于是我们可以构造这样的代价函数

Costy=0(θ)=log(1hθ(x))

这样就使得在y>0的时候其代价函数Cost(θ)y=0(θ)也趋近于0,也就是在分类越接近于真实的情况的时候,其代价函数就越小,相反在y>1的时候,代价函数Cost(θ)y=0(θ)趋近于无穷,也就是越偏离真实情况,其代价函数就越大。

相反,在y=1的情况下,构造其代价函数

Costy=1(θ)=log(hθ(x))

最后对两者综合考虑,可以得到最后的单个样本代价函数

Cost(θ)=(1y)log(1hθ(x))ylog(hθ(x))
可以这样理解,当y=0的时候,上式中前项的系数为1,后项为0,相当于就只有log(1hθ(x))起作用,而log(hθ(x))项不起作用,也就对应了y=0情况下的代价函数状态,y=1的时候同理。

构造LR的代价函数J(θ)有两种方法,第一种是直接将hθ(x)=11+eθTX代入常用的平方均值代价函数J(θ)=12mmi=1(hθx(i)y)2中,但是这样会得到一个非凸函数,不利于后面的梯度下降或其他优化方法的应用。

下面主要介绍另一种方法,即根据上面构造的Cost函数来获得整体的J(θ),在这里取整体的均值误差作为代价函数可以得到

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]
这样的方法相比上面的好处就是这是一个凸函数,可以方便的使用梯度下降等方法求解,在这里以梯度下降为例,可以求得其梯度为
θJ(θ)=i=1m(hθ(x(i))y(i))x(i)
最后即可以根据下式来求解该方程
θ:=θαθJ(θ)
式中α为学习率,一般也称之为步长,按照上式迭代一定的步数后则可以得到最优解。
根据Andrew NG的说法,可以利用其他的高级方法来求解该方程,只需将其函数和梯度作为参数传入更加高级的求解方法中即可,一般由软件包来完成该工作。

下面给出几个关键部分MATLAB代码

//其中的变量均为列向量,X是m*n的矩阵,其中m为样本个数,n-1为特征个数,在X的最左边另外有一列全1J=-1/m*(y'*log(sigmoid(X*theta))+(1-y')*log(1-sigmoid(X*theta)));   //求出代价函数grad=1/m*X'*(sigmoid(X*theta)-y);   //求出梯度