dig*_*vee 5 machine-learning random-forest categorical-data xgboost catboost
我有一个关于随机森林的问题。想象一下,我有关于用户与项目交互的数据。项目数量很大,大约 10 000 个。我的随机森林输出应该是用户可能与之交互的项目(如推荐系统)。对于任何用户,我想使用一个描述用户过去交互过的项目的功能。然而,将分类产品特征映射为 one-hot 编码似乎内存效率非常低,因为用户最多与不超过几百个项目进行交互,有时甚至只有 5 个。
当输入特征之一是具有约 10 000 个可能值的分类变量并且输出是具有约 10 000 个可能值的分类变量时,您将如何构建随机森林?我应该使用具有分类特征的 CatBoost 吗?或者我应该使用 one-hot 编码,如果是这样,您认为 XGBoost 还是 CatBoost 更好?
小智 0
假设您有足够的领域专业知识,您可以从现有列创建新的分类列。例如:- 如果您的列具有以下值
A,B,C,D,E,F,G,H
Run Code Online (Sandbox Code Playgroud)
如果您知道 A、B、C 相似 D、E、F 相似并且 G、H 相似,您的新列将是
Z,Z,Z,Y,Y,Y,X,X.
Run Code Online (Sandbox Code Playgroud)
在您的随机森林模型中,您应该删除以前的列并只包含这个新列。通过像这样改变你的功能,你会失去模式的可解释性。