1.什么是逻辑回归模型?
首先,我们不要被逻辑回归这个名字所误导,逻辑回归实际上是一个分类算法,它被用于将样本数据进行分类的场景中,比如预测一封邮件是否是垃圾邮件。
逻辑回归的分类思想是:将每条样本进行打分,然后设置一个阈值,当样本得分大于这个阈值时,分为一个类别,当样本得分小于等于这个阈值时,划分为另一个类别。(对于样本得分等于阈值时,划分为哪一个类别都可以,只要保持一致性即可)
关于逻辑回归,可以用一句话来总结:逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。
逻辑回归通常应用于目标变量是分类变量的场景,比如:
- 预测一封邮件是否是垃圾邮件
- 判断肿瘤是良性还是恶性
逻辑回归的种类:
- 二元逻辑回归
分类结果只有两种可能,例如:垃圾邮件和非垃圾邮件 - 多元逻辑回归
三种及以上无序的分类,例如:预测哪类食物更被青睐(蔬菜、非蔬菜、素食) - 有序逻辑回归
三种及以上有序的分类,例如:排名1-3的电影
2.逻辑回归的算法模型
对于逻辑回归,模型的前面与线性回归类似:
sigmoid函数
对于分类任务来说,分类模型不仅应该能够提供某一样本属于哪个分类,还要给出样本属于某一类别的概率。比如一封邮件是垃圾邮件的概率,肿瘤是恶性的概率等。
逻辑回归使用sigmoid函数将结果转化为概率值:
从图中可以看出,sigmoid函数具有以下特点:
1)当z的值从负无穷到正无穷变化时,函数的取值范围为(0,1),这正好是概率的取值范围
2)当z取值为0时,函数取值为0.5,因此可以将sigmoid(z)作为样本属于正例的概率,若函数取值大于0.5判定为类别1,否则判定为类别0
3)sigmoid函数的优势就是能以概率的方式来呈现样本属于某个类别的可能性
3.逻辑回归的损失函数
在逻辑回归中,使用sigmoid(z)来表示样本属于类别1的概率,1-sigmoid(z)来表示样本属于类别0的概率,我们通过极大似然估计来推导逻辑回归的损失函数。为了方便,下面使用s(z)来表示sigmoid(z)
通过以上推导,我们得出了逻辑回归的损失函数,接下来通过梯度下降法求解模型的参数,也就是w和b的值,一旦参数值确定,我们就能对未知样本数据进行预测。
4.逻辑回归参数求解
这里采用梯度下降法求解逻辑回归的损失函数,梯度下降的迭代公式如下:
接下来只需要求解损失函数对W的梯度即可,推导过程如下:
公式中i代表样本数,j代表特征数
因此在随机梯度下降中,我们就可以这样进行权重的调整:
在批量梯度下降中,将样本数量相加即可:
经过不断反复迭代,最终求得W值,使得损失函数的值最小。
5.逻辑回归的python代码实现
使用逻辑回归需要导入的包:
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
使用过程非常简单,常用函数如下:
lr = LogisticRegression()
lr.fit(x_train, y_train)
# 预测值
y_hat = lr.predict(x_test)
# 查看预测的概率
probability = lr.predict_proba(x_test)
print("权重:", lr.coef_)
print("偏置:", lr.intercept_)
print("预测值:", y_hat)