洛伦谈MATLAB的艺术

将想法转化为MATLAB

子集选择和正则化(第2部分)

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

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

标准线性回归通过估计一组系数来工作,这些系数使观测值和模型拟合值之间的平方误差之和最小化。正则化技术,如岭回归、套索和弹性网,为最小化问题引入了一个附加项。

  • 岭回归识别一组回归系数,该回归系数最小化平方误差之和加上平方回归系数之和乘以权重参数.可以取0到1之间的任何值。A零值相当于标准线性回归。作为随着大小的增加,回归系数向零收缩。
  • 套索最小化平方误差之和加上回归系数绝对值之和。
  • 弹性网是套索解和岭解的加权平均。万博 尤文图斯

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

让我们看看正则化的作用,它使用套索来解决我们上周看到的同一个问题。

内容

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

清楚的全部的clc rng(1998年);mu=[0 0 0 0];i=1:8;矩阵=abs(bsxfun(@负,i',i));协方差=repmat(.5,8,8)。^矩阵;X=mvnrnd(μ,协方差,20);贝塔=[3;1.5;0;0;2;0;0;0];ds=数据集(Beta);Y=X*Beta+3*randn(20,1);b=回归(Y,X);ds.线性=b;

使用套索来拟合模型

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

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

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

让我们看一下函数中的前五组系数B.当您遍历这些行时,您可以看到增加时,值模型系数通常向零收缩。

disp(B(:,1:5))disp(Stats)
3.340.1340 0.1348 0 0.1348 0.1348 0.1348 0.1348 0.1348 0.1348 0.1348 0.1348 0.1348 0.1348 8 0.348 0.0 0.858 0.857 7 7 7 7 7 7 7 7 0.857 7 7 7 7 7 7 7 0.0 0 0.858 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 DA:[1x100 double]Alpha:1 DF:[1x100 double]MSE:[1x100 double]预测器名称:{}SE:[1x100 double]lambdainmse:0.585 Lambda1SE:1.6278 IndexMinMSE:78 Index1SE:89

创建显示均方误差与λ的曲线图

此时问的自然问题是“好的,我应该使用这100种不同型号中的哪一种?”。我们可以使用拉索普洛特.拉索普洛特生成显示之间关系的绘图以及结果模型的交叉验证均方误差(MSE)。每个红点显示结果模型的MSE。从每个点延伸出来的垂直线段是每个估计的误差条。

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

拉索普洛特(B,统计,“打印类型”,“CV”)

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

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

正如在特征选择示例中一样,我们可以看到lasso算法已经从结果模型中消除了五个干扰因素中的四个。与标准线性回归相比,这种新的、更节省的模型将显著更准确地进行预测。

ds.Lasso=B(:,Stats.IndexMinMSE);disp(ds)
贝塔线性套索3 3.5819 3.0591 1.5 0.44611 0.3811 0.92272 0.024131 0-0.84134 0 2 4.7091 1.5654 0-2.5195 0 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个不同的模型,并估计lasso模型中包含的系数数量以及标准线性回归和lasso模型之间交叉验证MSE的差异。

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

rng(1998);对于i=1:100 X=mvnrnd(μ,协方差,20);Y=X*Beta+randn(20,1);[B Stats]=套索(X,Y,“CV”, 5); Betas(:,i)=B(:,Stats.IndexMinMSE)>0;Coeff_Num(i)=和(B(:,Stats.IndexMinMSE)>0);MSE(i)=Stats.MSE(:,Stats.IndexMinMSE);regf=@(XTRAIN,ytrain,XTEST)(XTEST*回归(ytrain,XTRAIN));cv_Reg_MSE(i)=交叉值(“mse”,X,Y,“predfun”,regf,“kfold”, 5);结束数字套索系数=平均值(系数);disp(数字套索系数)MSE比率=中值(cv Reg MSE)/中值(MSE);disp(MSE比率)
4.57 1.2831

选择最佳技术

正则化方法和特征选择技术都有其独特的优点和缺点。让我们在结束这篇博客文章时,就各种技术的优缺点提供一些实用的指导。

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

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

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

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

这样一来,三种正则化技术中的每一种都有其独特的优点和缺点。

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

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

  • 你有500个不同癌症患者的基因序列
  • 你试图确定15000个不同的基因中哪一个对疾病的进展有显著影响。

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

结论

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

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

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

如果是,请在这里张贴在这里.




与MATLAB®7.13一起发布

|

评论

如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。