您的位置:首页 > 其它

学习笔记:逻辑斯蒂回归(logistic regression)

2013-12-28 13:17 453 查看
什么是逻辑斯蒂回归,参见维基百科的解释点击打开链接

后面的参考博客已经给逻辑斯蒂回归做了很多基础东西的讲解(越是基础的东西越难讲清楚)。在这里我对逻辑斯蒂回归记录一点自己的认识。

两个问题:

Q1,为什么选用logistic function?
Q2,logistic regression模型参数怎么找?


[b]Q1,为什么选用logistic function?
[/b]
参考博客4中给出的一个解释,在此进行罗列。
    一个线性模型的输出值 y 越大,这个事件 P(Y=1|x) 发生的概率就越大。 另一方面,我们可以用事件的几率(odds)来表示事件发生与不发生的比值,假设发生的概率是
p ,那么发生的几率(odds)是 p/(1-p) , odds 的值域是 0 到正无穷,几率越大,发生的可能性越大。将我们的直觉与几率联系起来的就是下面这个(log odds)或者是 logit 函数 

                                   


由上述函数可以可以得到逻辑斯蒂回归模型:
                                     



                                     


Q2,logistic regression[b]模型参数怎么找?[/b]
         

 
  是样本,每个样本是由一组样本特征表示。

         

 
是参数组,每个参数组由对应特征的参数组成。

       logistic regression建模时候无非就是找到一组非常合适的参数

。这组参数按照什么样的标准去找? 参数

变化导致什么在变? 我觉得这两个问题弄清楚,那么对logistic regression也就有了一个直观的认识。
       简单起见,stanford的Andrew的课程中,从cost function出发去分析。为什么选用这个cost function。课程里面讲解是因为有牛人证明过他是凸的,他是有全局最优解的,我们可以使用梯度下降,牛顿法等去寻找这参数组

。当然也可能存在其他的cost function,按照其他的标准去寻找。
在coursera中:

        hypothesis是:
        


[ 这里出来的数值表示x被标记为1(正例)的概率 ]
     
单个样本cost function是:
        


 上面两个合起来写就是:



        总体样本的cost function是:
        



**********************************************************************************************************************************************************
《统计学习方法》(李航 著)
逻辑斯蒂回归模型,概率分布为:
                       


                       


再用极大似然估计法估计模型参数的时候,似然函数为:
                       


对数似然函数
                      


到此,发现上述总体样本的cost function和这个对数似然函数似乎是一个东西。

**********************************************************************************************************************************************************

       我们的目标就是去寻找一组参数组

;,最小化上述的总体样本的cost即

 的数值。cost function是什么样的?我们将单个cost function拆开来看,如下图
 



图1,logistic regression对于单个样本的cost function(平滑的那条线,不是那边折线)
*图片来自coursera中Andrew Ng讲授的Machine Learning的课件



图2,经过参数组w映射后的logit函数。
*图片来自coursera中Andrew Ng讲授的Machine Learning的课件

       我们会发现对于单个样本

, 他进过映射后(也就是

)成为

进入另一个坐标系(图1中画的那个坐标系)。我们看到对于

,在我们的寻找标准(也就是cost function)中,我们是希望这个训练样本

,如果它是正例(标记为1的样本,对应于图1中左边的坐标系),我们希望他进过映射后的

能够很大,以至于cost很小,接近于0;如果他是负例(标记为0的样本,对应于图1中右边的坐标系),我们希望它经过映射后的

能够很小,以至于cost很小,接近于0。单看某一个样本,调整参数组

 ,它自己的cost可以很小。但是我们是希望总体的cost即

(注意

是对所有样本的cost求和)最小。
       对于某一个样本

,变化参数组

,它自身的cost可能变小很多,但是对于其他的样本,他们的cost也同时在变化。也就是说对于单个样本最好的参数组

,不一定是对于所有样本最好的参数组

。我们调整参数组

,就是希望样本映射后的

,在图2中正例尽量往右侧靠(它的p就非常接近1),负例尽量往左侧靠(它的p非常接近0)。[在图2中正例尽量往左侧靠(它的p就非常接近1),负例尽量往右侧靠(它的p非常接近0)。
  感谢网友指出
]具体做法,就是选择一组参数

,然后观察样本映射后的分布。然后按照最小化cost的标准去调整参数组

,使用调整后的

去映射样本,然后继续观察样本映射后的分布,继续调整下去.....
        
       注意,当某一组参数

;,使得样本的判别全部正确(正例样本都分类为1,负例样本都分类为0
),此时的

也不一定的最优的。因为全部全别正确,只是说明映射后在图2中正例全部在右侧,负例全部在左侧。但此时可能不是往两端靠近。切记,我们找到的参数组

,是使得样本映射后的

总体往两端靠的最远。
 
实际使用时候需要注意:

1.样本的特征需要进行feature scaling

2.为了减轻过拟合带来的影响,需要对模型进行regularization。通常是总体样本的cost function加上一个小尾巴



   

参考博客:

1. http://hi.baidu.com/hehehehello/item/40025c33d7d9b7b9633aff87

2. http://52opencourse.com/125/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E5%85%AD%E8%AF%BE-%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92-logistic-regression

3. http://blog.csdn.net/abcjennifer/article/details/7716281

4. http://www.cnblogs.com/daniel-D/archive/2013/05/30/3109276.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  machine learning
相关文章推荐