罗兰关于MATLAB的艺术

将想法转化为MATLAB

子集选择与正则化(下)

本周,技术营销部的Richard Willey将完成关于子集选择和规范化的两部分演示。

在一个最近的帖子,我们研究了如何使用序列特征选择来提高预测精度,当建模广泛的数据集与高度相关的变量。这周,我们将用正则化算法来解决同样的问题,比如套索,弹性网和脊回归。在数学上,这些算法通过惩罚模型中回归系数的大小来工作。

标准线性回归的工作原理是估计一组系数,使观测值和模型拟合值之间的误差平方和最小化。正则化技术,如脊回归,套索,和弹性网引入了一个额外的术语,这个最小化问题。

  • 岭回归识别一组回归系数,该回归系数最小化平方误差之和加上平方回归系数之和乘以权重参数可以取0到1之间的任何值。A.值为零等于一个标准的线性回归。作为体积增大,回归系数趋近于零。
  • Lasso最小化的平方和误差加上回归系数绝对值的和。
  • 弹性网是套索和脊解的加权平均值。金宝搏官方网站

这个附加项的引入迫使回归系数趋于零,从而生成一个更简单的模型,具有更高的预测精度。

让我们看看正规化的作用,用套索来解决我们上周看过的同一个问题。

目录

从上一篇文章中重新创建数据集1

清除全部的clc rng (1998);Mu = [0 0 0 0 0 0];我= 1:8;矩阵= abs (bsxfun (@minus,我,我));协方差= repmat(5 8 8)。^矩阵;X = mvnrnd(mu,协方差,20);β= [3;1.5;0;0; 2; 0; 0; 0]; ds = dataset(Beta); Y = X * Beta + 3 * randn(20,1); b = regress(Y,X); ds.Linear = b;

使用套索适合模型

语法套索这个命令和线性回归非常相似。在这行代码中,我将估计一组系数B那个模型Y作为X.为了避免过度拟合,我将应用五倍交叉验证。

[B Stats] =套索(X,Y,)“简历”5);

当我们执行线性回归时,我们生成一组回归系数。默认情况下套索将创建100个不同的模型。每个模型都使用稍大的.所有的模型系数存储在数组中B. 关于模型的其余信息存储在名为统计数据

让我们看看里面的前五组系数B.当您遍历这些行时,您可以看到增加时,数值模型系数通常会趋近于零。

disp(B(:,1:5))disp(Stats)
3.9147 3.9146 3.9145 3.9143 3.9142 0.13502 0.13498 0.13494 0.13488 0.13482 0.85283 0.85273 0.85262 0.85247 0.85232 -0.92775 -0.92723 -0.9267 -0.926 -0.92525 3.9415 3.9409 3.9404 3.9397 3.9389 -2.2945 -2.294 -2.2936 -2.293 -2.2924 1.3566 1.3567 1.3568 1.3569 1.3571 -0.14796 -0.14803  -0.1481-0.14821-0.14833截距:[1x100双]λ78索引:89

创建一个显示均方误差与Lambda的图

此时,我们很自然地会问:“好吧,我应该使用这100种不同的模型中的哪一种?”我们可以用lassoPlotlassoPlot生成显示之间关系的图以及所得模型的交叉验证均方误差(MSE)。每个红点都显示了最终模型的MSE。从每个点延伸出来的垂直线段是每个估计的误差棒。

您还可以看到一对垂直虚线。右侧的线表示使交叉验证的MSE最小化的值。左边的线表示的最大值其MSE在最小MSE的一个标准误差之内。一般来说,人们会选择使MSE最小化。有时,如果认为更简洁的模型特别有利,用户可能会选择其他模型位于两个线段之间的值。

