线性回归算法梳理
线性回归算法梳理
1.机器学习的一些概念
-
有监督
监督学习,最直接印象就是数据是否存在对应的标签。通过标签进行分类。
-
无监督
无监督学习,样本数据没有标签,需要通过样本间的相似性进行“聚类”。一般考虑类内间距最小化,类间间距最大化。
-
泛化能力
generalization,用来表征学习模型对未知数据的预测能力。归纳过程。与之对应的是,演绎过程。特化。
-
过拟合(方差和偏差以及各自解决办法)
由于学习能力过于强大,把训练样本不太一般的特性都学习到了。
需要注意的是:过拟合是无法彻底避免的,只能”缓解“,或者说是减小其风险。若可彻底避免过拟合,则通过经验误差最小化就能获得最优解,这样相当于构造性的证明了”P=NP“,而这目前来说还是一个无法解决的问题。
解决方法:1.重新清洗数据。2.增大数据的训练量。3.采用正则化方法。(结构风险最小化SRM)
-
方差(Variance)多个模型,模型的拟合度如何,标记的聚散程度。(e.g.,打靶打出点是否密集。)
-
偏差(Bias)单个模型,期望输出与真实标记的差别。(e.g.,打靶打出点与靶心的偏差。)
泛化误差可分解为偏差,方差和噪音之和。需要注意的是方差和偏差是有冲突的。偏差-方差窘境
-
-
欠拟合
由于学习能力低下。
解决方法:1.增加特征项。 2.增加多项式特征。 3.减少正则化参数。
-
交叉验证
又通常称为“k折交叉验证”。将数据均等划分为k个,然后每次使用不同的子集作为测试集,其余的作为训练集。执行k次。这样可以得到这k个测试结果的均值。k最常见的取值是10。其他常取5,20等。
将数据均分也有多种划分方式,所以也要考虑到误差原因。同理多次划分,取均值。e.g.,“10次10折交叉验证。”
若样本数m=k,特例:留一法。结果精准,但是数据量大时,计算开销大。“没有免费的午餐定理NFL”
2.线性回归的原理
在统计学中,线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
3.线性回归损失函数、代价函数、目标函数
- 损失函数:模型的样本误差,用于度量预测值与真实值的拟合程度,损失函数越小说明模型越好。它是定义在单个样本上的。通常使用L(y,h(x))来表示。
- 代价函数:定义在整个训练集上的,整个样本误差的平均。即,损失函数的平均值。
- 目标函数:表示误差的损失函数,代价函数,加入了正则惩罚项后得到的最终优化函数。即最优化经验风险和结构风险。
4.优化方法(梯度下降法、牛顿法、拟牛顿法)
-
梯度下降法:当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,也称为最速下降法。梯度下降算法用平面拟合函数的局部曲面。越接近目标值,步长越小,前进越慢。在接近最优值的区域速度明显变慢,利用梯度下降法求解需要很多次迭代。
梯度下降最为常用。
-
牛顿法:在梯度下降原理基础上,优化的二阶收敛,下降过程中采用二次曲面,考虑了每走一步对当前最大角度产生的影响,梯度下降是一阶收敛,一个平面下静态的拟合局部,只考虑了本步静态的最大方向。所以牛顿法比梯度下降法下降要快。
需要注意的是,高维情况虽然也可以使用牛顿法,但是Hessian矩阵引入的复杂性,会让求解困难度增加。引出下面的方法。
-
拟牛顿法:在每一步迭代时只要求知道目标函数梯度,通过测量梯度变化构造一个目标函数的模型,使之产生超线性收敛性。不需要二阶层数信息。可以用来解决无约事,约事,和大规模的优化问题。使用正定矩阵来近似Hessian矩阵的逆,化简了运算的复杂度。
它是解非线性方程组及最优化计算中最有效的方法之一。
5.线性回归的评估指标
-
SSE(和方差、误差平方和):The sum of squares dueto error
(真实值-预测值)的平方和 同样的数据集的情况下,SSE越小,误差越小,模型效果越好 缺点:随着样本增加,SSE必然增加,也就是说,不同的数据集的情况下,SSE比较没有意义
-
MSE(均方差、方差):Meansquared error
SSE/n。使与样本数n无关。注意量纲变化。
-
RMSE(均方根、标准差):Root mean squared error
对MSE开方。使量纲相同。
MAE通过加绝对值。同RMSE。
-
R-square(确定系数):Coefficientof determination
- SSR:Sumof squares of the regression,即预测数据与原始数据均值之差的平方和
- SST:Totalsum of squares,即原始数据和均值之差的平方和
R^2 = 1 - SSR/SST
综合考虑了预测数据和原始数据的误差以及原始数据的离散程度。消除了原始数据离散程度的影响。
R^2 越接近1,表示方程变量对y的解释能力越强,模型对数据拟合越好。
R^2 越接近0,表明模型拟合越差。若R^2<0,数据可能不存在任何线性关系。
缺点:数据集的样本越大,R^2越大,所以,不同数据集的模型结果比较会有一定的误差
-
Adjusted R-square:Degree-of-freedomadjusted coefficient of determination
校正决定系数。加入样本数据和特征数据评价指标,消除了样本数据和特征数量的影响。
6.sklearn参数详解
class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
参数说明:
- fit_intercept:True or False 是否计算此模型的截距。如果设置为False,则不会在计算中使用截距(例如,预计数据已经居中,即直线过原点)。
- normalize: boolean, optional, default False,当fit_intercept设置为False时,将忽略此参数。如果为True,则回归量X将在回归之前通过减去平均值并除以l2范数来归一化(数据的标准化)。
- copy_X: boolean, optional, default True,如果为True,则将复制X;否则,它可能会直接覆盖原数据。
- n_jobs: int or None, optional (default=None),多线程计算,-1表示使用所有核心进行计算,默认为1.这一项对于目标个数>1且大规模问题有加速作用。
更多详细参数,查看官方文档。https://scikit-learn.org/stable/
参考文档(简略):
1.西瓜书
2.统计学习方法 李航
3.维基百科
4.吴恩达机器学习
5.sklearn官方文档