文章目录

  • 线性模型基本概念
  • 一元线性回归
  • 多元线性回归
  • X T X X^{T}X XTX可逆
  • X T X X^{T}X XTX不可逆情况
  • 广义线性模型
  • 线性模型之logit回归
  • 极大似然求解logit回归参数
  • Python中使用Logistic回归算法
  • 参考



  这一节我们介绍线性模型,介绍思路如下:我们先介绍概念,什么叫做线性模型?在了解了基本的线性模型之后,我们将其应用于

一元线性回归,之后扩展到

多元线性回归。之后我们再将其扩展到

广义线性模型。最后通过广义线性模型迁移到

logit回归(分类问题)中。

线性模型基本概念

  线性模型(Linear Model)是在假设特征满足线性关系,给定一些数据,需要用这些数据训练一个模型,并用此模型进行预测。但这个模型是属性的线性组合,其函数形式为:

广义线性模型的应用条件 广义线性模型作用_线性模型

  用向量表示的话,如下所示:

广义线性模型的应用条件 广义线性模型作用_线性模型_02

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04是我们需要学习的参数。一旦广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04确定下来,那么这个模型也就确定下来了。

一元线性回归

广义线性模型的应用条件 广义线性模型作用_回归_07广义线性模型的应用条件 广义线性模型作用_线性模型_08广义线性模型的应用条件 广义线性模型作用_人工智能_09广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_10。那么我们如何来找到一组参数广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04使得构建的线性模型能够很好地表示这组样本输入与输出之间的关系呢?

  在开始建模之前,我们需要思考一个问题,什么叫做很好地表示?我们需要将这个好坏量化一下。通常我们以范数作为量化的标准。在这里表示的就是,对于真实的输入广义线性模型的应用条件 广义线性模型作用_回归_13,我的预测输出广义线性模型的应用条件 广义线性模型作用_回归_14与真实输出广义线性模型的应用条件 广义线性模型作用_线性模型_15之间的误差。在这里我们以均方差作为度量标准。

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04,能够使得这些样本在当前模型下的均方误差最小,用数学形式表达如下所示:

广义线性模型的应用条件 广义线性模型作用_线性模型_18

广义线性模型的应用条件 广义线性模型作用_线性模型_19表示广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04的解。

  基于均方差最小化来进行模型求解的方法称为最小二乘法(least square method)。在线性回归问题中,最小二乘法试图寻找到一条直线,使所有样本到直线的欧式距离之和最小。

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04使广义线性模型的应用条件 广义线性模型作用_机器学习_24广义线性模型的应用条件 广义线性模型作用_回归_25最小化的过程,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。

广义线性模型的应用条件 广义线性模型作用_回归_26是关于广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04的凸函数,所以对其求偏导数,令其偏导数等于0,所求出来的解即为最优解。其偏导数求解如下所示:

广义线性模型的应用条件 广义线性模型作用_回归_29

广义线性模型的应用条件 广义线性模型作用_人工智能_30

  再令其偏导数为0,可得到广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04最优解的闭式(closed-from)解

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_33

广义线性模型的应用条件 广义线性模型作用_机器学习_34广义线性模型的应用条件 广义线性模型作用_线性模型_35的均值。

广义线性模型的应用条件 广义线性模型作用_机器学习_36

  至此,求解完毕。

多元线性回归

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_37个属性,此时期望找到一组模型参数广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04,使得广义线性模型的应用条件 广义线性模型作用_回归_40,使得函数输出广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_41与真实标签广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_42越接近越好。我们将这类问题称为多元线性回归问题(multivariate linear regression),或者叫做多变量线性回归问题。

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04组合称为一个向量的形式广义线性模型的应用条件 广义线性模型作用_人工智能_45。与之对应,样本集可表示为一个广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_46大小的矩阵广义线性模型的应用条件 广义线性模型作用_线性模型_47。那么每一行都对应一个样本。每一行的前广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_48个元素都表示为当前这个样本的广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_48个属性值。最后这个元素恒为1,是方便与参数广义线性模型的应用条件 广义线性模型作用_回归_50中的广义线性模型的应用条件 广义线性模型作用_机器学习_04相乘,形成偏置项。样本输入的数学表达形式可表示为如下形式:

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_52

