在 scikitlearn 中调整 LASSO 线性模型中的 alpha 参数

机器算法验证 回归 套索 scikit-学习
2022-03-29 13:53:30

在文本分类(情感分类)的问题中,我使用的是LASSO方法。我使用的特征主要是 Ngrams(每 N 个连续的单词),我专门使用 LASSO,以便我可以对特征进行排序并提取分类问题中重要 Ngrams 的集合。

我的问题是关于调整alphascikitlearn 模型中的参数:我知道当我设置为alpha接近 1 时,选择的特征数量会变得更少。所以我想问:

  1. 选择重要特征数量的最佳实践是什么,因此是 alpha 值(如果我寻求最高分数而不是模型解释,则可以进行交叉验证),但是是否有一些东西可以衡量“分类过程的最少足够数量的特征” “?
  2. 如果我决定只选择前 1000 个特征并设置 alpha 以返回 1000 个非零系数的特征。这里的 LASSO 方法会不同于使用正常的线性回归并对前 1000 个特征进行排名吗?
2个回答

第一:尝试设置alpha以查找预先指定数量的重要功能不是一个好主意。一个特征是否能预测响应是数据的属性,而不是你的模型。所以你希望你的模型告诉有多少特征是重要的,而不是相反。如果你试图弄乱你的alpha,直到它找到预先指定数量的预测特征,你就会冒过拟合(如果预测特征真的比这少)或欠拟合(如果有更多)的风险。

这就是为什么通常基于最小化交叉验证的泛化误差来自动选择调整参数的原因。在交叉验证设置中,人们经常做类似于寻找“最小足够数量的特征”的事情,即选择最大alpha的,其中误差最多比交叉验证误差最小的参数高一个标准差(例如此处,第 18 页)。这样做的理由是交叉验证的误差估计中有一些噪声,如果你选择简单地最小化估计的那个,你就有过度拟合噪声的风险,所以最好“在简约方面犯错”,如论文放它。alphaalpha

另一方面,一些论文(例如这里)指出,alpha通过最小化交叉验证错误进行选择并不能在实践中产生一致的特征选择(即,当且仅当它们应该选择特征时)。另一种选择是基于 BIC 进行选择,如 Zou、Hastie 和 Tibshirani 所倡导(对于 BIC,应该将“自由度”设置为等于发现非零特征的特征矩阵的秩;有关更多详细信息,请参阅论文。)

您可以尝试应用弹性网络回归几次。它结合了 Lasso 和 Ridge 回归方法,以便为您的特征选择提供“人性化”。这对于优化特征非常有帮助,同时保留数据特征的直觉。