逻辑回归的要点总结

1.简介

    逻辑回归作为机器学习中,大家最耳熟能详一种算法。在工业界当中也有非常广泛的应用。主要有几个原因:

  • 逻辑回归的形式非常的简单,如果特征工程做的非常好,效果会比较的不错。最为重要的是特征工程这件事情可以大家并行开发,可以大大加快开发的速度。
  • 逻辑回归的训练速度会比较块,并且逻辑回归的分布式优化sgd发展比较成熟,训练的速度可以通过堆机器进一步提高,这样我们可以在短时间内迭代好几个版本的模型。
  • 分类的时候,计算量仅仅只和特征的数目相关,如果特征的数目不多,计算的速度是非常的块。
  • 因为只需要存储各个维度的特征值,对资源尤其是内存的占用会比较小。
  • 从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值比较高,那么这个特征最后对结果的影响会比较大,整体来说是模型的可解释性非常的好。
  • 逻辑回归输出的是每个样本的概率分数,我们可以很方便的对这些概率分数进行cutoff,也就是划分阈值(大于某个阈值的是一类,小于某个阈值的是一类),很方便的得到最后的分类结果。

      但是逻辑回归本身也有许多的缺点:

  • 因为逻辑回归的形式非常的简单,(非常类似线性模型),一般对数据的真实分布拟合的不会很好(用简单的线性模型很难去拟合一个sin(x)),造成的后果就是模型整体的准确率不会特别高。
  • 逻辑回归的训练速度和计算速度都和特征的个数有很大的关系,如果特征的维度数过大的话,训练和分类的速度会受到很大的影响,当然这个对很多传统的机器学习算法都适用。
  • 在不引入其他技巧的情况下,逻辑回归只能处理线性可分的数据,或者进一步说,处理二分类的问题 ,在引入了softmax以后可以处理多分类的问题。
  • 因为无法处理非线性的数据,需要对特征进行变化,特征工程会比较复杂。
  • 逻辑回归无法处理数据不平衡的问题,考虑到逻辑回归的交叉墒损失函数,如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。

2.正式介绍

     如何凸显你是一个对逻辑回归已经非常了解的人呢。那就是用一句话概括它!逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

     这里面其实说了4个点,1:逻辑回归的假设,2:逻辑回归的损失函数,3:逻辑回归的求解方法,4:逻辑回归的目的。

  • 逻辑回归的基本假设
    • 任何的模型都是有自己的假设,在这个假设下模型才是适用的。逻辑回归的第一个基本假设是假设数据服从伯努利分布。伯努利分布有一个简单的例子是抛硬币,抛中为正面的概率是$p$,抛中为负面的概率是$1-p$.在逻辑回归这个模型里面是假设 $h_\theta\left(x\right )$ 为样本为正的概率,$1- h_\theta\left(x\right )$为样本为负的概率。那么整个模型可以描述为$$h_\theta\left(x;\theta \right )=p$$
    • 逻辑回归的第二个假设是假设样本为正的概率是 $$p=\frac{1}{1+e^{-\theta^{T} x}}$$
    • 所以逻辑回归的最终形式 $$h_\theta\left(x;\theta \right )=\frac{1}{1+e^{-\theta^{T} x}}$$
  • 逻辑回归的损失函数
    • 逻辑回归的损失函数是它的极大似然函数$$L_\theta\left(x\right )= \prod _{i=1}^{m}h_\theta(x;\theta ) $$
  • 逻辑回归的求解方法
    • 由于该极大似然函数无法直接求解,我们一般通过对该函数进行梯度下降来不断逼急最优解。
  • 逻辑回归的目的
    • 该函数的目的便是将数据二分类,并且尽可能正确的将数据二分类。

3.对逻辑回归的一些思考

    逻辑回归虽然从形式上非常的简单,但是其内涵是非常的丰富。有很多问题是可以进行思考的

  • 逻辑回归的损失函数为什么要使用极大似然函数作为损失函数?
    • 损失函数一般有四种,平方损失函数,对数损失函数,0-1损失函数,绝对值损失函数。将极大似然函数取对数以后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的。至于原因大家可以求出这个式子的梯度更新$$\theta _j=\theta _j-\left ( y^{i} -h_\theta (x^{i};\theta ) \right )\ast x^{i}_j$$这个式子的更新速度只和$x^{i}_j$,$y^{i} $相关。和simod函数本身的梯度是无关的。这样更新的速度是可以自始至终都比较的稳定。
    • 这就涉及到我们为什么不用平方损失函数了,其中一个原因是如果你使用平方损失函数,你会发现梯度更新的速度和sigmod函数本身的梯度是很相关的。sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。
  • 逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?
    • 先说结论,如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。
    • 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
    • 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的正负相消了。
  • 但是为什么我们还是在训练的过程当中将高度相关的特征去掉?
    • 去掉高度相关的特征会让模型的可解释性更好
    • 可以大大提高训练的速度。如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。其次是特征多了,本身就会增大训练的时间。

4.总结

    在这里我们总结了逻辑回归当中的一些要点,但是很多还没有涉及到,比如这背后若影若显的广义线性模型,如何从逻辑回归推广到softmax。我们会在以后慢慢道来。

 

文章来自:http://www.cnblogs.com/ModifyRong/p/7736990.html
© 2021 jiaocheng.bubufx.com  联系我们
ICP备案:鲁ICP备09046678号-3