ML梳理之线性回归(linearRegression)

  • Updated on 8th Feb 2025

1 机器学习的一些概念

1.1 什么是机器学习?

计算机系统能够通过现有的数据,不断地改进其解决某一问题的性能,称为机器学习。

1.2 什么是有监督与无监督学习?

对于机器学习的过程中,对于所要学习的数据,如果其为标注的数据则称为有监督学习,否则称为无监督学习。

1.3 什么是泛化能力?

泛化能力指一个经过学习后的模型,能够适应与处理新样本的能力,这也是机器学习的主要目标。

1.4 什么是过拟合与欠拟合?

  • 过拟合:过拟合指在学习的过程中,模型把样本本身的特点而非目标模型的特点进行了学习,导致整体性能下降的情况。
  • 欠拟合:欠拟合则是对目标模型的一般性质还没有习得,主要是由于模型本身的学习与表达能力不够。

1.5 过拟合与欠拟合如何解决?

  • 欠拟合的解决:通过增加模型的学习能力,如:增加学习轮数、增加神经网络的复杂度以提升其表现能力等。
  • 过拟合的解决:过拟合一般来说是只可缓解无法彻底解决,通过对学习使用的模型进行改进,如 :减少相应的模型参数、降低神经网络复杂度等。

1.6 什么是方差Variance和偏差Bias?

方差与偏差是解释学习算法泛化性能的一种重要的工具,下面我们来说明二者的侧重点。 首先,我们将所得到的训练数据等分成A,B,C3份,再借由这3份训练数据分别得出3个训练模型,那么"方差"指的是向这3个模型输入同样的测试样本,得出的输出结果的方差,借此来判断我们选择的模型对于不同的学习样本展现出的"模型本身训练的稳定性".

其次,如果我们将上面的所有训练数据进行训练,并输入同样的测试样本,得到对应的输出结果X,将输出结果与真实的结果T进行比较,得到的差值就为偏差, 偏差则侧重于"模型本身预测的精准度"的衡量.

方差,偏差,噪声三者共同主导了学习模型的误差,在学习初期由于模型的拟合能力不强,这个时候主要是由偏差主导了误差,当学习后期模型的拟合能力增强后,微小的数据扰动都会被模型所捕捉到,此时由方差来主导模型的误差.

1.7 交叉验证

为了能够具体的衡量模型的性能,交叉验证提供了这样一种性能评测的手段.

交叉验证的思想是重复的利用数据,把数据进行切分为训练数据集与测试数据集,并在这个基础上进行反复的训练与测试,选取具有较好性能指标的模型.

具体的思想是,在数据集上划分k个大小相同且互斥的子集,使用k-1个子集进行训练,最后一个进行测试,得出结果后,再选择不同的k-1个自己训练,最后一个进行测试,容易看出上面可最终得到k个模型,通过求取其平均误差得到该模型的测试误差.

其中典型的k值为10.

2 线性模型

2.1 线性回归的原理

  • 线性模型:即通过将给定的一些特征进行线性组合所得到的模型.
  • 线性回归:通过学习得到一个线性的模型能够尽可能准确的预测输入数据的真实标记.
  • 线性回归的原理:使用了均方误差最小化的方法也就是常说的最小二乘法,即试图找到这么一条直线,使样本到直线上的欧氏距离之和最小.

2.2 线性回归损失函数、代价函数、目标函数

  1. 损失函数指的是单一训练集上产生的误差.

  2. 代价函数则值得是模型在整个训练集上产生的平均误差.

  3. 设学习后的模型f,面对测试样本X,模型对应的模拟输出f(X)以及X实际的输出Y,拟合的程度.有如下的表示方式 $$ L(Y, f(X))=(Y-f(X))^2 $$

  4. 但是仅仅通过损失函数来就纠正拟合误差并非我们的目标,我们的是目标是是让模型精确地同时,又尽量的减少模型的复杂度,于是就引入了正则化函数来衡量模型的复杂度,最终我们的目标函数是最小化误差与最小化模型复杂度之和也就是 $$ \frac{1}{N} \sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) $$ 前者是最小化经验风险,后者则是最小化结构风险

3 线性模型的优化方法

当我们得到了对应目标函数后,那么就需要具体的对该模型各个参数求最优解,也就是常见的最优化问题,这里有以下这么几个主要的算法.

3.1 梯度下降法

梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向.

3.2 随机梯度下降法

