Machine Learning Series No.2 --Logistic Regression

前言

每次上吴恩达老师的机器学习课,总是能带给我一些不同的东西(恩,换句话说,也就是我之前都学的啥??)。这次终于开始写逻辑回归了,逻辑回归真的是一个非常了不起的算法,恩,学到后来你会发现,诶,怎么哪里都有它?
这里首先向强调的一点是,逻辑回归是一个线性分类器,用做分类的,而且是线性的,千万不要以为sigmoid函数是非线性的,它就是非线性的了。

看一个算法,照李航老师所说,你应该看三部分:模型、策略、算法。
其实看的挺累的,我每次都记不住,所以导致我学的真的有点凌乱。
最近在不断的完善不断的完善,我觉得在看一个算法之前,可以先想以下三个问题:

  1. 这个算法是干嘛的?分类的?回归的?聚类的?首先搞清楚这个算法的目的是什么。由此可得其原始数据的大致形式。
  2. 这个算法的求解方式是什么?如果是分类,那他的分类超平面如何定义?回归,它的学习策略是如何计算残差的?如果是聚类,样本点之间的距离如何计算?
  3. 这个算法如何学习?可能是解析解,可能是梯度下降等方法?

经过这三个部分你就能很好的了解,至少是清楚一个算法的结构了。


逻辑回归
  • 目的是什么
    恩,首先还是先要明确这个算法是干嘛的,再三强调,逻辑回归是用来做二分类的,是一个线性分类器。
    首先来看一下效果:

    逻辑回归效果
    逻辑回归效果

    这里不同颜色指的是不同类别,中间的线定义的是一个分离超平面,该线两边设置为不同的类别。当然,这里正确率很明显不是100%,但是没关系,我们这里主要是强调有一个分离超平面是用来分类的。

也就是说,我们的目的是为了得到这样的一个分离超平面,去对数据进行分类。

  • 求解方式

    求解方式是什么呢?也就是我们想要得到这个分离超平面,那要怎么做?

    一般说来,我们有一个sigmoid函数,我们认为将 x x 和参数w输入到该函数中,能得到一个该样本分类为1的概率。(实际上并不是随意认为的,有严格的数学推导,详情请见sigmoid函数推导。)


    hw(x)=P(y=1|x;w)=11+ewTx h w ( x ) = P ( y = 1 | x ; w ) = 1 1 + e − w T x

    P(y=1|x;w)>0.5 P ( y = 1 | x ; w ) > 0.5 时,我们就将它预测为类别1,否则预测为类别0。
    实际上,

    P(y=1|x;w)>0.511+ewTx>0.5wTx>0 P ( y = 1 | x ; w ) > 0.5 ⇒ 1 1 + e − w T x > 0.5 ⇒ w T x > 0

    所以最终我们可以得到,分离超平面的方程式其实就是

    wTx=0 w T x = 0

    所以我们的分离超平面就这么定义出来了,那么怎样求这个 w w 便是我们的算法部分了,也就这个算法是怎么学习的?

  • 算法如何学习?
    根据我们对参数进行估计的方法:极大似然估计法对参数w进行估计。
    首先定义极大似然函数:


    L(w)=P(y=1|x;w)yiP(y=0|x;w)1yi L ( w ) = P ( y = 1 | x ; w ) y i P ( y = 0 | x ; w ) 1 − y i

    令: π(x)=P(y=1|x;w) π ( x ) = P ( y = 1 | x ; w ) ,则 1π(x)=P(y=0|x;w) 1 − π ( x ) = P ( y = 0 | x ; w ) ,则有:

    L(w)=π(x)yi(1π(x))1yi L ( w ) = π ( x ) y i ( 1 − π ( x ) ) 1 − y i

    对极大似然函数取对数(极大似然法的一般步骤),同时将 π(x)=P(y=1|x;w)=11+ewTx π ( x ) = P ( y = 1 | x ; w ) = 1 1 + e − w T x 代入,可得:

    logL(w)=niyi(wxi)log(1+ewxi) log ⁡ L ( w ) = ∑ i n y i ( w x i ) − log ⁡ ( 1 + e w x i )

    最后对上述式子进行极大化,可以采用梯度上升或者牛顿方法,最终我们可以估计出 w w ,从而得到分离超平面。当然如下损失函数所示,便是直接加了负号求最小。

  • 感知器的区别
    这里我还是想写这一点,因为我本人在学习的时候也是非常的困惑,既然逻辑回归也是使得wTx>0的时候预测为1,否则预测为另一个类,这个和支持向量机又有什么区别呢?支持向量机不也是使得 wTx>0 w T x > 0 的时候预测为1,否则预测为-1。两者仿佛只是差在一个输入时标签的区别?
    其实两者的差别挺小的,主要在于损失函数不同,即对应错分样本惩罚力度不同,而且逻辑回归多了一个概率解释。可以参见博客,里面讲的挺详细的。
    感知器的损失函数为:


    L=y(wTx)w,xRn+1 L = − y ( w T x ) w , x ∈ R n + 1

    从公式中,我们可以看到,如果样本被正确分类,则 y(wTx)>0 y ( w T x ) > 0 ,是能够有效的减小损失的。若分类错误则增加损失。这里强调一点,感知器对任意一个分类错误样本,其惩罚力度都是一样的,因为其权值都是 w w
    而逻辑回归的损失函数是(我们前面推导的时候,w是以最大似然函数推导的,跟这里实质是一样的,可以自行推导):

    cost(π(x),y)=i=1myilog(π(x))(1yi)log(1π(x))

    至于为什么是这个损失函数,请参见博客
    在这里我们需要强调的是,对于任意分类错误样本,它对损失函数的贡献是不一样的。举个例子,如果有一个正样本,被错分,则其对损失函数的贡献为 log(π(x)) − log ⁡ ( π ( x ) ) (将y=1代入上式可得),可知,对于不同的样本其贡献的大小是不一样的,取决于 π(x) π ( x ) 的值。

    感知器、逻辑回归和支持向量机的区别
    三者都是线性分类器,而logistic和svm是由感知器发展改善而来的。区别在于三者的损失函数不同,后两者的损失函数的目的都是增加对分类影响较大的数据点的权重,SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。

