sklearn逻辑回归

介绍

逻辑回归本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。要理解逻辑回归从何而来,得要先理解线性回归。线性回归是机器学习中最简单的的回归算法,它写作一个几乎人人熟悉的方程:
$$
z = \theta_0 \ + \ \theta_1 x_1 \ + \ \theta_2 x_2 \ + \ … \ + \ \theta_n x_n
$$
线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核心就是找出模型的参数:\theta^T\theta_0,著名的最小二乘法就是用来求解线性回归中参数的数学方法。

对于输出值z, 我们用一个函数g(z)将其映射到(0, 1)区间,即Sigmoid函数
$$
g(z) = \frac {1} {1 \ + \ e^{-z}}
$$
16434754-67439d7159d36b8b.jpg

面试可能会考Sigmoid函数的公式和性质(主要记住图像就好):

Sigmoid函数是一个S型的函数,当自变量z趋近正无穷时,因变量g(z)趋近于1,而当z趋近负无穷时,g(z)趋近于0,它能够将任何实数映射到(0,1)区间,使其可用于将任意值函数转换为更适合二分类的函数。 因为这个性质,Sigmoid函数也被当作是归一化的一种方法,与我们之前学过的MinMaxSclaer同理,是属于数据预处理中的“缩放”功能,可以将数据压缩到[0,1]之内。区别在于,MinMaxScaler归一化之后,是可以取到0和1的(最大值归一化后就是1,最小值归一化后就是0),但Sigmoid函数只是无限趋近于0和1。

几率:对于0<x<1,定义x/(1 - x)为x的几率。

将上述得到的g(z)的几率带入到公式中并取对数,经简化,发现逻辑回归的形似几率取对数就是线性回归。因此这种模型被称为”对数几率回归“(对数几率其实就是Sigmoid函数),英文为logistic regression。而logistic发音与逻辑相近,故又叫做逻辑回归。

为什么需要逻辑回归

线性回归对数据的要求很严格,比如标签必须满足正态分布,特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。但是,逻辑回归有以下无可替代的优点:

  • 逻辑回归对线性关系的拟合效果好到丧心病狂:逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇(相对的,逻辑回归在非线性数据的效果很多时候比瞎猜还不如)
  • 逻辑回归计算快:对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林,亲测表示在大型数据上尤其能够看得出区别
  • 逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字:我们因此可以把逻辑回归返回的结果当成连续型数据来利用。

由此,我们已经了解了逻辑回归的本质,它是一个返回对数几率的,在线性数据上表现优异的分类器,它主要被应用在金融领域。其数学目的是求解能够让模型对数据拟合程度最高的参数的值,以此构建预测函数y(x),然后将特征矩阵输入预测函数来计算出逻辑回归的结果y。注意,虽然我们熟悉的逻辑回归通常被用于处理二分类问题,但逻辑回归也可以做多分类。

sklearn中的逻辑回归

逻辑回归相关的类 说明
linear_model.LogisticRegression 逻辑回归分类器
linear_model.LogisticRegressionCV 带交叉验证的逻辑回归分类器
linear_model.logistic_regression_path 计算Logistic回归模型以获得正则化参数的列表
linear_model.SGDClassifier 利用梯度下降求解的线性分类器(SVM,逻辑回归等等)
linear_model.SGDRegressor 利用梯度下降最小化正则化后的损失函数的线性回归模型
metrics.log_loss 对数损失,又称逻辑损失或交叉熵损失
其他会涉及的类 说明
metrics.confusion_matrix 混淆矩阵,模型评估指标之一
metrics.roc_auc_score ROC曲线,模型评估指标之一
metrics.accuracy_score 精确性,模型评估指标之一

二元逻辑回归的损失函数

损失函数

逻辑回归的损失函数是由极大似然估计推导出来的,具体结果可以写作:
$$
J(\theta) \ = \ -\sum_{i=1}^{m}(y_i\ *\ log(y_\theta(x_i))\ + \ (1\ -\ y_i)\ *\ log(1\ -\ y_\theta(x_i))
$$
其中$y_i$表示对应$x_i$的真实标签,$y_\theta$表示经过模型计算出来的结果

由于我们追求损失函数的最小值,让模型在训练集上表现最优,可能会引发另一个问题:如果模型在训练集上表示优秀,却在测试集上表现糟糕,模型就会过拟合。虽然逻辑回归和线性回归是天生欠拟合的模型,但我们还是需要控制过拟合的技术来帮助我们调整模型,对逻辑回归中过拟合的控制,通过正则化来实现

重要参数penalty和C

正则化

正则化是用来防止模型过拟合的过程,常用的有L1正则化和L2正则化两种选项,分别通过在损失函数后加上参数向量\theta的L1范式和L2范式的倍数来实现。这个增加的范式,被称为“正则项”,也被称为”惩罚项”。损失函数改变,基于损失函数的最优化来求解的参数取值必然改变,我们以此来调节模型拟合的程度。其中L1范式表现为参数向量中的每个参数的绝对值之和,L2范数表现为参数向量中的每个参数的平方和的开方值
$$
J(\theta){L1}\ =\ C\ *\ J(\theta)\ +\ \sum{j=1}^{n}|\theta_j|
$$

$$
J(\theta){L2}\ =\ C\ *\ J(\theta)\ +\ \sqrt{\sum{j=1}^{n}(\theta_j)^2}
$$