机器学习——逻辑回归

逻辑回归

1.1 问题及定义

逻辑回归主要是用来解决二分类的问题,例如判断一封电子邮件是否是垃圾邮件,判断一次金融交易是否是欺诈,判断一个肿瘤是恶性的还是良性的等等。
(注意:逻辑回归是分类算法,线性回归是回归算法)
为此,逻辑回归的输出应当是0-1之间。
逻辑回归模型的假设是:

hθ(x)=g(θTx)(1) (1) h θ ( x ) = g ( θ T x )

其中, x x 表示特征向量,x=(x0;x1;x2;...;xn) g g 表示逻辑回归(logistic fucntion)函数,这是一个常用的S型函数(sigmoid function),公式为g(z)=11+ez. 该函数的图像为:
sigmoid
合起来我们得到逻辑回归模型的假设:
hθ(x)=11+eθTx(2) (2) h θ ( x ) = 1 1 + e − θ T x

这里 hθ h θ 的作用是对于给定的输入变量,根据选择的参数计算出变量=1的可能性,即 hθ(x)=P(y=1|x;θ) h θ ( x ) = P ( y = 1 | x ; θ ) .
例如,如果对于给定的 x x ,通过已经确定的参数计算得出hθ(x)=0.7,则表示有70%的几率 y y 为正类,相应的y为负类的概率为 10.7=0.3 1 − 0.7 = 0.3 .

1.2 代价函数

我们怎么去拟合逻辑回归模型的参数呢?
我们首先定义一些需要使用的变量,训练集合 ={(x(1),y(1)),(x(2),y(2)),(x(3),y(3)),...,(x(m),y(m))} = { ( x ( 1 ) , y ( 1 ) ) , ( x ( 2 ) , y ( 2 ) ) , ( x ( 3 ) , y ( 3 ) ) , . . . , ( x ( m ) , y ( m ) ) } m m 为训练集合大小,训练样本x=(x0;x1;x2;...;xn) x0=1,y{0,1} x 0 = 1 , y ∈ { 0 , 1 } .
我们应该使用怎样的代价函数呢?在线性回归中我们使用的是均值方差函数,这里如果使用均值方差可以吗?答案是不行的,因为将 hθ(x)=11+eθTx h θ ( x ) = 1 1 + e − θ T x 代入到这样的代价函数中时,将会得到一个非凸函数(non-convex function)。如下图:
convex
那么意味着这样的代价函数有很多的局部最小值,这降影响梯度下降寻找全局最小值。
因此,我们重新定义逻辑回归的代价函数为:
这里写图片描述
其中,
这里写图片描述
我们使用图表来理解这个代价函数, hθ(x) h θ ( x ) Cost(hθ(x),y) C o s t ( h θ ( x ) , y ) 之间的关系如下图,
这里写图片描述
这样构建的 Cost(hθ(x),y) C o s t ( h θ ( x ) , y ) 函数的特点是:当实际的 y=1 y = 1 hθ h θ 也为1时,误差为0,当 y = 1 但是 hθ h θ 不为1的时候,误差随着 hθ h θ 的增大而减小;当实际的 y=0 y = 0 时且 hθ h θ 也为0的时候,误差为0,当 y=0 y = 0 但是 hθ h θ 不为0的时候,误差随着 hθ h θ 的增大而增大。(个人感觉就是使预测值更接近真实值,还有这里用的是最大似然估计的方法也能理解推导,参考logistic回归算法)
将构建的 Cost(hθ(x),y) C o s t ( h θ ( x ) , y ) 简化如下:
这里写图片描述
代入代价函数得到:
这里写图片描述

然后我们就可以使用梯度下降的算法来求得能使代价函数最小的参数了,算法为:
这里写图片描述
求导后得到:
这里写图片描述
可以证明,这样得到的代价函数是凸的,没有局部最优值!(涉及到复杂的凸性分析,感兴趣的话可以去查阅相关资料)
接着,每次我们就可以使用梯度下降算法更新参数,最小化代价函数,直至收敛!
仔细看一下这个参数更新公式,我们发现和线性回归的参数更新公式形式完全一样,不过注意两个算法的假设函数 hθ(x) h θ ( x ) 不一样,因此其实是两个完全不同的东西!

