逻辑回归(Logistic Regression)
这是一个软性二分类问题:关心的是目标函数的值(分布在[0,1]之间),表示正类的概率是多少。值越接近于1,表示正类的可能性越大。
目标函数:
f(x)=P(+1|x)∈[0,1]⇔P(y|x)={f(x),fory=+11−f(x),fory=−1
理想中的数据是分布在[0,1]之间的具体值,但是实际中的数据只可能是0或1,可以把实际中的数据看成是理想数据加上了噪声的影响。
其hypothesis:
h(x)=11+e−wTx
目标:求出这个预测函数,使它接近目标函数
f((x)
似然性:若找到一个hypothesis h(x)很接近target function,也就是说,在所有的hypothesis中找到一个h(x)与f(x)最接近,能产生同样的数据集D,则称这个h(x)为最大似然性。
假设数据集
D={(x1,∘),(x2,×),…,(xN,×)}
probability that f generates D:
P(x1)f(x1)×P(x2)(1−f(x2))×⋯×P(XN)(1−f(XN))
likelihood that h generates D:
P(x1)f(x1)×P(x2)(1−f(x2))×⋯×P(XN)(1−f(XN))
(若
h≈f
,则likelihood h的公式如上所示)
logistic function:
h(x)=θ(wTx)
满足一个性质:
1−h(x)=h(−x)
.
那么,likelihood h的公式为:
likelihood(h)=P(x1)h(+x1)×P(x2)h(−x2)×…P(xN)h(−xN)
因为
P(xn)
对所有的h来说都是一样的,所以可以忽略。则ikelihood正比于所有的
h(ynxn)
的乘积。
目标是使乘积最大化。
maxhlikelihood(h)∝∏n=1Nh(ynxn)
将w带入:
maxwlikelihood(w)∝∏n=1Nθ(ynwTxn)
为了简化计算,引入
ln
操作:
maxw∑n=1Nlnθ(ynwTxn)
将maximize问题转化为minimize问题,并引入平均数
1N
:
minw1N∑n=1N−lnθ(ynwTxn)
将logistic function
θ(s)
的表达式带入,得:
minw1N∑n=1Nln(1+exp(−ynwTxn))
⟹minw1Nerr(w,xn,yn)
由此得到了logistic function的err function,称之为
cross-entropy error 交叉信息熵:
err(w,x,y)=ln(1+exp(−ywTx))
则接下来的
目标是:找到合适的向量w,使err(即训练误差
Ein
)最小。
Ein
的曲线是凸函数,那么只要计算出
∇Ein=0
时的w,即为最优解。
∇Ein=1N∑n=1Nθ(−ynwTxn)(−ynxn)=0
其中
θ(−ynwTxn)
可看成时
−ynxn
的线性加权。
要使线性加权和为0,有两种情况:
第一种:若所有的权重
θ(−ynwTxn)=0
,则
∇Ein=0
因为
θ(−ynwTxn)
为sigmoid function,只要
−ynwTxn<<0
,即
ynwTxn>>0
,就可使结果为0。而
ynwTxn>>0
表示对所有的点
yn
和
wTxn
都是同号的,这表示数据集必须是线性可分的才能成立。
但是,保证线性可分不现实,更多的情况是线性不可分的。
第二种:非线性可分,只能通过使加权和为0来求解w。这种情况只能使用迭代来逐步求解。
将
Ein
曲线比作一个山谷,则使
Ein
最小,即可比作下山的过程。整个下山过程受两个因素影响:下山的单位方向
ν
和下山的补偿
η
.
利用微分思想和线性近似,根据泰勒一节展开:
Ein(wt+ην)≈Ein(wt)+ηνT∇Ein(wt)
要让
Ein(wt+ην)<Ein(wt)
,则
ν
方向要与
Ein
方向相反,
令下降方向
ν
为:
ν=−∇Ein(wt)||∇Ein(wt)||
ν
是单位向量,
ν
每次都是沿着梯度的反方向走,这种方法称为
梯度下降*(gradient descent)
那么:
wt+1←wt−η∇Ein(wt)||∇Ein(wt)||
令
η′=η||∇Ein(wt)||
,则:
wt+1←wt−η′∇Ein(wt)
根据该公式不断循环,最终即可求得w
总结一下基于梯度下降的logistic regression算法步骤:
⋅
初始化w
⋅
计算t梯度
∇Ein
⋅
迭代
wt+1←wt−η′∇Ein(wt)
⋅
当满足
∇Ein(wt+1)=0
或达到迭代次数时,迭代结束。
接下来从另一个角度来说逻辑回归。
这种方法也是梯度下降,但是使用的cost function与上面的
Ein
不一样。
令
cost(h(w),y)={−log(hw(x)),−log(1−hw(x)),y=1y=0
⟹
cost(hw(x),y)=−ylog(hw(x)))−(1−y)log(1−hw(x))
则整个数据集的cost function为:
J(w)=1N∑n=1Ncost(hw(xn),yn)
(也可用最大似然法推出来)
目的:求出最小的
J(w)
使用梯度下降法:
repeat{
wi=wi−α∂J(w)∂wi
}
其中:
∂J(w)∂wi=1N∑Nn=1(hw(xn)−yn)xnj
,
wj
表示第j个特征的权重。
具体推导就不推了。