Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

1.6. 逻辑回归理论(基础)

1.6.1. 如何求解分类问题?

举个简单的例子:根据余额,判断小明是否会去看电影。

例子

从这幅图中我们可以看到:

  • y = 0代表不看电影、y = 1代表去看电影
  • 余额为1、2、3、4、5时,去看电影(正样本)
  • 余额为-1、-2、-3、-4、-5时,不看电影(负样本)

1.6.2. 分类任务基本框架

那么如何让计算器来进行这样的分类任务呢?我们需要数学的帮助: $$ \left{ \begin{array}{l} y = f(x_1, x_2 \cdots x_n) \ \text{判断为类别 } N, \text{ 如果 } y = n \end{array} \right. $$ 分类任务分成两步:

  • 第一步是去求解预测出的结果,这个结果还不是我们最终想要的类别,而是类似于0、1、2这样的数字(离散的数)。
  • 第二步就是根据这个数字来判断它属于什么类别,比如说0的时候代表不看电影,1的时候代表看电影

具体到我们这里的看电影这个例子中,数学表述就是: $$ y = f(x) \in {0,1} $$ f(x)的结果,也就是y,属于{0, 1},也就是说要么是0,要么是1。而在上文的图中我们也说过了y = 0代表不看电影(负样本)、y = 1代表去看电影(正样本).

那么此时这个例子的核心问题就转变为了寻找f(x)

1.6.3. 通过线性回归求解分类问题

我们先采用一个非常简单的模型,就是我们之前讲的线性回归模型(原理详见 1.2. 线性回归理论)。使用这个模型的目的在于预测点的分布情况。

我们首先不管是正样本还是负样本,我们现在要做的只是把点的分布给模拟出来:

线性回归

拟合出来的线是y = 0.1364x + 0.5,这就是展现点可能的分布的函数。

这条线上的点不只有0和1怎么办呢?很简单,我们只要取0和1的中点——0.5即可。只要是分布函数的y值大于0.5,我们就把它认定为是1,也就是去看电影;反之就认定为0,不会去看电影。

更专业地说,我们会把0.5叫做阈值。而这种把很多值(分布函数上的值)根据阈值最终整理为两个值(0或1)的操作叫做二值化

这样一来我们就完成了一个非常简单的分类任务的预测。我们再来总结一下步骤: $$ \begin{aligned} (1) \quad Y &= 0.1364x + 0.5 \ (2) \quad y &= f(x) = \begin{cases} 1, & Y \geq 0.5 \ 0, & Y < 0.5 \end{cases} \end{aligned} $$

  • 第一步是找出f(x),也就是这里的Y
  • 第二步就是确定阈值,根据阈值来进行二次筛选

我们把Y带入原来的数据点,看一下效果:

xY(x)分布函数的值y(x)二值化之后的值实际y
-5-0.1800
-4-0.0500
-30.0900
-20.2300
-10.3600
10.6411
20.7711
30.9111
41.0511
51.1811

这么一看线性回归的效果好像还不错,但其实它的局限性还蛮大的。

1.6.4. 线性回归求解分类问题的局限性

线性回归的主要问题在于:极端离群点会严重扭曲拟合直线,从而降低分类准确率。

样本量变大

原本的数据中x的值仅在-5到5。而这时如果我们添加一个比较远的点,比如(50, 1),就会对线性回归计算出的线产生巨大的影响。

我们还是一样的把Y带入原来的数据点,看一下效果:

xY(x)分布函数的值y(x)二值化之后的值实际y
-50.3900
-40.4100
-30.4300
-20.4400
-10.4600
10.4901
20.5111
30.5211
40.5411
50.5511
501.2611
x = 1时,由于Y(x)的结果0.49,小于0.5,导致二值化之后y(x) = 0,但是实际情况是x = 1y = 1

1.6.5. 逻辑回归的原理

逻辑回归对于求解分类问题的第一步进行了优化: $$ \begin{aligned} (1) \quad Y &= \frac{1}{1 + e^{-x}} \ (2) \quad y &= f(x) = \begin{cases} 1, & Y \geq 0.5 \ 0, & Y < 0.5 \end{cases} \end{aligned} $$ 之所以叫做逻辑回归是因为第一步的这个函数叫做Sigmoid函数(逻辑函数),它将输入x映射到 (0,1)之间

它根据数据的特征或属性,计算其归属于某一类别的概率P(x),根据概率数值来判断其所属类别。

它的主要应用场景就是二分类问题(也就是只有两种可能性的问题)。

它的数学表达式是: $$ \begin{aligned} P(x) &= \frac{1}{1 + e^{-x}} \ y &= \begin{cases} 1, & P(x) \geq 0.5 \ 0, & P(x) < 0.5 \end{cases} \end{aligned} $$

  • y为类别结果
  • P为概率分布
  • x为特征值

它的效果如下:

Sigmoid

如果我们使用逻辑函数作为Y

xY(x)使用逻辑函数y(x)二值化之后的值实际y
-50.0100
-40.0200
-30.0500
-20.1200
-10.2700
10.7311
20.8811
30.9511
40.9811
50.9911
501.0011
10001.0011

可以看到,即使加入了极端点 x = 50(甚至 x = 1000),分类结果仍然保持正确。

逻辑回归只是用于解决分类问题的一种模型(你可以使用其它模型,只是效果可能没这么好)。其实它的思想与线性回归差不多,只不过换用了逻辑函数。

1.6.6. 利用逻辑函数解问题

我们就用逻辑回归解决一下本文开篇提出的那个问题:根据余额,判断小明是否会去看电影(余额-10、100的情况下)

只需要带入逻辑方程即可:


余额为-10的情况下: $$ P(x = -10) = \frac{1}{1 + e^{10}} = 4.5 \times 10^{-5} < 0.5 $$ 由于计算出的值小于0.5,所以会被二值化为0,也就是不会去看电影。


余额为100的情况下: $$ P(x = 100) = \frac{1}{1 + e^{-100}} = 1 > 0.5 $$ 由于计算出的值大于0.5,所以会被二值化为1,也就是会去看电影。