我正在尝试做一些需要大量因素型变量(例如单词、描述、时间等非数值型内容)的机器学习。通常我会使用randomForest
,但它无法处理具有超过32个级别的因子。
请问是否有其他好用的替代方案?
我正在尝试做一些需要大量因素型变量(例如单词、描述、时间等非数值型内容)的机器学习。通常我会使用randomForest
,但它无法处理具有超过32个级别的因子。
请问是否有其他好用的替代方案?
树方法不适用,因为可能的拆分数量随层级增加呈指数增长。但是,对于单词,通常会创建每个单词(如描述等)的指示器变量来解决这个问题 - 这样拆分可以一次使用一个单词(是/否),而不是选择所有可能的组合。通常,您可以将级别扩展为指标(某些模型隐式执行此操作,例如glm)。在ML中处理文本时,使用其他方法(例如SVM等)也是如此。因此,答案可能是您需要考虑输入数据结构,而不是方法。或者,如果您对级别有某种顺序,则可以将其线性化(因此只有个拆分)。
总的来说,我发现在存在大量因子水平的情况下,最好的软件包是使用gbm
软件包。
它可以处理高达1024个因子级别。
如果超过1024个级别,通常我会通过保留最常出现的1023个因子级别并将其余级别编码为一个级别来更改数据。