逻辑回归
1、逻辑回归与线性回归的联系与区别
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
答案是也可以,但是效果不好,见下图:
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
y ^ = { 1 , f ( x ) > 0.5 0 , f ( x ) < 0.5 \hat y = \begin{cases} 1,& f(x)>0.5\\ 0,& f(x)<0.5 \end{cases} y^={
1,0,f(x)>0.5f(x)<0.5
可以看到,在途中,年龄的区分点约为19岁。
但当数据点不平衡时,很容易影响到阈值,见以下图:
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
可是这符合实际情况吗?实际情况是60岁的老人和80岁的老人都不会购买玩具,增加几位80岁的老人,并不会影响20岁以下人群购买玩具的概率。但因为拟合曲线原本的值域为 ( − ∞ ∞ ) (-\infty \ \infty) (−∞ ∞)而转换后的值域为[0,1],阈值对变量偏移很敏感。
2、逻辑回归的原理
因此理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为 [ 0 , 1 ] [0,1] [0,1],这样的设定比线性回归合理很多。
常用的替代函数为Sigmoid函数,即:
h ( z ) = 1 1 + e − z h(z) = \frac{1}{1+e^{-z}} h(z)=1+e−z1
其中, z = θ T x z = \theta^T x z=θTx
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
h ( z ) = { 0 , z < 0 0.5 , z = 0 1 , z > 0 h(z) = \left\{ \begin{aligned} 0,& & z<0 \\ 0.5, & & z=0 \\ 1, & & z>0 \end{aligned} \right. h(z)=⎩⎪⎨⎪⎧0,0.5,1,z<0z=0z>0
若Z大于0,则判断为正例;若小于0,判断为反例;若等于0,可任意判别。由于Sigmoid函数单调且可导,函数在(0,1)之间程Z字型,可以很好的模拟二分类情况,因此很适合我们要解决的问题。
接下来我们来推导逻辑回归函数的优化
3、逻辑回归损失函数推导及优化
P ( y = 1 ∣ x ; θ ) = h θ ( x ) P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=1|x;\theta) = h_\theta (x) \\ P(y=0|x;\theta) = 1-h_\theta (x) P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
可以写作一般公式,
P ( y ∣ x ; θ ) = h ( x ) y ( 1 − h ( x ) ) ( 1 − y ) P(y|x;\theta)= h(x)^y (1-h(x))^{(1-y)} P(y∣x;θ)=h(x)y(1−h(x))(1−y)
极大似然函数为,
L ( θ ) = ∏ i = 1 m h θ ( x ( i ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ( 1 − y ( i ) ) L(\theta) = \prod^{m}_{i=1}h_\theta (x^{(i)})^{y^{(i)}} (1-h_\theta (x^{(i)})^{(1-y^{(i)})} L(θ)=i=1∏mhθ(x(i))y(i)(1−hθ(x(i))(1−y(i))
对数极大似然函数为,
l ( θ ) = l o g L ( θ ) =