来自“使用 Scikit-Learn 和 TensorFlow 2nd edition 进行机器学习实践”一书第 4 章:
一般来说,Elastic Net 比 Lasso 更受欢迎,因为当特征的数量大于训练实例的数量或多个特征高度相关时,Lasso 可能会出现异常行为。
当没有时,Lasso 究竟如何以及为什么表现得“不规律”。功能 > 没有。训练实例的数量或特征何时高度相关?它与冗余功能有关吗?
来自“使用 Scikit-Learn 和 TensorFlow 2nd edition 进行机器学习实践”一书第 4 章:
一般来说,Elastic Net 比 Lasso 更受欢迎,因为当特征的数量大于训练实例的数量或多个特征高度相关时,Lasso 可能会出现异常行为。
当没有时,Lasso 究竟如何以及为什么表现得“不规律”。功能 > 没有。训练实例的数量或特征何时高度相关?它与冗余功能有关吗?
当 p > n 时,LASSO 模型最多只能支持 n 个变量(这可以使用线性代数来证明,特别是数据矩阵的秩),至少留下 p - n 个变量(有些可能是预测性的,考虑一个使用 LASSO 并且所有变量都是预测性的模型)。不过,这不一定是一件坏事,具体取决于您的用例。
对于共线性问题,如果两个变量高度相关(也就是说,它们在某种意义上包含相同的“信息”),那么 LASSO 将倾向于随机选择两个变量中的一个并丢弃另一个。同样,这可能不是问题,但可能导致“不稳定”行为,其中选择的变量会根据训练集发生很大变化。
一般来说,我发现 LASSO 会选择不同的变量集,这些变量集会根据训练集发生相当大的变化,特别是对于小型数据集,当 p > n 时更糟。同样,不一定是问题,但您可能希望不使用显式特征选择,而是选择岭回归。或者,弹性网是两种方法之间的平衡。
这真的很奇怪,因为我想不出为什么 Lasso 在高维数据中会成为问题的充分理由。事实上,由于在 Lasso 下系数可以缩小到零(这不是 Ridge 或 Elastic Net 的情况),因此 Lasso 是特征选择的一个不错的选择。也许评论正是指这一点,即 Lasso 可能会“踢出”变量?
这是一个可能感兴趣的相关帖子:https ://stats.stackexchange.com/questions/373275/for-high-dimensional-data-does-it-make-sense-to-do-feature-selection-before -跑