请和我一起学习机器学习算法之线性回归

  • 线性回归灵魂三问
  • 线性回归数学分析
  • 一般线性回归
  • 1.公式定义
  • 2. 参数求解之梯度下降
  • 3. 参数求解之正规方程
  • 4. 梯度下降和正规方程的对比
  • 对数几率回归
  • 线性判别分析
  • 线性回归的变量选择
  • 变量选择
  • 线性回归的训练
  • 多分类的学习
  • 类别不平衡的问题


线性回归灵魂三问

  • 什么是线性回归
    所谓线性回归实际上就是利用已知的样本(已知数据),选择一个线性方程,并对其进行拟合,并通过拟合得到的方程来对未知的数据进行预测
  • 线性回归能干什么
    线性回归主要是用来预测,和判断合理性。 比如用身高预测体重,利用广告投入预测商品销售额等等。
  • 线性回归的难点是什么
    难点即是重点:变量选择(多元下的重线性)、预防过拟合、模型检验。

NOTE: 一元线性回归就不在这里赘述了,一般来说想学机器学习算法的人都有一定的数学基础。

线性回归数学分析

一般线性回归

1.公式定义

就我们所知道的那样,多元的线性方程如下。
解决线性回归模型自相关问题_梯度下降
其中解决线性回归模型自相关问题_解决线性回归模型自相关问题_02表示常数项。转化成向量表达为:
解决线性回归模型自相关问题_机器学习_03
解决线性回归模型自相关问题_梯度下降_04为一个一行n+1列的向量。
我们用参数x表示描述一个事物的属性,用h(x)表示我们对给定属性的预测。我们希望我们的预测结果符合客观事实,并且可以作为对未知事物的推测。

要使结果符合客观事实,则我们希望我们的预测结果h(x)和实际实物的标签(比如预测的类别和实际的类别)的误差尽可能的小。于是…

2. 参数求解之梯度下降

现在我们可以将问题转化成我们熟悉的数学表达模式了:
问题:我们有m个已知的样本(解决线性回归模型自相关问题_解决线性回归模型自相关问题_05), 其中解决线性回归模型自相关问题_线性回归_06是一个n+1维的列向量。求一组参数解决线性回归模型自相关问题_代价函数_07,使得解决线性回归模型自相关问题_梯度下降_08最小。

实际上对于上面公式的的推导,我们默认使用了一种叫做误差平方和的代价函数(预测误差的代价损失,我们希望代价函数越小越好,表示我们使用这个模型的成本越低)。也就是说如果使用不同的代价函数,则得到的误差损失的表达是不同的。 代价函数可以表示为
解决线性回归模型自相关问题_代价函数_09
NOTE: 对于权值解决线性回归模型自相关问题_线性回归_10 不必太过纠结,实际上应该是解决线性回归模型自相关问题_解决线性回归模型自相关问题_11,但是为了方便后续化简,添加了一个二分之一,实际上着这并不会影响我们对其参数进行求解。

接着就可以用梯度下降来优化这些参数了。对于初学者来说,可能对于像我这样的初学者来说,梯度下降不太好理解,但是在机器学习算法中,梯度下降是无处不在的。为了更加全面和完整,这里留个空位,到时如果有必要在专门来梳理一下梯度下降。
【梯度下降 】

解决线性回归模型自相关问题_机器学习_12

上面这个公式,就是使用梯度下降对参数进行更新,其中解决线性回归模型自相关问题_梯度下降_13表示学习速率,也就是沿着低度方向,向下迈进的步幅。解决线性回归模型自相关问题_线性回归_14表示代价函数的梯度方向。
解决线性回归模型自相关问题_机器学习_15
加法的求导是可以分别求导的,所以我们可以对括号进行求导
解决线性回归模型自相关问题_机器学习_16
代入上面等式,(原来的引入的那个2,就是在这里消除掉的)
解决线性回归模型自相关问题_代价函数_17
我们通过随机一组参数,并且通过上面的梯度下降的方式直接求解,直到收敛。

3. 参数求解之正规方程

我们也可以通过直接解方程的方式获得最后优化参数。
为了很好的解释我们下面所描述的方程,请记得我们最初的向量表达: 解决线性回归模型自相关问题_线性回归_18
如果我们把各个学习样本的解决线性回归模型自相关问题_梯度下降_19 组成一个向量Y,则我们需要求解的方程就可以变成
解决线性回归模型自相关问题_机器学习_20
对向量解决线性回归模型自相关问题_机器学习_21求导(这里又是一个不好理解的点,倍感数学知识不够用啊)
解决线性回归模型自相关问题_解决线性回归模型自相关问题_22
令上式为0;当解决线性回归模型自相关问题_梯度下降_23存在的时候,
解决线性回归模型自相关问题_代价函数_24
如果不存在,则可以通过求伪逆的方式代替。
实际上如果从矩阵的映射的角度来分析的话,对于这个公式就好理解了,问题的关键是,但是矩阵的映射本身就不好理解。

