逻辑回归
目标:
- 能够清晰理解逻辑回归模型的原理。
- 掌握sigmooid函数的作用
- 能够使用逻辑回归模型实现二分类以及多分类任务
知识要点
一、逻辑回归模型
模型简介:
逻辑回归实际上是一个分类算法,其应用于对样本数据进行分类的场景中。例如,给定如下的鸢尾花数据集:
花萼长度 | 花萼宽度 | 花瓣长度 | 花瓣宽度 | 类别 |
---|---|---|---|---|
5.4 | 3.9 | 1.3 | 0.4 | 山鸢尾 |
5.1 | 3.5 | 1.4 | 0.3 | 山鸢尾 |
5.8 | 2.7 | 4.1 | 1.0 | 杂色鸢尾 |
6.2 | 2.2 | 4.5 | 1.5 | 杂色尾 |
6.3 | 2.5 | 5.0 | 1.9 | 维吉尼亚鸢尾 |
6.5 | 3.0 | 5.2 | 2.0 | 维吉尼亚鸢尾 |
5.6 | 3.1 | 3.8 | 0.7 | ? |
我们就可以基于一致的数据集,建立模型,从而对位置的样本数据进行预测。
算法的分类思想
逻辑回归实现分类的思想:将每条样本进行‘打分’,然后设置一个阈值,达到这个阈值的,分为一个类别,没有达到这个阈值的,分为另外一个类别。对于阈值,划分为哪个类别都可以,但是,要保证阈值划分的一致性。
算法模型
对于逻辑回归,模型的前面于线性回归类似:
不过,Z的值是一个连续的值,取值方位为(-∞,+∞),我们可以将阈值设置为中间的位置,也就是0,当Z>0时,模型将样本判定为一个类别(正例),Z≦0时,模型将样本判定为另一个类别(负例),这样模型就实现了二分类任务。
sigmoid函数
函数原型
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中非常使用。例如,某人患病的概率,明天下雨的概率等。
因此,我们需要将Z值转换为概率值,逻辑回归使用sigmoid函数来实现转换,该函数的原型为:
当Z的值从-∞向+∞过渡时,sigmoid函数的取值范围为(0,1),这正好是概率的取值范围,当Z=0时,sigmoid(0)的值为0.5. 因此,模型就可以将sigmoid的输出值p作为正例的概率,而1一p作为负例的概率。以阈值0.5作为两个分类的阅值,就是看p与1 一p哪个类别的概率值更大,预测的结果就为哪个类别。
假设真实的分类y的值为1与0,则:
sigmoid函数图像
现在我们通过Python程序来绘制sigmoid函数在[-10,10]区间的图像。
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "SimHei"
plt.rcParams["axes.unicode_minus"] = False
plt.rcParams["font.size"] = 12
#定义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="-", c="k")
plt.axhline(ls=":", c="k")
plt.axhline(y=0.5, ls=":", c="k")
plt.axhline(y=1, ls=":", c="k")
p1t.x1abel("z值")
plt.y1abel("sigmoid(z)值")
Text(0, 0.5, 'sigmoid(z)值')