广义线性模型的应用条件 广义线性模型作用_机器学习_53,令均方误差最小化,求其最优解:

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_54

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_55,对广义线性模型的应用条件 广义线性模型作用_回归_50求偏导得到如下方程:

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_57

广义线性模型的应用条件 广义线性模型作用_回归_58可逆

  与一元回归类似,令上式等于0即可求解上述方程。通过观察不难发现,上式存在矩阵求逆的情况,对于广义线性模型的应用条件 广义线性模型作用_回归_58满秩矩阵(full-rank matrix)或正定矩阵(positive definite matrix)时,可求出:

广义线性模型的应用条件 广义线性模型作用_人工智能_60

广义线性模型的应用条件 广义线性模型作用_回归_61,则最终的线性回归模型可表示为:

广义线性模型的应用条件 广义线性模型作用_线性模型_62

广义线性模型的应用条件 广义线性模型作用_回归_58不可逆情况

广义线性模型的应用条件 广义线性模型作用_回归_58不可逆,那么此时可解出多个广义线性模型的应用条件 广义线性模型作用_回归_50,他们都能使得均方误差最小化。选择哪一个解作为输出,将由算法的归纳偏好决定,常见的做法是引入正则化(regularization)项。

广义线性模型

  通常我们把线性回归模型简写为:

广义线性模型的应用条件 广义线性模型作用_人工智能_66

广义线性模型的应用条件 广义线性模型作用_线性模型_67的衍生物?例如将样本标签广义线性模型的应用条件 广义线性模型作用_线性模型_67的对数模型作为线性模型逼近的目标,即:

广义线性模型的应用条件 广义线性模型作用_线性模型_69

  这就是对数线性回归(log-linear regression),它实际上是在试图让广义线性模型的应用条件 广义线性模型作用_机器学习_70逼近广义线性模型的应用条件 广义线性模型作用_线性模型_67。上式形式上是线性回归,但实际上已是在求输入空间到输出空间的非线性函数映射

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_72,令:

广义线性模型的应用条件 广义线性模型作用_机器学习_73

  这样得到的模型称为广义线性模型(generalized linear model)。我们把函数广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_72称为联系函数。广义线性模型的参数估计通常通过加权最小二乘法或极大似然法进行。

线性模型之logit回归

广义线性模型的应用条件 广义线性模型作用_线性模型_67与线性回归模型的预测值联系起来。就可以达到这一点。你也许会想到单位阶跃函数,将连续值变换为离散量。但是单位阶跃函数不连续,因此希望找到一个函数来替代它。对数几率函数(logistic function),是一种Sigmoid函数能做到这一点。其函数表达形式如下所示:

广义线性模型的应用条件 广义线性模型作用_人工智能_76

  对其两边取倒数,再取对数化简,得如下变换形式:

广义线性模型的应用条件 广义线性模型作用_人工智能_77

广义线性模型的应用条件 广义线性模型作用_线性模型_67看作样本广义线性模型的应用条件 广义线性模型作用_线性模型_35是正例的可能性,则广义线性模型的应用条件 广义线性模型作用_回归_80表示的就是负例的可能性。两者的比值表示的就是为正例的相对可能性,再将其取对数得到对数几率(logit)

  上式用线性回归模型的预测结果去逼近真实标记的对数几率,因此,对应的模型称为对数几率回归。但实际上它是一种分类学习方法。在其他地方你可能会听到逻辑回归,但周志华教授觉得中文“逻辑”与“logistic”和logit的含义想去甚远,称其为“对数几率回归”简称“对率回归”。具有如下优点:

  1. 无需像贝叶斯那样假设数据分布,直接对分类可能性进行建模,避免假设不准带来的偏差。
  2. 得到的是一个概率,比单纯的正例或者反例所含的信息量要大。
  3. 对率回归求解的目标函数是任意阶可导的凸函数,具有很好的性质,现有的许多数值优化算法都可以直接用于求解。

  利用Logistic 回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的 “回归”一词源于佳拟合,表示要找到佳拟合参数集。

