0%

逻辑回归算法讲解 (算法 + 案例)

  1. 逻辑回归 (Logistic Regression)

GitHub 地址 (代码加数据)

1.1 逻辑回归与线性回归的关系

逻辑回归是用来做分类算法的,大家都熟悉线性回归,一般形式是 Y=aX+b,y 的取值范围是 [-∞, +∞],有这么多取值,怎么进行分类呢?不用担心,伟大的数学家已经为我们找到了一个方法。

首先我们先来看一个函数,这个函数叫做 Sigmoid 函数:

函数中 t 无论取什么值,其结果都在 [0,-1] 的区间内,回想一下,一个分类问题就有两种答案,一种是 “是”,一种是“否”,那 0 对应着“否”,1 对应着“是”,那又有人问了,你这不是[0,1] 的区间吗,怎么会只有 0 和 1 呢?这个问题问得好,我们假设分类的阈值是 0.5,那么超过 0.5 的归为 1 分类,低于 0.5 的归为 0 分类,阈值是可以自己设定的。

好了,接下来我们把 aX+b 带入 t 中就得到了我们的逻辑回归的一般模型方程:

结果 P 也可以理解为概率,换句话说概率大于 0.5 的属于 1 分类,概率小于 0.5 的属于 0 分类,这就达到了分类的目的。

1.2 损失函数

逻辑回归的损失函数跟其它的不同,先一睹尊容:

解释一下,当真实值为 1 分类时,用第一个方程来表示损失函数;当真实值为 0 分类时,用第二个方程来表示损失函数,为什么要加上 log 函数呢?可以试想一下,当真实样本为 1 是,但 h=0 概率,那么 log0=∞,这就对模型最大的惩罚力度;当 h=1 时,那么 log1=0,相当于没有惩罚,也就是没有损失,达到最优结果。所以数学家就想出了用 log 函数来表示损失函数,把上述两式合并起来就是如下函数,并加上正则化项:

最后按照梯度下降法一样,求解极小值点,得到想要的模型效果。

1.3 多分类问题 (one vs rest)

其实我们可以从二分类问题过度到多分类问题,思路步骤如下:

  1. 将类型 class1 看作正样本,其他类型全部看作负样本,然后我们就可以得到样本标记类型为该类型的概率 p1。

  2. 然后再将另外类型 class2 看作正样本,其他类型全部看作负样本,同理得到 p2。

  3. 以此循环,我们可以得到该待预测样本的标记类型分别为类型 class i 时的概率 pi,最后我们取 pi 中最大的那个概率对应的样本标记类型作为我们的待预测样本类型。

总之还是以二分类来依次划分,并求出概率结果。

1.4 逻辑回归 (LR) 的一些经验

  • 模型本身并没有好坏之分。

  • LR 能以概率的形式输出结果,而非只是 0,1 判定。

  • LR 的可解释性强,可控度高 (你要给老板讲的嘛…)。

  • 训练快,feature engineering 之后效果赞。

  • 因为结果是概率,可以做 ranking model。

1.5LR 的应用

  • CTR 预估 / 推荐系统的 learning to rank / 各种分类场景。

  • 某搜索引擎厂的广告 CTR 预估基线版是 LR。

  • 某电商搜索排序 / 广告 CTR 预估基线版是 LR。

  • 某电商的购物搭配推荐用了大量 LR。

  • 某现在一天广告赚 1000w + 的新闻 app 排序基线是 LR。

1.6Python 代码实现

GitHub 地址 (代码加数据)

寻觅互联网,少有机器学习通俗易懂之算法讲解、案例等,项目立于这一问题之上,整理一份基本算法讲解 + 案例于文档,供大家学习之。通俗易懂之文章亦不可以面概全,但凡有不正确或争议之处,望告知,自当不吝赐教! . . . .

欢迎添加微信交流!请备注 “机器学习”。