逻辑回归(Logistic Regression)
1 概述
逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法,叫着“回归”的名背地里却做着“分类”的事,完美诠释“曲线救国”。
线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核心就是找出模型的参数,线性回归方程z即:
那如果我们的标签是离散型变量,尤其是,如果是满足0-1分布的离散型变量,我们要怎么办呢?我们可以通过引入联系函数,将线性回归方程z变换为g(z),并且令g(z)的值分布在(0,1)之间,且当g(z)接近0时样本的标签为类别0,当g(z)接近1时样本的标签为类别1,这样就得到了一个分类模型。这个联系函数对于逻辑回归来说,就是Sigmoid函数:
于是我们将带入,就得到了逻辑回归(Logistic Regression) 模型的一般形式:
然而有时,我们也会称逻辑回归为 “对数几率回归” ,原因如下:
假设特征X所对应的y值是在指数上变化,那么就可以将结果y值取对数,作为其线性模型逼近的目标。也就是所谓的 “对数线性回归”
于是y(x)的形似几率取对数的本质其实就是我们的线性回归z,我们实际上是在对线性回归模型的预测结果取对数几率来让其的结果无限逼近0和1。因此,其对应的模型被称为 “对数几率回归”。
2 损失函数
逻辑回归是一种监督式学习,是有训练标签的,就是有已知结果的,从这个已知结果入手,去推导能获得最大概率的结果参数,只要我们得出了这个参数,那我们的模型就自然可以很准确的预测未知的数据了。而利用实验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。
3 梯度下降
在多元函数上对各个自变量求∂偏导数,把求得的各个自变量的偏导数以向量的形式写出来,就是梯度。
4 决策边界和多项式
4.1 决策边界
和支持向量机类似,逻辑回归也可以可视化其决策边界
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
X = X[y<2,:2]
y = y[y<2]
plt.scatter(X[y==0,0], X[y==0,1], color="red")
plt.scatter(X[y==1,0], X[y==1,1], color="blue")
plt.show()
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666)
log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
log_reg.coef_
"""
输出:
array([[ 2.78090985, -2.71686283]])
"""
log_reg.intercept_
"""
输出:
array([-6.54621544])
"""
def x2(x1):
return (-log_reg.coef_[0][0] * x1 - log_reg.intercept_) / log_reg.coef_[0][1]
# 生成一条直线,x为4~8范围内的1000点 y为x2函数的调用,
x1_plot = np.linspace(4, 8, 1000)
x2_plot = x2(x1_plot)
plt.scatter(X[y==0,0], X[y==0,1], color="red")
plt.scatter(X[y==1,0], X[y==1,1], color="blue")
plt.plot(x1_plot, x2_plot)
plt.show()
4.2 多项式
参照:第四周-线性回归中的多项式回归,采用多项式变换的方法
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=2)
X_ = poly.fit_transform(X)
5 正则化
正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向量θ的L1范式和L2范式的倍数来实现。这个增加的范式,被称为“正则项”,也被称为"惩罚项"。
L1正则化和L2正则化虽然都可以控制过拟合,但它们的效果并不相同。当正则化强度逐渐增大(即C逐渐变小),参数的取值会逐渐变小,但L1正则化会将参数压缩为0,L2正则化只会让参数尽量小,不会取到0。
from sklearn.linear_model import LogisticRegression
log_reg = LogisticRegression(penalty='l1',C=0.8)
6 优点
- 逻辑回归对线性关系的拟合效果好。特征与标签之间的线性关系极强的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,但逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇
- 逻辑回归计算快。对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林,亲测表示在大型数据上尤其能够看得出区别
- 逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字。我们因此可以把逻辑回归返回的结果当成连续型数据来利用,比如在制作信用评分卡
7 逻辑回归列表
7.1 参数列表
7.2 属性列表
7.3 接口列表
参考连接:https://space.bilibili.com/2932207/
参考:公众号-数据科学家联盟