如何管理线性回归中分类特征的大量值
How to manage a huge number of values for a categorical feature in linear regression
我是机器学习的新手,正在尝试编写一个线性回归算法,其中我有一个分类特征 - 关键字。我的模型中可以有大约 1000 万个关键字。
按照此处给出的说明 - http://www.psychstat.missouristate.edu/multibook/mlt08m.html
看来我应该对分类特征进行二分法。这是否意味着我将有 23 个特征变量(具有 10M 级别的虚拟编码)?
这是处理这种情况的最佳方式吗?
是的。您基本上将拥有 1000 万个预测变量。如果你正在做 regression/classification ,这是不可避免的,除非你想将 "similar" 关键字组合在一起以减少预测变量的数量。例如。您可以将 keyword_1、keyword_2、keyword_3 组合成一个关键字,如果它们之间有特定的关系等等。
要减少如此庞大的关键字数量 (10 M),您可以使用 LASSO (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html) and RIDGE (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html) 惩罚等技术。这个想法是,这 10 M 个预测变量中的大部分对于预测结果并不重要,因此您希望在学习阶段的早期删除它们以提高可解释性并避免结果过度拟合。
严格来说RIDGE是为了避免过拟合,LASSO是为了减少预测变量的数量。
如果您将数据转换为稀疏矩阵、One Hot Encoding 等技术,然后使用任何特征选择技术(Forward/backward 选择、套索),您将获得更好的结果。希望这对您有所帮助!
我是机器学习的新手,正在尝试编写一个线性回归算法,其中我有一个分类特征 - 关键字。我的模型中可以有大约 1000 万个关键字。
按照此处给出的说明 - http://www.psychstat.missouristate.edu/multibook/mlt08m.html
看来我应该对分类特征进行二分法。这是否意味着我将有 23 个特征变量(具有 10M 级别的虚拟编码)?
这是处理这种情况的最佳方式吗?
是的。您基本上将拥有 1000 万个预测变量。如果你正在做 regression/classification ,这是不可避免的,除非你想将 "similar" 关键字组合在一起以减少预测变量的数量。例如。您可以将 keyword_1、keyword_2、keyword_3 组合成一个关键字,如果它们之间有特定的关系等等。
要减少如此庞大的关键字数量 (10 M),您可以使用 LASSO (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html) and RIDGE (http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Ridge.html) 惩罚等技术。这个想法是,这 10 M 个预测变量中的大部分对于预测结果并不重要,因此您希望在学习阶段的早期删除它们以提高可解释性并避免结果过度拟合。
严格来说RIDGE是为了避免过拟合,LASSO是为了减少预测变量的数量。
如果您将数据转换为稀疏矩阵、One Hot Encoding 等技术,然后使用任何特征选择技术(Forward/backward 选择、套索),您将获得更好的结果。希望这对您有所帮助!