机器学习系列---用于分类的回归(逻辑回归)

披着回归的外衣做着分类的工作–逻辑回归

1.背景


机器学习要解决的问题大致分为两类: 预测 or 分类.
预测问题常用回归模型,分类问题可以用决策树等模型。
我们今天要讲的逻辑回归虽然披着回归的外衣,但其实做着分类的工作


2.逻辑回归到底是什么?

2.1来源和思想

    对于一个二分类问题,属性变量为 x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm,分类标签为 y ∈ y∈ y{0,1}。
    很自然的,我们会忍不住建立 y y y 和 属性值 x 1 , x 2 , . . . , x m x_1,x_2,...,x_m x1,x2,...,xm 之间的回归关系,试图对 y y y进行预测 → \to z : = y ^ z:=\hat{y} z:=y^= w T x + b w^Tx+b wTx+b , 但是接着我们就会发现: y ^ \hat{y} y^的值是实数,但是我们要预测的真正的 y y y是个{0,1}变量.
    经过人们机智的探索,通过回归我们既然给不出非0即1的预测值,那我们就不给非0即1的预测值了,我们转而给一个概率~~~
    为了将预测值变换成分类为1的概率,此时, S i g m o i d Sigmoid Sigmoid函数就登场了:
在这里插入图片描述

解释:
     S i g m o i d Sigmoid Sigmoid函数其实是做了这么一件事:首先我们照常进行回归预测 z = w T x + b z=w^Tx+b z=wTx+b, 然后将 z z z放进函数 g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1中进行压缩处理,得出的值 g ( z ) g(z) g(z)就是一个在0 → \to 1之间变化的值了,并且可以看到 z z z越大, g ( z ) g(z) g(z)越接近1 ; 相应的有 z z z越小 , g ( z ) g(z) g(z)越接近于0, ( 1 − g ( z ) ) (1-g(z)) (1g(z))也就越接近于1!

    细心的你们肯定会发现:预测出来的 g ( z ) g(z) g(z)接近于1 是否 能代表分类为1的概率越大呢?
    其实可以这么看: z z z的值越大,代表属性空间中的点离分类面越远,就越可能属于类别1。(你要问能不能越属于类别0的话,其实是没啥差别的,反正就2类,总能定义成离分类面某一侧方向越远,越为类别1)
    因此,先做回归再将预测值放进 S i g m o i d Sigmoid Sigmoid函数进行压缩变换,得出来的值可以看做是变量分类为1的概率大小!

    以上就是逻辑回归的基本来源和思想。

总结:逻辑回归就是一个将回归预测值代入Sigmoid函数变换成分类为某一类别的概率的回归分类方法。得出的结果不是非0即1的类别值,而是分为某一类别的概率值。

2.2 逻辑回归怎么求解呢?

求解历程先览:类比线性回归,先用最小二乘,后发现代价函数不是凸函数,不好优化,转而构造了新的代价函数,通过梯度下降法最小化新的代价函数便可获得结果。

    模仿线性回归,采用最小二乘的思想,用误差平方和做代价函数:

J ( w ) = ∑ i 1 2 ( g ( z i ) − y i ) 2 J(w)=\sum_{i}{\frac{1}{2}(g(z_i)-y_i)^2} J(w)=i21(g(zi)yi)2
    按照正常思维,接下来我们通常会求导获取最小值,但是会发现该函数不是一个凸函数,会有不止一个极值点,不容易做最优化计算

    这也就意味着我们要想办法设计新的代价函数,按照前面我们讨论的结果(预测出来的 g ( z ) g(z) g(z)越接近于1 ,越能代表分类为1的概率越大),我们可以设:
P ( y = 1 ∣ X , W ) = g ( z ) P(y=1|X,W)=g(z) P(y=1X,W)=g(z)
其中 y y y 是样本X的类别, P ( y = 1 ∣ X , W ) P(y=1|X,W) P(y=1X,W)指的是在给定属性值为 X X X时样本类别为1的概率,是一个预测值。
进而有:
P ( y = 0 ∣ X , W ) = 1 − g ( z ) P(y=0|X,W)=1-g(z) P(y=0X,W)=1g(z)

    用一个小技巧,我们可以将上面两个式子结合成一个式子:
P ( y ∣ X , W ) = g ( z ) y ( 1 − g ( z ) ) 1 − y , y = 0 或 1 P(y|X,W)=g(z)^y(1-g(z))^{1-y}, y=0或1 P(yX,W)=g(z)y(1g(z))1y,y=01
解释: y = 1 y=1 y=1的概率就是 g ( z ) ( 1 − g ( z ) ) 0 = g ( z ) g(z)(1-g(z))^{0}=g(z) g(z)(1g(z))0=g(z) .

    假设我们获得了一个样本,联合概率 ∏ P ( y i ∣ X i , W ) \prod P(y_i|X_i,W) P(yiXi,W)越大,说明模型的学习结果与真实情况越接近【可以这么理解:假设对于第 i i i个样本点,已知类别为 y i = 1 y_i=1 yi=1,对应的联合概率中的第 i i i项为 P ( y i = 1 ∣ X i , W ) P(y_i=1|X_i,W) P(yi=1Xi,W),也就是说联合概率表达式中的 y i y_i yi是样本的真实分类,概率是该真实类别的预测值。我们就看一下当前模型预测出真实类别 y i = 1 y_i=1 yi=1的概率。很显然,预测出真实类别的概率越大,模型效果越好!】;联合概率越小,表明模型的学习结果与真实情况越背离。
    显然,我们下一步的目的就是选择参数 W W W让联合概率最大。


