4.1.7 稀疏线性模型
前面选择的线性模型的例子看起来都很好,不是吗?但真实的情况是,你可能不只是拥有少数特征,而是拥有成百上千个特征。在这种情况下,线性回归模型的解释能力就会下降。甚至可能会发现处于这样一种情况,即特征比实例多,并且根本无法拟合标准线性模型。幸运的是,有很多方法可以将稀疏性(即很少的特征)引入线性模型。
1.Lasso
Lasso 是一种将稀疏性引入线性回归模型的自动而简便的方法。Lasso 代表“最小绝对收缩和选择算子”,当应用于线性回归模型时,执行特征选择和所选特征权重的正则化。下面考虑权重优化的最小化问题:
Lasso 为这个优化问题添加了一项:
式中,‖β‖1 为特征向量的L1 范数,会对大权重进行惩罚,由于使用了L1 范数,很多权重的估计值为0,而其他权重的估计值则缩小;参数λ 控制正则化的强度,通常通过交叉验证进行调整,尤其当λ 很大时,很多权重变为0。
特征权重可以可视化为惩罚项λ 的函数,图4-4 中每个特征权重用一条曲线表示,这些曲线也称为正则化路径。图中最上方的数字是非零权重的数目。
应该为λ 选择什么值呢?如果将惩罚项视为一个优化参数,那么可以通过交叉验证找到将模型错误最小化的λ。还可以将λ 视为控制模型可解释性的参数,惩罚越大,模型中出现的特征就越少(因为它们的权重为零),并且模型的解释效果越好。
图4-4 随着权重惩罚的增加,越来越少的特征接受非零权重估计
1.Lasso 示例
下面用Lasso 预测自行车的租赁情况。预先设置了模型中需要的特征数量,先设置为两个特征,如表4-4 所示。
前两个在Lasso 路径中具有非零权重的特征是“温度”特征和“天数”特征。
现在,选择5 个特征,如表4-5 所示。
表4-5 中“温度”和“天数”两个特征的权重和表4-4 中的结果不一样,这是因为减少了λ,权重就会受到较少的惩罚,权重的绝对值就可能更大。Lasso 权重的解释与线性回归模型中权重的解释相对应。只需要注意特征是否标准化,因为这会影响权重。在这个示例中,这些特征已经被软件标准化了,但权重会自动转换以匹配原始特征比例。
1.线性模型中稀疏性的其他方法
可以使用多种方法减少线性模型中的特征数量。
(1)预处理方法
·手动选择特征:可以始终使用专家知识选择或放弃某些特征。其最大的缺点是它不能被自动化处理,需要与理解数据的人员取得联系。
·单变量选择:相关系数就是一个例子。只考虑超过特征和目标之间相关性阈值的特征。缺点是它只是单独地考虑单个特征。在线性模型考虑了其他一些特征之前,某些特征可能不会显示相关性。而使用单变量选择方法会错过这些特征。
(2)分步方法
·向前选择:用一个特征拟合线性模型,对每个特征都执行此操作。选择最有效的模型(例如,最高的R-平方);然后,对于其余的特征,通过将每个特征添加到当前的最佳模型中来拟合模型的不同版本,选择表现最好的一个;重复操作,直至达到某个条件,例如最大特征数。
·向后选择:类似于向前选择。但不是添加特征,而是从包含所有特征的模型开始,尝试删除一个使性能提高最多的特征;重复此操作,直至达到某个停止标准。
这里建议使用Lasso,因为它可以自动化处理,同时考虑所有特征,并且可以通过λ 进行控制,同样也适用于分类(例如逻辑回归)。