0

我对随机森林有疑问。想象一下,我有关于用户与物品交互的数据。项目数量很大,大约为10 000个。我的随机森林输出应该是用户可能与之交互的项目(如推荐系统)。对于任何用户,我想使用描述用户过去已与之进行交互的项目的功能。但是,将分类产品功能映射为单热编码看起来效率非常低,因为用户最多只能与几百个项目进行交互,有时甚至可能只有5个。XGBoost/CatBoost中含有大量类别的分类变量

您将如何去关于构建一个随机森林时,其中一个输入要素是一个具有〜10000个可能值的分类变量,输出是一个具有〜10000个可能值的分类变量?我应该使用CatBoost作为分类的功能吗?或者我应该使用单热编码,如果是的话,您认为XGBoost或CatBoost更好吗?

+0

在https://datascience.stackexchange.com/上查询可能会更好 - 它似乎比关于代码更理论一些? – josh

+0

好的,那就试试,谢谢 –

回答

0

假设您有足够的专业知识,您可以从现有列创建新的分类列。 例如: - 如果列有以下值

A,B,C,D,E,F,G,H 

,如果你知道A,B,C都差不多d,E,F都差不多,G,H类似 新列将

Z,Z,Z,Y,Y,Y,X,X. 

在你的随机森林模型中,你应该删除前一列,并且只包含这个新列。通过改变你的功能,你会失去你的模式的可解释性。

0

XGBoost不直接支持分类特征,您需要执行预处理以将其与c​​atfeatures一起使用。例如,你可以做一个热门的编码。如果您的猫功能有一些频繁的值,则单热编码通常效果很好。

CatBoost确实具有分类特征支持 - 无论是单热编码还是对分类特征的不同统计信息的计算。要使用单热编码,您需要使用one_hot_max_size参数启用它,默认情况下,会计算统计信息。对于具有许多值的分类特征,统计通常更好。