由于梯度下降法使用了固定步长的,这样带来了后期收敛慢,其进入极小点的情况,这里通过选用随机梯度的下降,更容易突破局部极小点,从而收敛至全局极值点,不过也有迭代次数增加等缺点.

3.3 牛顿法

牛顿法不同于梯度向量,而是使用了二阶海森矩阵的逆矩阵来求解,相对来说比普通的梯度下降算法收敛速度更快,但是其要求必须具有二阶海森矩阵的逆矩阵条件,其计算非常复杂,该条件在大规模数据下往往无法保证.

3.4 拟牛顿法

拟牛顿法则是通过找到一个与海森矩阵类似性质的矩阵来替代,从而让计算更为容易. 其中DFP BFGS L-BFGS都是比较重要的拟牛顿方法.

3.5 其他自适应学习方法

adagrad,adadelta,rmsprop,adam等一系列adaptive learning rate方法

4 线性回归的评估指标

4.1查准率 全查率与F1

二分类问题有四种预测的情况: 真正例:true positive 假正例:false positive 真反例:true negative 假反例:false negative 查准率P与全查率R为 $$ P=\frac{TP}{TP+FP} $$ $$ R=\frac{TP}{TP+FN} $$ 二者一般矛盾,因为查全率高意味着查的个数多,这样又会导致查准率下降 由查全率作为横轴,查准率作为纵轴形成P-R曲线,比较学习期的的性能时,比较该曲线的面积是一个方法 平衡点(Break-Event Point)是查准率等于查全率的取值,这样可以权衡查全率和查准率 BEP还是有些简化,更常用的是F1度量,目的是为了找出更好的学习器 F1:基于查准率和查全率的调和平均值(harmonic mean): $$ F1=\frac{2PR}{P+R}=\frac{2TP}{样例总数+TP-TN} $$ $$ F_\beta=\frac{(1+\beta^{2})PR}{\beta^2P +R} $$ 其中β>0, β=1时就退化为标准的F1,β<1时则查准更重要,β>1则查全更重要 很多时候我们有多个二分类混淆矩阵,例如进行多次训练和测试,每次都有一个,或者执行多分类任务,每每两个组合都对应一个混淆矩阵 一种直接的做法是在所有的混淆矩阵都计算,然后计算所有的平均值也就是宏查重率macro-P和macro-R以及对应的macro F1

4.2 ROC与AUC

学习预测就是将样本进行排序,最可能是正例的排在前面 神经网络一般情形下对每个测试样本预测出一个0-1的实值,然后将这个值作为截断点,大于这个截断点的样本为正例,其他的为反例,如果更重视查准率则可选择排序中靠前的位置,重视查全率则选择较后的截断点 排序本身的质量好环则是体现了学习器在不同任务下的期望泛化性能,ROC曲线就是从这个角度来研究学习器泛化性能

ROC(Receiver Operating Characteristic)的操作方式与之前的P-R图类似,并提出了两个概念,真正利率TPR,假正利率FPR $$ TPR=TP/(TP+FN) $$ $$ FPR=FP/(FP+TN) $$

4.3 ROC绘制过程

设正例数目为m+ 反例数目为m-

  1. 均是先对所有的样例根据学习器的结果进行排序,然后将分类的阀值设置为最大,这时候均是反例,TPR=FPR=0 2.调整阀值为依次每个样例的值,然后观察次样本是否为真正例,如果是坐标为(x,y+1/m+),如果不是坐标为(x+1/m-,y)
  2. 比较ROC曲线的面积也就是AUC

AUC更考虑的是样本预测的排序质量

5 sklearn参数详解

下面对于一个最普通的sklearn 线性模型的使用方式进行说明

# 创建一个普通的线性模型
regr = linear_model.LinearRegression()

# 输入对应的训练数据x,以及对应的标签数据y
regr.fit(datasets_train_x, datasets_train_y)

# 输入对对应的测试数据x,得出模型的预测输出
pred_y = regr.predict(datasets_test_x)

# 最终使用下面的命令轲输出对应的w 与 b
reg.coef_

除了上面的模型还有包括 lasso ridge等回归模型在linear_model包内

讨论

如何提升泛化能力?

参考

scikit-learn 0.20 document azure machine-learning-reference deeplearning 机器学习-周志华 统计学习方法-李航 [机器学习中的Bias(偏差,Error(误差)和Variance(方差))有什么区别与联系]((https://www.zhihu.com/question/27068705) 理解机器学习中常用优化方法 机器学习中的目标函数\损失函数\代价函数 梯度下降or拟牛顿法? 梯度下降法\牛顿法和拟牛顿法