20. 逻辑回归算法的引入 & Sigmoid函数

算法描述

逻辑回归,我们不要被其名字所误导,实际上,逻辑回归是一个分类算法。其优点在于,逻辑回归不仅能够进行分类,而且还能够获取属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨的概率等。

算法的分类思想

逻辑回归实现分类的思想为:将每条样本进行“打分”,然后设置一个阈值,达到这个阈值的,分为一个类别,而没有达到这个阈值的,分为另外一个类别。对于阈值,比较随意,划分为哪个类别都可以,但是,要保证阈值划分的一致性。

注意:逻辑回归属于分类算法,不是回归算法!

20. 逻辑回归算法的引入 & Sigmoid函数

进一步解释

eg. 学生的成绩,分数是连续值,然后根据分数分类成优良差。
分类算法,可以说是基于线性回归基础上进行的分类。
需要对每一个样本进行打分,打分后,以一个点进行分割,高于这个点的,算一个类别。以一个中间点,作为分类 。

eg. 学生考试,只知道能考上 ,不知道考上的概率是多少?
只是进行了分类,少了信心指数,少了衡量这种类别多大的可能。以分数是60作为分界,分数是100也是优等,分数是60也是优等,但是100是优等的可能性肯定是大于分数是60的可能性。

逻辑回归不仅给分类,还给了分类的概率。
z就是对样本的打分,就是线性回归的连续值的输出,

接下来,我们想让这个z直观一点,变成概率[0,1]之间,怎么办?
Sigmoid(z)
20. 逻辑回归算法的引入 & Sigmoid函数
E上面是-z
20. 逻辑回归算法的引入 & Sigmoid函数
通过 sigmoid转化为 0 1的区间,不仅分类 还能给出,图像类似于s

逻辑回归的算法模型

对于逻辑回归,模型的前面与线性回归类似:
20. 逻辑回归算法的引入 & Sigmoid函数
不过,z的值是一个连续的值,取值范围为(,+)(-\infty , +\infty)我们需要将其转换为概率值,逻辑回归使用sigmoid函数来实现转换,该函数的原型为:
sigmoid(z)=11+ezsigmoid(z) = \frac{1}{1 + e^{-z}}
20. 逻辑回归算法的引入 & Sigmoid函数
当z的值从-\infty++\infty过度时,sigmoid函数的取值范围为[0, 1],这正好是概率的取值范围,当z=0z=0时,sigmoid(0)的值为0.5。因此,模型就可以将sigmoid的输出p作为正例的概率,而1 - p作为负例的概率。以阈值0.5作为两个分类的标准,假设真实的分类y的值为1与0,则:
20. 逻辑回归算法的引入 & Sigmoid函数

Z不是以一个有直观意义的分值,而是通过sigmoid转化为与概率相同的区间。
Sigmoid 0作为分解
Z取0 1/2

0.5 是下雨还是不下雨 无所谓,但是预测的时候一定要一直

20. 逻辑回归算法的引入 & Sigmoid函数
20. 逻辑回归算法的引入 & Sigmoid函数
1这个类别,和 0 这个类别

正类,负类
正例,负例

这三个都一样
虽然是分类,但回归也不是白叫的,有回归的成分。

辅助理解:绘制sigmoid函数图像

现在,我们通过Python程序来绘制sigmoid函数在[-10, 10]区间的图像。

import numpy as np
import matplotlib.pyplot as plt

# 定义sigmoid函数的原型。
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

z = np.linspace(-10, 10, 200)
plt.plot(z, sigmoid(z))
# 绘制垂直线。
plt.axvline(x=0, ls="dashed", c="k")
# 画水平线。如果没有指定水平线,则默认为y=0。
plt.axhline(ls="dotted", c="k")
plt.axhline(y=0.5, ls="dotted", c="k")
plt.axhline(y=1, ls="dotted", c="k")