多项式回归与模型泛化(正则化)

目录

1.线性回归与多项式回归及多项式回归的过拟合问题

1.1 原理介绍

1.2 多项式回归的程序实现:

2. 测试数据集的意义,作用

3. 学习曲线

4.针对特定的测试数据集和验证数据集的过拟合问题

4.1 为什么会出现针对特定的测试数据集和验证数据集的过拟合问题

4.2 常用的交叉验证方法

(1) K-folds交叉验证

(2) 留一法LOO-CV

4.3 搜寻最佳参数的程序的实现

(1) 方法一

(2) 方法二

5. 模型误差

5.1 模型误差都包括什么

5.2 一些算法的偏差和方差

5.3  主要的挑战:方差

5.3.1 解决高方差的通常手段:

5.3.2 利用模型正则化(Regularization)来解决高方差问题

(1)LASSO 和 Ridge

(2)弹性网 (Elastic Net)


1.线性回归与多项式回归及多项式回归的过拟合问题

1.1 原理介绍

线性回归:首先假设数据是线性的, 具有一定的局限性,因为现实中很多数据都是非线性的。

多项式回归:对数据不进行预先假设, 比较符合实际数据非线性的特点。

多项式回归可以看作在线性回归的基础上多添加了特征:如上图中,degree=2,多添加了x^{2} 这个特征。

当degree=3时,如下图所示(假设线性回归中有两个特征):由线性回归(degree=1)的 两个特征,变成了多项式回归(degree=3)时的9个特征。

所以,多项式在一定程度上有增加特征的作用, 特征数增加了, 对某个事件描述的也就更精准了(比如:你要找一个会算法的工程师,为了确保达到业务的要求, 特征越多,那么找到达到业务要求的人的可能性就越大)。

但是,这就引发了另一个问题, 即过拟合问题。即我们对训练数据拟合程度很高,但是当进来新数据时, 不一定能进行很好的预测(由于提的要求过于具体,有些要求可能不具有共性, 因此, 当新的算法工程师去面试时,可能由于不具备某些个性特征,而被遗憾的pass掉)。

1.2 多项式回归的程序实现:

(1) 添加特征,调用 sklearn.preprocessing.polynomialFeatures

(2) 数据归一化(因为我们添加的”特征”与原有”特征”是呈幂次增长的,“特征”可能不在一个量级上, 故需要数据的归一化处理)

(3) 线性回归 调用sklearn.linear_model.LinearRegression

上述的(1)(2)(3)可以统一的放到Pipeline中来实现

from sklearn.pipeline import Pipeline

Pipline([(“poly”, PolynomialFeature(degree=2)),

          ( “std_Scaler”, StandardScaler()),

          (“lin_reg”, LinearRegression())

])

在这里我们选用均方误差,来看模型的性能。

2. 测试数据集的意义,作用

              

模型的复杂度:在这里可以理解为二项式回归中的阶数(degree),阶数越高,模型越复杂

                        (如: KNN中,k越小,模型越简单;k=样本数时,即找出样本中数量最多的那类)

随着degree的增大, 训练数据集的准确率逐渐的提升,测试数据集的准确率先上升后下降。即在A点之前, 模型欠拟合; 在A点之后,模型过拟合。

欠拟合时算法所训练的模型不能完整的表达数据关系。

过拟合时,算法所训练的模型过多的表达了数据间的噪音关系。

3. 学习曲线

学习曲线即:随着训练样本的逐渐增多, 算法训练出的模型的表现能力。

注:黄色为测试数据集蓝色为训练数据集横坐标轴表示的是训练样本的数量,纵坐标轴表示(预测的数据标签与真实的数据标签之间的)均方误差。

可以看出:

在欠拟合(underfitting)时, 随着训练样本数的逐渐增多,训练数据的均方误差与测试数据集的均方误差最终在1.5左右,明显的高于最佳时的均方误差,最佳时的均方误差最终在1附近。

在过拟合(overfitting)时, 训练数据的均方误差很小,最终在0.8附件;测试数据集的均方误差在样本数小于60之前较高, 在样本数大于60时,测试数据集的样本误差有所下降,最终在1.3左右; 与其它两种情况相比, 过拟合中,虽然训练数据集的均方误差很小, 但是测试数据集的均方误差较大。即模型能很好的对训练数据进行拟合,但是不具有很好的泛化能力。

4.针对特定的测试数据集和验证数据集的过拟合问题

4.1 为什么会出现针对特定的测试数据集和验证数据集的过拟合问题

一般,我们通过测试数据集来判断模型的好坏, 模型不理想, 则调整其参数, 使其符合要求,由于调参时根据测试数据集,所以会发生针对特定测试数据集的过拟合。

故, 我们又引入了验证集,

先用训练数据来训练模型, 然后在验证集上验证,根据验证集的结果调整参数, 使其符合要求;最后在测试集上进行测试。

由于只有一个验证集,仍可能会出现针对特定验证集的过拟合

故我们用交叉验证的方法来训练模型。

4.2 常用的交叉验证方法

(1) K-folds交叉验证

把训练数据集分成k份,称为k-folds cross validation。

缺点:每次训练k个模型, 相当于整体性能慢了k倍。

(2) 留一法LOO-CV

把训练数据集分成m(m为样本的数量)份,称为留一法(Leave-One-Out Cross Validation)

