机器学习笔记(三)——逻辑回归/对率回归

逻辑回归算法为什么用的是sigmoid函数而不用阶跃函数?

在分类问题中,预测的变量 y y y是离散的值,考虑二分类任务输出标记 y ∈ { 0 , 1 } y \in \{ 0,1\} y{0,1},而线性回归模型产生的预测值 z = w T x + b z = {w^T}x + b z=wTx+b是实数,我们需要将实数值 z z z转换为0/1值。最理想的是单位阶跃函数(unit-step function)
y = { 0 , z < 0 ; 0.5 , z = 0 ; 1 , z > 0 ; y =\begin{cases} {0,} & {z < 0;} \\ {0.5,} & {z = 0;} \\ {1,} & {z > 0;} \\ \end{cases} y=0,0.5,1,z<0;z=0;z>0;
即若预测值 z z z大于0就判断为正例,小于0则判断为反例,预测值为临界值0则等于0.5。
显然这个单位阶跃函数不连续,阶跃函数虽然能够直观刻画分类的错误率,但是由于其非凸、非光滑的特点,使得算法很难直接对该函数进行优化。而sigmoid函数本身的特征(光滑无限阶可导),以及完美的映射到概率空间,就用于逻辑回归了。对率函数正是这样一个可替代单位阶跃函数的替代函数: y = 1 1 + e − z y = \frac{1}{{1 + {e^{ - z}}}} y=1+ez1
在这里插入图片描述
Sigmoid函数即形似S的函数,对率函数是Sigmoid函数最重要的代表,它将 z z z值转化为接近0或1的值,并且其输出值在 z = 0 z=0 z=0附近变化很陡。
z z z带入上述方程可得到: y = 1 1 + e − ( w T x + b ) y = \frac{1}{{1 + {e^{ - ({w^T}x + b)}}}} y=1+e(wTx+b)1
可做变换:
ln ⁡ y 1 − y = w T x + b \ln \frac{y}{{1 - y}} = {w^T}x + b ln1yy=wTx+b
若将 y y y视为样本 x x x作为正例的可能性,则 1 − y 1-y 1y是其反例的可能性,两者的比值 y 1 − y \frac{y}{{1 - y}} 1yy,反映了 x x x作为正例的相对概率,对概率取对数则得到“对数概率” ln ⁡ y 1 − y \ln \frac{y}{{1 - y}} ln1yy

逻辑回归为什么是线性模型?

考虑单调可微函数 g ( ⋅ ) g( \cdot ) g(),令 y = g − 1 ( w T x + b ) y = {g^{ - 1}}({w^T}x + b) y=g1(wTx+b) 得到这样的模型称为“广义线性模型”,其中的函数 g ( ⋅ ) g( \cdot ) g()称为“联系函数”。
而逻辑回归公式:
y = 1 1 + e − z = 1 1 + e − ( w T x + b ) y = \frac{1}{{1 + {e^{ - z}}}}= \frac{1}{{1 + {e^{ - ({w^T}x + b)}}}} y=1+ez1=1+e(wTx+b)1可变换为:
ln ⁡ y 1 − y = w T x + b \ln \frac{y}{{1 - y}} = {w^T}x + b ln1yy=wTx+b根据广义线性模型的定义,逻辑回归是联系函数为 g ( y ) = ln ⁡ y 1 − y g(y) = \ln \frac{y}{{1 - y}} g(y)=ln1yy的广义线性模型。

如何拟合逻辑回归模型的参数 θ = ( w ; b ) \theta = (w;b) θ=(w;b)

若将上式中的 y y y视为类后验概率估计 p ( y = 1 ∣ x ) p(y=1|x) p(y=1x),则 ln ⁡ y 1 − y \ln \frac{y}{{1 - y}} ln1yy可重写为: ln ⁡ p(y = 1|x) p(y = 0|x) = w T x + b \ln \frac{{{\text{p(y = 1|x)}}}}{{{\text{p(y = 0|x)}}}} = {w^T}x + b lnp(y = 0|x)p(y = 1|x)=wTx+b
显然有 p(y = 1|x) = e w T x + b 1 + e w T x + b p(y = 0|x) = 1 1 + e w T x + b \begin{aligned} & {\text{p(y = 1|x)}} = \frac{{{e^{{w^T}x + b}}}}{{1 + {e^{{w^T}x + b}}}} \\ & {\text{p(y = 0|x)}} = \frac{1}{{1 + {e^{{w^T}x + b}}}} \\ \end{aligned} p(y = 1|x)=1+ewTx+bewTx+bp(y = 0|x)=1+ewTx+b1
于是,我们可通过“极大似然法”来估计 w 和 b w和b wb.给定数据集 { ( x ( i ) , y ( i ) ) } i = 1 m \{ ({x^{(i)}},{y^{(i)}})\} _{i = 1}^m {(x(i),y(i))}i=1m,对率回归模型最大化“对数似然” J ( w , b ) = ∑ i = 1 m ln ⁡ p ( y ( i ) ∣ x ( i ) ; w , b ) J(w,b) = \sum\limits_{i = 1}^m {\ln p({y^{(i)}}|{x^{(i)}};w,b)} J(w,b)=i=1mlnp(y(i)x(i);w,b)即令每个样本属于其真实标记的概率越大越好。为方便讨论,令 θ = ( b ; w ) , x : = ( 1 ; x ) \theta=(b;w),x:=(1;x) θ=(b;w),x:=(1;x),则 w T x + b {w^T}x + b wTx+b可以简写为 θ T x {\theta ^T}x θTx。再令 p 1 ( x ( i ) ; θ ) = p ( y = 1 ∣ x ( i ) ; θ ) p 0 ( x ( i ) ; θ ) = p ( y = 0 ∣ x ( i ) ; θ ) = 1 − p 1 ( x ( i ) ; θ ) \begin{aligned} &{p_1}({x^{(i)}};\theta ) = p(y = 1|{x^{(i)}};\theta )\\ &{p_0}({x^{(i)}};\theta ) = p(y = 0|{x^{(i)}};\theta ) = 1 - {p_1}({x^{(i)}};\theta ) \end{aligned} p1(x(i);θ)=p(y=1x(i);θ)p0(x(i);θ)=p(y=0x(i);θ)=1p1(x(i);θ)则似然项 p ( y ( i ) ∣ x ( i ) ; w , b ) p({y^{(i)}}|{x^{(i)}};w,b) p(y(i)x(i);w,b)可重写为: p ( y ( i ) ∣ x ( i ) ; w , b ) = y ( i ) p 1 ( x ( i ) ; θ ) + ( 1 − y ( i ) ) p 0 ( x ( i ) ; θ ) p({y^{(i)}}|{x^{(i)}};w,b) = {y^{(i)}}{p_1}({x^{(i)}};\theta ) + (1 - {y^{(i)}}){p_0}({x^{(i)}};\theta ) p(y(i)x(i);w,b)=y(i)p1(x(i);θ)+(1y(i))p0(x(i);θ) p ( y ( i ) ∣ x ( i ) ; w , b ) p({y^{(i)}}|{x^{(i)}};w,b) p(y(i)x(i);w,b)带入 J ( w , b ) J(w,b) J(w,b)得: J ( θ ) = ∑ i = 1 m ( − y ( i ) θ T x ( i ) + ln ⁡ ( 1 + e θ T x ( i ) ) ) J(\theta ) = \sum\limits_{i = 1}^m {( - {y^{(i)}}{\theta ^T}{x^{(i)}} + \ln (1 + {e^{{\theta ^T}{x^{(i)}}}}))} J(θ)=i=1m(y(i)θTx(i)+ln(1+eθTx(i))) J ( w , b ) J(w,b) J(w,b)求导得: ∂ J ( θ ) ∂ θ j = ∑ i = 1 m [ ( 1 1 + e θ T x ( i ) − y ( i ) ) x j ( i ) ] \frac{{\partial J(\theta )}}{{\partial {\theta _j}}}=\sum\limits_{i = 1}^m {[( \frac{1}{{1 + {e^{{\theta ^T}{x^{(i)}}}}}} - {y^{(i)}})x_{_j}^{(i)}]} θjJ(θ)=i=1m[(1+eθTx(i)1y(i))xj(i)]考虑sigmoid函数 f ( x ( i ) ) = 1 1 + e − θ T x ( i ) f({x^{(i)}}) = \frac{1}{{1 + {e^{ - {\theta ^T}{x^{(i)}}}}}} f(x(i))=1+eθTx(i)1,故: ∂ J ( θ ) ∂ θ j = ∑ i = 1 m [ ( f ( x ( i ) ) − y ( i ) ) x j ( i ) ] \frac{{\partial J(\theta )}}{{\partial {\theta _j}}}=\sum\limits_{i = 1}^m {[(f(x^{(i)}) - {y^{(i)}})x_{_j}^{(i)}]} θjJ(θ)=i=1m[(f(x(i))y(i))xj(i)]

梯度下降算法

在得到这样一个代价函数以后,我们便可以用梯度下降算法来求得能使代价函数最小的参数了。算法为:
Repeat {
θ j = θ j − α ∂ J ( θ ) ∂ θ j {\theta _j} = {\theta _j} - \alpha \frac{{\partial J(\theta )}}{{\partial {\theta _j}}} θj=θjαθjJ(θ)
(simultaneously update all θ j \theta _j θj )
}

Repeat {
θ j = θ j − α 1 m ∑ i = 1 m [ ( f ( x ) − y ( i ) ) x j ( i ) ] {\theta _j} = {\theta _j} - \alpha \frac{1}{m}\sum\limits_{i = 1}^m {[(f(x) - {y^{(i)}})x_{_j}^{(i)}]} θj=θjαm1i=1m[(f(x)y(i))xj(i)]
(simultaneously update all θ j \theta _j θj )

高级优化

然而梯度下降并不是我们可以使用的唯一算法,还有其他一些算法,更高级、更复杂。如果我们能用这些方法来计算代价函数 J ( θ ) {J(\theta )} J(θ)和偏导数项 ∂ J ( θ ) ∂ θ j \frac{{\partial J(\theta )}}{{\partial {\theta _j}}} θjJ(θ)两个项的话,那么这些算法就是为我们优化代价函数的不同方法,共轭梯度法 BFGS (变尺度法)L-BFGS (限制变尺度法) 就是其中一些更高级的优化算法,它们需要有一种方法来计算 J ( θ ) {J(\theta )} J(θ),以及需要一种方法计算导数项,然后使用比梯度下降更复杂的算法来最小化代价函数。
使用这其中任何一个算法,你通常不需要手动选择学习率 α \alpha α,所以对于这些算法的一种思路是,给出计算导数项和代价函数的方法,你可以认为算法有一个智能的内部循环,而且,事实上,他们确实有一个智能的内部循环,称为线性搜索(line search)算法,它可以自动尝试不同的学习速率 α \alpha α,并自动选择一个好的学习速率 α \alpha α,因此它甚至可以为每次迭代选择不同的学习速率,那么你就不需要自己选择。这些算法实际上在做更复杂的事情,而不仅仅是选择一个好的学习率,所以它们往往最终收敛得远远快于梯度下降。

多元分类学习

考虑 N N N个类别 C 1 , C 2 , ⋯   , C N {C_1},{C_2}, \cdots ,{C_N} C1,C2,,CN,多分类学习的基本思路是“拆解法”,即将多个分类任务拆为若干个二分类任务求解。
最经典的拆分策略有三种:“一对一”(One vs.One,简称OvO)、“一对其余”(One vs. Rest,简称OvR)和“多对多”(Many vs. Many,简称MvM).

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } , y ∈ { C 1 , C 2 , ⋯   , C N } D = \{ ({x_1},{y_1}),({x_2},{y_2}), \cdots ,({x_m},{y_m})\} ,\\ y \in \{ {C_1},{C_2}, \cdots ,{C_N}\} D={(x1,y1),(x2,y2),,(xm,ym)},y{C1,C2,,CN}
OvO将这 N N N个类别两两配对,从而产生 N ( N − 1 ) / 2 N(N-1)/2 N(N1)/2个二分类任务,例如OvO将为区分类别 C i {C_i} Ci C j {C_j} Cj;训练一个分类器,该分类器把D中的 C i {C_i} Ci类样例作为正例, C j {C_j} Cj类样例作为反例.在测试阶段,新样本将同时提交给所有分类器,于是我们将得到 N ( N − 1 ) / 2 N(N -1)/2 N(N1)/2个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果.如下图。
OvR则是每次将一个类的样例作为正例、所有其他类的样例作为反例来训练 N N N个分类器.在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果,如下图所示.若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
容易看出,OvR只需训练N个分类器,而OvO需训练 N ( N − 1 ) / 2 N(N - 1)/2 N(N1)/2个分类器,因此,OvO的存储开销和测试时间开销通常比OvR更大.但在训练时,OvR的每个分类器均使用全部训练样例,而OvO的每个分类器仅用到两个类的样例,因此,在类别很多时,OvO的训练时间开销通常比OvR更小.至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多.
.MvM是每次将若干个类作为正类,若干个其他类作为反类.显然,OvO和OvR是MvM的特例.MvM 的正、反类构造必须有特殊的设计,不能随意选取.比如最常用的MvM技术:“纠错输出码”(Error CorrectingOutput Codes,简称ECOC).

参考文献

周志华《机器学习》
吴恩达 机器学习

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值