4. 梯度下降和正规方程的对比

梯度下降

正规方程

需要选择合适的学习率

不需选择学习率

需要多次迭代获得参数

一次计算直接获得参数

使用与特征值多的模型

适用于特征值小的模型

使用于各个类型

只使用于线性模型,其他模型不适合

正规方程由于需要求矩阵的逆,一般情况,求n介矩阵的逆需要N的三次方的算法复杂度,所以当n很大的时候(一般>10000)选择梯度下降模型

对数几率回归

在分类任务中,我们希望将线性模型产生的连续的值转化为离散的0、1值用来标记各个样本。理想中我们使用单位阶跃函数来实现,如下图的红色部分。但是由于单位阶跃函数不可微,不变与计算和使用,我们找到一个可以替代单位阶跃函数的 函数。而 对数几率函数(logistic function)就是这样一种函数。

解决线性回归模型自相关问题_解决线性回归模型自相关问题_25


对数几率函数是一种典型的"sigmoid 函数",所谓sigmoid 函数,就是长相是S型的函数,而对数几率函数就是其中的一种。

解决线性回归模型自相关问题_代价函数_26

通过简单的化简:

解决线性回归模型自相关问题_解决线性回归模型自相关问题_27

如果把y 考虑为正例的概率,而1-y则为反例的概率。两者的比例反映了x作为正例的相对可能性,称为“几率”。对几率取对数,则称为对数几率

实际上,y实际上使我们在X的样本存在条件下认为其为正例的概率,则可以考虑y为在x条件下的后验概率。
解决线性回归模型自相关问题_解决线性回归模型自相关问题_28
则(直接计算解方程,这两货加起来为1)
解决线性回归模型自相关问题_机器学习_29
我们希望的是,每个样本属于自己标记的概率越大越好。
接下来是一段复杂的方法,对于对数回归,先到这里,了解即可。

线性判别分析

线性判别分析 (Linear Discriminant Analysis,简称 LDA) 思想非常朴素,设法将给定样例投影到一条直 线上 ,使得同类样例的投影点尽可能接近、 异类样例 的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别. 如图

解决线性回归模型自相关问题_解决线性回归模型自相关问题_30

线性回归的变量选择

多元线性回归的核心问题应该是变量的选择。

变量选择

变量的选择也是模型的对比,我们希望用最小的变量数来获得最好的结果。

  • AIC 准则

AIC准则是由日本统计学家Akaike与1973年提出的,全称是最小化信息量准则(Akaike Information Criterion)。它是拟合精度和参数个数的加权函数:
AIC=2(模型参数的个数)-2ln(模型的极大似然函数)

这个不是太好理解,比如说模型的最大似然函数是什么呢? 在线性模型中所谓的最大似然函数指的就是残差的倒数。

  • BIC 准则

AIC为模型选择提供了有效的规则,但也有不足之处。当样本容量很大时,在AIC准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时,使用AIC准则选择的模型不收敛与真实模型,它通常比真实模型所含的未知参数个数要多。BIC(Bayesian InformationCriterion)贝叶斯信息准则是Schwartz在1978年根据Bayes理论提出的判别准则,称为SBC准则(也称BIC),弥补了AIC的不足。
BIC = ln(n)(模型中参数的个数) - 2ln(模型的极大似然函数值)

  • 基于误差的准则

当把预测当成主要任务和目标的时候,通过预测误差作为判断模型的指标
解决线性回归模型自相关问题_线性回归_31

线性回归的训练

多分类的学习

核心思路是拆解法,将类别分界,通过一对一,一对多,多对多
一对一
两两分类,选择分类多的一种
一对多
一和其余分类,选择正例
多对多
先对种类分组,而后在分

类别不平衡的问题

现有技术大体上有三类做法:

  1. 第一类是直接对训练集里的反类样例进行"欠采样" (undersampling) ,即去除一些反倒使得正、反例数日接近7 然后再进行学习;
  2. 第二类是对训练集里的正类样例进行"过来样" (oversampling) ,即增加一些正例使得正、反例数目接近,然后再进行学习;
  3. 第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将类别比例关系嵌入到其决策过程中,称为"阔值移动" (threshold-moving)