逻辑回归模型的算法原理 | 更文挑战

501 阅读2分钟

“这是我参与更文挑战的第16天,活动详情查看: 更文挑战

上几篇学习的线性回归模型是一种回归模型,它用于对连续变量进行预测,如预测收入范围、客户价值等。如果要对离散变量进行预测,则要使用分类模型。分类模型与回归模型的区别在于其预测的变量不是连续的,而是离散的一些类别,例如,最常见的二分类模型可以预测一个人是否会违约、客户是否会流失、肿瘤是良性还是恶性等。现在要学习的逻辑回归模型虽然名字中有“回归”二字,但其在本质上却是分类模型。

既然逻辑回归模型是分类模型,为什么名字里会含有“回归”二字呢?这是因为其算法原理同样涉及线性回归模型中的线性回归方程。

image.png

上面这个方程是用于预测连续变量的,其取值范围为(-∞,+∞),而逻辑回归模型是用于预测类别的,例如,用逻辑回归模型预测某物品是属于A类还是B类,在本质上预测的是该物品属于A类或B类的概率,而概率的取值范围是0~1,因此不能直接用线性回归方程来预测概率,那么如何把一个取值范围是(-∞,+∞)的回归方程变为取值范围是(0,1)的内容呢?

这就需要用到下图所示的Sigmoid函数,它可将取值范围为(-∞,+∞)的数转换到(0,1)之间。例如,假设y=3,通过Sigmoid函数转换后,f(y)=1/(1+e-3)=0.95,就可以作为一个概率值使用了。

image.png

通过如下代码绘制Sigmoid函数的图像。

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-6,6)
y=1.0/(1.0+np.exp(-x))
plt.plot(x,y)
plt.show()

逻辑回归模型的代码实现

image.png

先构造数据,代码如下。

X = [[1,0],[5,1],[6,4],[4,2],[3,2]]
Y = [0,1,1,0,0]

再将已有数据使用逻辑回归模型进行拟合,代码如下。

from sklearn.linear_model import LogisticRegression
model= LogisticRegression()
model.fit(X,Y)

训练完模型之后,即可用模型的predict()函数进行预测,代码如下。

model.predict([[2,2]])

预测结果如下。

[0]

忽略警告信息

有时对模型使用默认参数,运行程序时会出现如下图所示的FutureWarning警告信息,它只是在说明模型的官方默认参数在未来会有所调整,并非报错。

image.png

通常可以不用理会这个警告信息,程序的运行不会受到影响。如果不想看到这个警告信息,可以在完整代码的最上方添加如下代码来忽略警告信息。

import warnings
warnings.filterwarnings('ignore')