logistic regression教程3
在线性拟合的基础上,我们实现logistic regression。
如前所述,样本集是
{x1,y1},{x2,y2},...,{xn,yn}[1]
其中,xi=[1,xi,1,xi,2,xi,3,...,xi,k]T,且yi∈(0,1)。注意,这里对yi有值上的要求,必须如此,如果值不再这个区间,要以归一化的方式调整到这个区间。对于分类问题,则yi的取值或者是0,或者是1,也就是yi∈{0,1}。
当然,从严格的意义上说,logistic regression拟合后,yi的值只能无限地逼近0和1,而不能真正达到0和1,但在处理实际问题上,可以设定成形如 ifyi>0.5thenyi=1和ifyi<=0.5thenyi=0解决。
Logistic regression的拟合形式如下:
yi=f(zi)[2]
zi=Wxi[3]
其中,f(z)=11+e−z[4],也就是Logistic函数。
根据公式[2]和公式[3],则:
yi=f(Wxi)[4]
那么,如果用公式[4]拟合xi和yi的关系,需要求解W,使得在公式[1]上误差最小。对应的损失函数就是
Loss=12∑i=1n(yi−f(Wxi))2[5]
跟前面的一样,我们用梯度下降法求解。
所以,要对公式[5]求wj的一阶偏导,于是有
∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(Wxi)∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj[6]
注意,问题来了,公式[6]的最后一步,实际上是将Wxi视为一个变量zi,分别求导。这一步是在高等数学有详细描述了,不解释。
公式[6]中的∂f(zi)∂zi等价于f′(z),因为只有一个自变量z。根据公式[4],可以求出
f′(z)=ez(ez+1)2[7]
对公式[7]可以做一次变形,以方便求解:
根据公式[4],可以知道
ez=f(z)1−f(z)[8]
将公式[8]代入到公式[7],就可以得到
f′(z)=f(z)×(1−f(z))[9]
也就是说,我们可以根据f(z)得到f′(z),而且计算量很小。
把公式[9]代入公式[6],就得到
∂Loss∂wj=∑i=1n(yi−f(Wxi))×(−1)×∂f(zi)∂zi×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(zi)×(1−f(zi))×∂zi∂wj=∑i=1n(yi−f(Wxi))×(−1)×f(Wxi)×(1−f(Wxi))×∂(Wxi)∂wj=∑i=1n(yi−f(W