逻辑回归(LR)

LR

1. LR的基本假设

  • 假设数据服从伯努利分布。
  • 假设样本为正的概率是\frac{e^{w \cdot x + b}}{1+e^{w \cdot x + b}}

2. LR的损失函数

  • LR的损失函数是它的极大似然函数。
  • 损失函数一般有四种,平方损失函数,对数损失函数,HingeLoss0-1损失函数,绝对值损失函数。
  • 为什么要用这个损失函数
    • 将极大似然函数取对数以后等同于对数损失函数。在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的。由梯度更新公式可以看出梯度的更新速度只和x, y相关。和sigmod函数本身的梯度是无关的。这样更新的速度是可以自始至终都比较的稳定。
  • 为什么不选平方损失函数
    • 如果使用平方损失函数,梯度更新的速度和sigmod函数本身的梯度是很相关的。
    • sigmod函数在它在定义域内的梯度都不大于0.25。这样训练会非常的慢。

3. LR的求解方法

一般通过对该函数进行梯度下降来不断逼近最优解。

  • 批梯度下降:会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,每个参数的更新都会很慢。
  • 随机梯度下降:每次使用一个样本点更新参数。
  • 小批量梯度下降:结合了sgd和batch gd的优点,每次更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果。

4. LR训练相关问题

4.1. LR在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响

  • 如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。
  • 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。
  • 如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的值正负相消了。

4.2. 为什么在训练的过程当中将高度相关的特征去掉

  • 去掉高度相关的特征会让模型的可解释性更好可以大大提高训练的速度。
    • 如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度。
    • 其次是特征多了,本身就会增大训练的时间。

5. LR的优缺点

5.1. 优点

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

5.2. 缺点

  • 准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布。
  • 很难处理数据不平衡的问题。举个例子:如果我们对于一个正负样本非常不平衡的问题比如正负样本比 10000:1.我们把所有样本都预测为正也能使损失函数的值比较小。但是作为一个分类器,它对正负样本的区分能力不会很好。
  • 处理非线性数据较麻烦。逻辑回归在不引入其他方法的情况下,只能处理线性可分的数据,或者进一步说,处理二分类的问题 。
  • 逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

6. LR的推导

  • 参数
    w = (w^{(1)}, w^{(2)}, \cdots , w^{(n)}, b)

  • 特征
    x = (x^{(1)}, x^{(2)}, \cdots , x^{(n)}, 1)

  • 假设概率
    P(Y=1|x) = \frac{e^{w \cdot x}}{1 +e^{ w \cdot x}} = g(w \cdot x) , P(Y=1|x) = 1 - g(w \cdot x)

  • 似然函数
    \prod_{i=1}^{N} [g(w \cdot x_i)]^{y_i} [1-g(w \cdot x_i)]^{1-y_i}

  • 对数似然
    L(w) = \sum_{i=1}^{N} [y_i \ln g(w \cdot x_i) + (1-y_i) \ln (1-g(w \cdot x_i))]

  • sigmoid求导
    g(z) = \frac{e^z}{1+e^z}
    \frac{\mathrm{d} g}{\mathrm{d} z} = \frac{\mathrm{d} }{\mathrm{d} z}(\frac{1}{1+e^{-z}})=\frac{e^{-z}}{(1+e^{-z})^2}=\frac{1}{1+e^{-z}}(1-\frac{1}{1+e^{-z}})=g(z)(1-g(z))

  • 似然函数对w求导
    \frac{\partial L}{\partial w^{(j)}} = \sum_{i=1}^{N}{(y_I \frac{1}{g(w \cdot x_i)} - (1-y_i)\frac{1}{1-g(w \cdot x_i)}) g(w \cdot x_i)(1-g(w \cdot x_i)) \frac{\partial }{\partial w^{(j)}} w \cdot x_i}
    = \sum_{i=1}^{N} {(y_i(1-g(w \cdot x_i)) - (1-y_i)g(w \cdot x_i)) \cdot x_i^{(j)}}
    = \sum_{i=1}^{N}{(y_i-g(w \cdot x_i)) \cdot x_i^{(j)}}

  • 参数更新
    w^{(j)} := w^{(j)} + \alpha \frac{1}{N}(y_i - g(w \cdot x_i)) \cdot x_i^{(j)}
    w := w + \alpha \frac{1}{N}(y_i - g(w \cdot x_i)) \cdot x_i

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容