lassoPlot (B,统计数据,“打印类型”“简历”

使用Stats结构提取一组模型系数。

使MSE最小的值存储在统计数据结构。您可以使用此信息索引到贝塔并提取使均方误差最小的系数集。

如在特征选择示例中,我们可以看到套索算法已从所产生的模型中消除了五个患者中的四个。这种新的,更加令人垂涎的模型比标准线性回归更准确地更准确。

ds.Lasso=B(:,Stats.IndexMinMSE);disp(ds)
Beta Linear Lasso 3 3.5819 3.0591 1.5 0.44611 0.3811 0 0.92272 0.024131 0 -0.84134 02 4.7091 1.5654 0 -2.5195 0 0 0.17123 1.3499 0 -0.42067 0

运行一个仿真

在这里,再一次,将任何类型的分析建立在单一观察的基础上是非常危险的。让我们使用模拟来比较线性回归和套索的精度。我们将从预先分配一些变量开始。

MSE=零(100,1);mse=零(100,1);Coeff_Num=零(100,1);Betas=零(8100);cv_Reg_MSE=零(1100);

接下来,我们将生成100个不同的模型,并估计在套索模型中包含的系数的数量,以及标准线性回归和套索模型之间交叉验证的MSE的差异。

如你所见,lasso模型平均只包含4.5项(标准线性回归模型包含8项)。更重要的是,线性回归模型的交叉验证的MSE比由套索. 这是一个非常强大的结果。这个套索算法的应用与标准线性回归一样简单,但与回归相比,它在预测精度上有显著提高。

rng (1998);i = 1: 100 X = mvnrnd(mu,协方差,20);Y = X * Beta + randn(20,1); / /[B Stats] =套索(X,Y,)“简历”5);beta (:,i) = B(:,Stats.IndexMinMSE) > 0;Coeff_Num(i) = sum(B(:,Stats.IndexMinMSE) > 0);MSE (i) =统计数据。MSE (:, Stats.IndexMinMSE);regf = @(XTRAIN, ytrain, XTEST)(XTEST*回归(ytrain,XTRAIN));cv_Reg_MSE (i) = crossval (mse的, X, Y,“predfun”regf,“kfold”5);结束数字套索系数=平均值(系数);disp(数字套索系数)MSE比率=中值(cv Reg MSE)/中值(MSE);disp(MSE比率)
4.57 - 1.2831

选择最佳技术

正则化方法和特征选择技术都有各自独特的优缺点。让我们以一些关于各种技术的优缺点的实用指导来结束这篇博客文章。

与特征选择相比,正则化技术有两个主要优势。

  • 正则化技术比特征选择方法能够在更大的数据集上操作。Lasso和ridge回归可以应用于包含数千甚至数万个变量的数据集。即使是顺序特征选择通常也太慢,无法应对这么多可能的预测因素。
  • 正则化算法通常生成比特征选择更精确的预测模型。正则化作用于连续空间,而特征选择作用于离散空间。因此,正则化通常能够对模型进行微调,并产生更准确的估计。

然而,特征选择方法也有其优点

  • 正则化技术仅适用于少数模型类型。值得注意的是,正则化可应用于线性回归和逻辑回归。但是,如果您正在使用其他建模技术(例如增强决策树),则通常需要应用特征选择技术。
  • 特征选择更容易理解和向第三方解释。当分享你的结果时,永远不要低估描述你的方法的重要性。

说了这么多,做了这么多,三种正规化技术中的每一种都有自己独特的优点和缺点。

  • 因为lasso使用L1范数,它倾向于使单个系数值完全趋近于零。因此,lasso作为一种特征选择算法非常有效。它能快速识别少量关键变量。
  • 相比之下,岭回归使用系数的L2范数(您正在最小化平方误差之和)。岭回归倾向于将系数收缩扩展到更多系数。如果您认为您的模型应该包含大量系数,岭回归可能是比套索更好的选择。
  • 最后,但并非最不重要的是,我们有弹性网络,它能够补偿套索的一个非常特殊的限制。套索无法识别比系数更多的预测因子。

假设你正在进行一项癌症研究。

  • 您对500种不同癌症患者的基因序列
  • 你试图确定15000种不同的基因中哪一种对疾病的发展有重大影响。

对于这么多不同的变量,序列特征选择是完全不切实际的。你不能用岭回归因为它不能让系数很快完全为零。同时,你不能使用套索,因为你可能需要识别500多个不同的基因。弹性网是一种可能的解决方案。

结论

如果您想了解关于这个主题的更多信息,可以参加MathWork的网络研讨会,该研讨会的主题是计算统计:特征选择、正则化和收缩,它提供了这些主题的更详细的处理。

最后,我想问你们是否有人在你们的作品中有应用特征选择或正则化算法的实例?

  • 你曾经使用过特征选择吗?
  • 你认为有机会在你的工作中应用套索或岭回归吗?

如果有,请在这里发布在这里




MATLAB®7.13发布

|

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。