求解:

  1. 写出最大似然函数,取对数化乘为加
    L ( W ) = ∑ i = 1 n l n P ( y i ∣ X i ; W ) L(W)=\sum_{i=1}^n{ln P(y_i|X_i;W)} L(W)=i=1nlnP(yiXi;W)               = ∑ i = 1 n l n ( g ( z i ) y i ( 1 − g ( z i ) 1 − y i ) )        =\sum_{i=1}^n{ln(g(z_i)^{y_i}(1-g(z_i)^{1-y_i}))}        =i=1nln(g(zi)yi(1g(zi)1yi))                       = ∑ i = 1 n [ y i l n g ( z i ) + ( 1 − y i ) l n ( 1 − g ( z i ) ) ]            =\sum_{i=1}^n{[y_ilng(z_i)+(1-y_i)ln(1-g(z_i))]}            =i=1n[yilng(zi)+(1yi)ln(1g(zi))]

2.最大似然函数取负值获得等价的代价函数:
J ( W ) = − ∑ i = 1 n [ y i l n g ( z i ) + ( 1 − y i ) l n ( 1 − g ( z i ) ) ] J(W)= -\sum_{i=1}^n{[y_ilng(z_i)+(1-y_i)ln(1-g(z_i))]} J(W)=i=1n[yilng(zi)+(1yi)ln(1g(zi))]
为了直观的理解,下面给出 J ( W ) J(W) J(W)的图像:
在这里插入图片描述
    总结: 代价函数越小预测结果越接近于真实.


3.梯度下降求代价函数最小值:
通过 J ( W ) J(W) J(W)的图像可以发现 J ( W ) J(W) J(W)是一个非线性的S型函数,无法通过求偏导来求最小值,但是我们可以通过梯度下降法求解:

首先应该有一个初始的权重 W 0 W_0 W0,然后需要按照梯度下降最快的方向进行更新:
w j : = w j − η α J ( W ) α w j w_{j} :=w_j-\eta \frac{\alpha J(W)}{\alpha w_j} wj:=wjηαwjαJ(W)

其中 α J ( W ) α w j = − J ( W ) = − ∑ i = 1 n [ y i 1 g ( z i ) + ( 1 − y i ) 1 ( 1 − g ( z i ) ) ] α g ( z i ) α w j = − ∑ i = 1 n [ y i − g ( z i ) ] x i j \frac{\alpha J(W)}{\alpha w_j}=-J(W)= -\sum_{i=1}^n{[y_i \frac{1}{g(z_i)}+(1-y_i)\frac{1}{(1-g(z_i))}]\frac{\alpha g(z_i)}{\alpha w_j}}=-\sum_{i=1}^n{[y_i-g(z_i)]x_{ij}} αwjαJ(W)=J(W)=i=1n[yig(zi)1+(1yi)(1g(zi))1]αwjαg(zi)=i=1n[yig(zi)]xij

注意: α g ( z i ) α w j = α g ( z i ) α z i ∗ α z i α w j , 其 中 g ( z ) ′ = ( 1 1 + e − z ) ′ = g ( z ) [ 1 − g ( z ) ] \frac {\alpha g(z_i)}{\alpha w_j}=\frac {\alpha g(z_i)}{\alpha z_i}*\frac {\alpha z_i}{\alpha w_j},其中g(z)'=(\frac {1}{1+e^{-z}})'=g(z)[1-g(z)] αwjαg(zi)=αziαg(zi)αwjαzi,g(z)=(1+ez1)=g(z)[1g(z)]

∗ ∗ 最 终 : w j : = w j − η ∗ ( − ∑ i n [ y i − g ( z i ) ] x i j ) = w j + η ∗ ∑ i n [ y i − g ( z i ) ] x i j **最终: w_j:=w_j- \eta *(-\sum_{i}^n{[y_i-g(z_i)]x_{ij})}=w_j+ \eta *\sum_{i}^n{[y_i-g(z_i)]x_{ij}} :wj:=wjη(in[yig(zi)]xij)=wj+ηin[yig(zi)]xij

补充:权重向量w的初始化值一般选择接近于0的随机值,如果初始的 w j w_j wj很大的话,会使初始的 z = w T x + b z=w^Tx+b z=wTx+b变得很大,也就会使 g ( z ) g(z) g(z)变得很接近于1,导数会很接近于0,从而会使更新迭代变得很慢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值