极大似然求解logit回归参数

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03广义线性模型的应用条件 广义线性模型作用_机器学习_04。极大似然法可在公众号历史文章贝叶斯这节找到。

广义线性模型的应用条件 广义线性模型作用_线性模型_35是正例的可能性广义线性模型的应用条件 广义线性模型作用_线性模型_67看作类后验概率估计广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_85,则对数几率回归可表示为:

广义线性模型的应用条件 广义线性模型作用_回归_86

  有:

广义线性模型的应用条件 广义线性模型作用_人工智能_87

广义线性模型的应用条件 广义线性模型作用_人工智能_88

广义线性模型的应用条件 广义线性模型作用_人工智能_89,对率回归模型最大化“对数似然”(log-likehood):

广义线性模型的应用条件 广义线性模型作用_机器学习_90

广义线性模型的应用条件 广义线性模型作用_机器学习_91广义线性模型的应用条件 广义线性模型作用_回归_92,则可得到广义线性模型的应用条件 广义线性模型作用_机器学习_93的简写广义线性模型的应用条件 广义线性模型作用_人工智能_94

广义线性模型的应用条件 广义线性模型作用_机器学习_95广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_96广义线性模型的应用条件 广义线性模型作用_人工智能_97则似然项可写为:

广义线性模型的应用条件 广义线性模型作用_机器学习_98

广义线性模型的应用条件 广义线性模型作用_人工智能_99等价于最小化:

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_100

广义线性模型的应用条件 广义线性模型作用_机器学习_101的高阶可导连续凸函数,可使用牛顿法(凸优化中的内容)对其求解。更加详细的推导可参考周志华的西瓜书对数几率回归。

Python中使用Logistic回归算法

  在Scikit-Learn机器学习库中,线性模型算法族都在linear_model类库下,当前版本一共有39个类,是Scikit-Learn机器学习库中最庞大的模型算法族类库之一。典型的有如下几个:

  1. LinearRegression

  对应线性回归算法,也称为普通最小二乘法(Ordinary Least Square, OLS),用于预测回归问题,其损失函数的数学表达式如下:

广义线性模型的应用条件 广义线性模型作用_线性模型_102

  LinearRegression会调用fit方法来拟合数组Xy,并且将线性模型的系数存储在其成员变量coef_中。

  1. Ridge

  对应Ridge回归算法,又称为岭回归,用于预测回归问题,是在线性回归的基础上添加了L2正则项,使得权重weight的分布更为平均,其损失函数的数学表达式如下:

广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_103

  其中a是一个常数,根据经验设置。

  1. Lasso

  对应Lasso回归算法。我们知道,常用的正则项有L1L2,用了L2正则项的线性回归是Ridge回归,用了L1正则项的线性回归是Lasso回归,同样是用于预测回归问题。其随时函数的数学表达式如下:

广义线性模型的应用条件 广义线性模型作用_线性模型_104

  表达式的左侧与Ridge回归算法的损失函数基本一致,只是将右侧的L2正则表达式替换成了L1正则表达式。你可能关注到左侧式子相比线性回归,多了一个广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_105,其中广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_37是样本数量,在优化过程的运算中不会发生变化,是一个常量,并不会对权重广义线性模型的应用条件 广义线性模型作用_广义线性模型的应用条件_03的调整产生影响。

# 导入线性模型中的Logistic回归算法
from sklearn.linear_model import LogisticRegression
# 导入鸢尾花分类数据集
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
# 训练模型
clf = LogisticRegression().fit(X, y)
print(clf.predict(X)) ## 使用模型进行分类预测
print(clf.score(X,y)) ## 使用模型自带性能评估器