优点:完全不受随机的影响, 最接近模型真正的性能指标。

缺点:计算量巨大。

4.3 搜寻最佳参数的程序的实现

(1) 方法一

调用sklearn.model_selection.cross_validate

(2) 方法二

用网格搜索, 调用 sklearn.model_selection.GridSearchCV

        GridSearchCV 中的CV即指 cross_validate

5. 模型误差

5.1 模型误差都包括什么

模型误差 = 偏差(Bias)+ 方差(Variance)+ 不可避免的误差

不可避免的误差:如我们采集的数据本来就是含有噪音的

偏差和方差如下图所示:

引起偏差的原因: 选取的特征不正确(如用学生的名字来预测学生的成绩)

                             欠拟合(一般我们假设选取的特征没问题,故仅考虑这种情况)

                             对问题本身的假设不正确(如非线性数据使用线性回归)

方差:指数据的一点点扰动都会较大地影响模型。

引起方差的原因: 使用的模型太复杂(如高阶多项式回归),过拟合。

5.2 一些算法的偏差和方差

非参数学习:(如KNN)高度依赖训练数据,不对数据进行任何假设------高方差

              在KNN中,k越小,对数据越敏感,方差大,偏差小;当k很大(如=样本数时),相当于找出样本中数量最多的那类,偏差大,方差小。

参数学习: (如线性回归,总是假设数据是线性的)假设不一定正确-----高偏差

                         线性回归中,最高阶次为1时,通常偏差较大,方差较小;最高阶次较大时,偏差较小,方差较大。

大多数算法都具有相应的参数,可以调整偏差和方差。如KNN中的K;线性回归中使用多项式回归。

偏差和方差通常是矛盾的。降低偏差,会提高方差;降低方差,会提高偏差。

5.3  主要的挑战:方差

在这里我们假设有相对比较好的数据,数据中也有相对比较好的合适的特征,所以,机器学习中,主要的挑战来自方差

5.3.1 解决高方差的通常手段:

  • 降低模型的复杂度
  • 减少数据的维度;降噪
  • 增加样本数
  • 使用验证集
  • 模型正则化   

5.3.2 利用模型正则化(Regularization)来解决高方差问题

(1)LASSO 和 Ridge

模型正则化即限制参数(特征前边系数)的大小。

LASSO 全称:Least Absolute Shrinkage and Selection Operator Regression

注意:不论是岭回归还是LASSO的正则项中都不含有,因为不是某个特征前边的系数,而模型正则化是限制参数(特征前边系数)的大小。为优化参数(特征前边系数)的权重。岭回归的正则化前边有个1/2,无实际意义,只是为了后续求导方便。

程序中调用

Ridge Regression:  sklearn.linear_model.Ridge

LASSO:  sklearn.linear_model.Lasso

Ridge 和 LASSO的比较

由于Ridge的正则化项是参数的平方, 故数值比较大,所以需要较大的才能保证参数尽可能的小;

而LASSO的正则化项是参数的绝对值,与Ridge相比,数值较小,不需太大就可满足参数尽可能小的要求。

另外,LASSO趋向于使得一部分theta值变为0,所以可做为特征选择用(从下图中也可以看出)。

趋近于无穷时,即优化参数(特征前边系数)的权重非常大,目标函数中,MSE项可以忽略,只看后边的正则化项。

我们可以看到,用Ridge Regression 有些参数(特征前边系数)可能会很小,会趋近于0,但是不会是0;而用LASSO Regression有些参数(特征前边系数)可能为0,从而达到特征选择的作用,LASSO Regression 相对Ridge Regression 比较简单,但是有可能会把重要的特征”去掉”,不如Ridge Regression 的可靠性高。

L1正则(LASSO)和L2正则(Ridge)

(2)弹性网 (Elastic Net)

弹性网结合了L1正则和L2正则,是一种优化的正则方法(类比随机批量梯度下降法:结合了批量梯度和随机梯度下降的优点)。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来简单介绍一下这几种模型。 1. 线性回归模型:线性回归是一种最简单也是最常用的回归算法,它假设自变量和因变量间存在线性关系,通过最小化残差平方和来拟合直线,从而实现对目标变量的预测。特点是模型简单,易于理解和实现,但对于非线性问题效果不佳。应用场景包括市场预测、房价预测等。 2. 多项式回归模型多项式回归是在线性回归的基础上增加了多项式特征,将自变量的高次项也考虑进去,使得模型可以适应更加复杂的数据分布。特点是可以通过添加高次项来拟合非线性数据,但过高的次数会导致过拟合。应用场景包括生物学数据分析、天气预测等。 3. 岭回归模型:岭回归是一种正则化线性回归方法,它通过对参数施加L2正则化,限制参数的大小从而避免过拟合。特点是可以抑制多重共线性,避免过拟合,但需要调整超参数。应用场景包括基因表达分析、图像处理等。 4. Lasso回归模型:Lasso回归也是一种正则化线性回归方法,不同的是它使用L1正则化,使得一些参数变为0,可以实现特征选择,即通过选择少量重要的特征来提高模型泛化能力。特点是可以实现特征选择,可以避免过拟合,但也需要调整超参数。应用场景包括信用评分、股票预测等。 以上是对这四种模型的简要介绍,希望能够帮助你更好地理解它们。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值