逻辑回归 - 原理部分(一)

根据菜菜的课程进行整理,方便记忆理解

代码位置如下:

概述

名为“回归”的分类器

我们接触了不少带“回归”二字的算法,回归树,随机森林的回归,无一例外他们都是区别于分类算法们,用来处理和预测连续型标签的算法。然而逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。要理解逻辑回归从何而来,得要先理解线性回归。线性回归是机器学习中最简单的的回归算法,它写作一个几乎人人熟悉的方程:

image.png

Θ \Theta 被统称为模型的参数,其中 Θ 0 \Theta_0 被称为截距(intercept), Θ 1 \Theta_1 ~ Θ n \Theta_n 被称为系数(coefficient),这个表达式,其实就和我们小学时就无比熟悉的 y = a x + b y = ax + b 是同样的性质。我们可以使用矩阵来表示这个方程,其中x和 Θ \Theta 都可以被看做是一个列矩阵,则有:

image.png

  • 线性回归
    • 任务:
      • 就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核心就是找出模型的参数: Θ T \Theta^T Θ 0 \Theta_0 ,著名的最小二乘法就是用来求解线性回归中参数的数学方法。
    • 做法:
      • 通过函数z,线性回归使用输入的特征矩阵X来输出一组连续型的标签值y_pred,以完成各种预测连续型变量的任务(比如预测产品销量,预测股价等等)。那如果我们的标签是离散型变量,尤其是,如果是满足0-1分布的离散型变量,我们要怎么办呢?
        • 我们可以通过引入联系函数(link function),将线性回归方程z变换为g(z),并且令g(z)的值分布在(0,1)之间
        • 当g(z)接近0时样本的标签为类别0,当g(z)接近1时样本的标签为类别1,这样就得到了一个分类模型。
    • 联系函数,就是Sigmoid函数: image.png
      • 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。

线性回归中 z = Θ T x z = \Theta^Tx ,于是我们将z带入,就得到了二元逻辑回归模型的一般形式:

image.png

而y(x)就是我们逻辑回归返回的标签值。此时,y(x)的取值都在[0,1]之间,因此y(x)和1 - y(x)相加必然为1。如果我们令y(x)除以1 - y(x)可以得到形似几率(odds)的 y ( x ) 1 y ( x ) \frac{y(x)}{1-y(x)} ,在此基础上取对数,可以很容易就得到:

image.png

不难发现,y(x)的形似几率取对数的本质其实就是我们的线性回归z,我们实际上是在对线性回归模型的预测结果取对数几率来让其的结果无限逼近0和1。因此,其对应的模型被称为”对数几率回归“(logistic Regression),也就是我们的逻辑回归,这个名为“回归”却是用来做分类工作的分类器。

  • 线性回归的核心任务:是通过求解 Θ \Theta 构建这个预测函数,并希望预测函数能够尽量拟合数据
  • 逻辑回归的核心任务也是类似的:求解 Θ \Theta 来构建一个能够尽量拟合数据的预测函数,并通过向预测函数中输入特征矩阵来获取相应的标签值y

y(x)代表了样本为某一类标签的概率吗?

  • y ( x ) 1 y ( x ) \frac{y(x)}{1-y(x)} 是形似对数几率的一种变化。
    • 而几率odds的本质其实是 p 1 p \frac{p}{1-p} ,其中p是事件A发生的概率,而1-p是事件A不会发生的概率,并且p+(1-p)=1。因此,很多人在理解逻辑回归时,都对做出如下的解释:
      • 我们让线性回归结果逼近0和1,此时y(x)和1 - y(x)之和为1,因此它们可以被我们看作是一对正反例发生的概率,即y(x)是某样本i的标签被预测为1的概率,而1 - y(x)是i的标签被预测为0的概率, y ( x ) 1 y ( x ) \frac{y(x)}{1-y(x)} 就是样本i的标签被预测为1的相对概率。基于这种理解,我们使用最大似然法概率分布函数推导出逻辑回归的损失函数,并且把返回样本在标签取值上的概率当成是逻辑回归的性质来使用,每当我们诉求概率的时候,我们都会使用逻辑回归。
  • 然而这种理解是正确的吗?
    • 概率是度量偶然事件发生可能性的数值,尽管逻辑回归的取值在(0,1)之间,并且y(x)和1 - y(x)之和的确为1,但光凭这个性质,我们就可以认为y(x)代表了样本x在标签上取值为1的概率吗?设想我们使用MaxMinScaler对特征进行归一化后,任意特征的取值也在[0,1]之间,并且任意特征的取值和也能够相加为1,但我们却不会认为0-1归一化后的特征是某种概率。逻辑回归返回了概率这个命题,这种说法严谨吗?
  • 但无论如何,长年以来人们都是以”返回概率“的方式来理解逻辑回归,并且这样使用它的性质。可以说,逻辑回归返回的数字,即便本质上不是概率,却也有着概率的各种性质,可以被当成是概率来看待和使用

为什么需要逻辑回归

线性回归对数据的要求很严格,比如标签必须满足正态分布特征之间的多重共线性需要消除等等,而现实中很多真实情景的数据无法满足这些要求,因此线性回归在很多现实情境的应用效果有限。逻辑回归是由线性回归变化而来,因此它对数据也有一些要求,而我们之前已经学过了强大的分类模型决策树和随机森林,它们的分类效力很强,并且不需要对数据做任何预处理。

逻辑回归依然是一个受工业商业热爱,使用广泛的模型,因为它有着不可替代的优点:

  • 逻辑回归对线性关系的拟合效果好到丧心病狂
    • 特征与标签之间的线性关系极强的数据,比如金融领域中的信用卡欺诈评分卡制作电商中的营销预测等等相关的数据,都是逻辑回归的强项。虽然现在有了梯度提升树GDBT,比逻辑回归效果更好,也被许多数据咨询公司启用,但逻辑回归在金融领域,尤其是银行业中的统治地位依然不可动摇(相对的,逻辑回归在非线性数据的效果很多时候比瞎猜还不如,所以如果你已经知道数据之间的联系是非线性的,千万不要迷信逻辑回归)
  • 逻辑回归计算快
    • 对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林,亲测表示在大型数据上尤其能够看得出区别
  • 逻辑回归返回的分类结果不是固定的0,1,而是以小数形式呈现的类概率数字
    • 我们因此可以把逻辑回归返回的结果当成连续型数据来利用。比如在评分卡制作时,我们不仅需要判断客户是否会违约,还需要给出确定的”信用分“,而这个信用分的计算就需要使用类概率计算出的对数几率,而决策树和随机森林这样的分类器,可以产出分类结果,却无法帮助我们计算分数(当然,在sklearn中,决策树也可以产生概率,使用接口predict_proba调用就好,但一般来说,正常的决策树没有这个功能)。
  • 逻辑回归还有抗噪能力强的优点
    • 福布斯杂志在讨论逻辑回归的优点时,甚至有着“技术上来说,最佳模型的AUC面积低于0.8时,逻辑回归非常明显优于树模型”的说法。
    • 逻辑回归在小数据集上表现更好,在大型的数据集上,树模型有着更好的表现。

逻辑回归的本质

  • 它是一个返回对数几率的,在线性数据上表现优异的分类器,它主要被应用在金融领域。
  • 其数学目的是求解能够让模型对数据拟合程度最高的参数的值,以此构建预测函数,然后将特征矩阵输入预测函数来计算出逻辑回归的结果y

我们熟悉的逻辑回归通常被用于处理二分类问题,但逻辑回归也可以做多分类

sklearn中的逻辑回归

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

猜你喜欢

转载自juejin.im/post/7088205812681670687