1.2.1逻辑回归推导

上面省略了求导步骤,这里我详细写一下过程:
在这之前,先熟悉一下sigmoid函数的求导规律,对于sigmoid函数 s(x)=11+ex s ( x ) = 1 1 + e − x ,其导数为 s(x)=s(x)(1s(x)) s ′ ( x ) = s ( x ) ( 1 − s ( x ) ) (自己证明).
要求对 θj θ j 的导数,

J(θ)θj=J(θ)hθ(x(i))hθ(x(i))θj ∂ J ( θ ) ∂ θ j = ∂ J ( θ ) ∂ h θ ( x ( i ) ) ⋅ ∂ h θ ( x ( i ) ) ∂ θ j

所以,第二部分导数为
hθ(x(i))θj=hθ(x(i))(θTx(i))(θTx(i))θj=hθ(x(i))[1hθ(x(i)))]xj ∂ h θ ( x ( i ) ) ∂ θ j = ∂ h θ ( x ( i ) ) ∂ ( θ T x ( i ) ) ⋅ ∂ ( θ T x ( i ) ) ∂ θ j = h θ ( x ( i ) ) [ 1 − h θ ( x ( i ) ) ) ] x j

第一部分导数为
J(θ)hθ(x(i))=1m[i=1my(i)hθ(x(i))+y(i)11hθ(x(i))]=1m[i=1my(i)(1hθ(x(i))+(y(i)1)hθ(x(i))hθ(x(i))(1hθ(x(i)))]=1m[i=1my(i)hθ(x(i))hθ(x(i))(1hθ(x(i)))] ∂ J ( θ ) ∂ h θ ( x ( i ) ) = − 1 m [ ∑ i = 1 m y ( i ) h θ ( x ( i ) ) + y ( i ) − 1 1 − h θ ( x ( i ) ) ] = − 1 m [ ∑ i = 1 m y ( i ) ( 1 − h θ ( x ( i ) ) + ( y ( i ) − 1 ) h θ ( x ( i ) ) h θ ( x ( i ) ) ( 1 − h θ ( x ( i ) ) ) ] = − 1 m [ ∑ i = 1 m y ( i ) − h θ ( x ( i ) ) h θ ( x ( i ) ) ( 1 − h θ ( x ( i ) ) ) ]

所以最后的导数为
J(θ)θj=1m[i=1m(hθ(x(i))y(i))x(i)j] ∂ J ( θ ) ∂ θ j = 1 m [ ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ]

仔细看一下这个求导后结果,在 i=1 i = 1 m m 上求和,其实就是预测误差乘以xj(i).

1.3多分类问题

上面讲到逻辑回归算法是用来解决二分类问题而设计的,那么如果碰到多分类问题呢?
没错,我们可以采用“一对多的思想”,可以先将多个类中的一个类作标记为正类,然后将其他所有类作为负类,以此类推,训练一系列的二分类器,最后预测时,我们将所有的分类器都运行一遍,对于每一个输入变量,都选择最高可能性的输出变量!
假设我们将一系列的分类器简记为: h(i)θ=p(y=i|x;θ) h θ ( i ) = p ( y = i | x ; θ ) ,其中 i=(1,2,3,...,k) i = ( 1 , 2 , 3 , . . . , k ) .

1.4正则化减少过拟合

正则化技术可以用来减少过拟合,这项技术不仅仅在这里可以使用,在其他机器学习算法中如神经网络均可以使用。
正则化的基本思想就是引入正则化参数 λ λ 对特征的参数 θ θ 进行惩罚,使得参数不至于过大,造成过拟合。
在线性回归中使用正则化,
这里写图片描述
在逻辑回归中使用正则化,
这里写图片描述

1.5 实现

(待更——)


参考资料:
[1] Andrew course机器学习学习笔记
[2] 周志华《机器学习》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值