上述摘自博客,写的挺好的。

啰嗦一点,因为离分离平面较远的点,其预测的准确度是越高的,也就是 π(x) π ( x ) 越接近于1,则其对应的损失其实是越小的。


sigmoid函数导出

涉及指数分布簇、广义线性模型。


指数分布簇:



广义线性模型假设:
  1. 在给定 x x 与 参数 θ θ 时,y|x服从以 η η 为变量的指数族的分布;
  2. 给定x时,我们的目标是来预测 Ty) T ( y ) 的值,即求 E(T(y)|x) E ( T ( y ) | x ) ,不过在很多时候, Ty)=y; T ( y ) = y ;
  3. 参数 ηθTx η = θ T x ; (为什么呢? 它就是这么设计的,广义线性模型哦)

而逻辑回归是一个二分类问题,其 y y 的分布服从一个伯努利分布,其中用ϕ来表示 P(y=1|x) P ( y = 1 | x ) 。即

P(y;ϕ)=ϕy(1ϕ)1y=eylogϕ+(1y)log(1ϕ)=eylogϕ1ϕ+log(1ϕ) P ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = e y log ⁡ ϕ + ( 1 − y ) log ⁡ ( 1 − ϕ ) = e y log ⁡ ϕ 1 − ϕ + log ⁡ ( 1 − ϕ )

从而服从指数分簇。其 η=logϕ1ϕ,T(y)=y η = log ⁡ ϕ 1 − ϕ , T ( y ) = y ,所以有 ϕ=11+eη ϕ = 1 1 + e − η
而在广义线性模型中, η=θTx η = θ T x ,所以有 ϕ=11+eθTx ϕ = 1 1 + e − θ T x

预测时:

E(T(y)|x))=E(y|x)=P(y=1|x)1+P(y=0|x)0=P(y=1|x)=ϕ E ( T ( y ) | x ) ) = E ( y | x ) = P ( y = 1 | x ) ∗ 1 + P ( y = 0 | x ) ∗ 0 = P ( y = 1 | x ) = ϕ

最后一步是因为在伯努利分布中,期望为 ϕ ϕ
由此,我们证明了sigmoid函数可以用来估计 P(y=1|x) P ( y = 1 | x )


softmax分类器

sigmoid函数导出是一个softmax函数导出的简化版,softmax回归是逻辑回归的多分类的推广,详情请见softmax 和 logistic 分类器关系


但是在这个博客中,有一个点需要大家注意,在最后得到

ηi=logϕiϕk η i = log ⁡ ϕ i ϕ k
时,两边取指数可得:
eηi=ϕiϕk e η i = ϕ i ϕ k
两边同时对1~k-1求和,即:
ϕkk1j=1eηi=k1j=1ϕi=1ϕk ϕ k ∑ j = 1 k − 1 e η i = ∑ j = 1 k − 1 ϕ i = 1 − ϕ k

可得:
ϕk=11+k1j=1eηi ϕ k = 1 1 + ∑ j = 1 k − 1 e η i

代入
eηi=ϕiϕk e η i = ϕ i ϕ k

可得

ϕi=eηi1+k1j=1eηi ϕ i = e η i 1 + ∑ j = 1 k − 1 e η i

原来的形式为:


ϕk=1kj=1eηi ϕ k = 1 ∑ j = 1 k e η i


ϕi=eηikj=1eηi ϕ i = e η i ∑ j = 1 k e η i

注意求和角标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值