Python - 决策树和处理唯一性 Labels/features

Python - Decision Trees and Handling Unique Labels/features

不确定标题是否完全有意义,对此深表歉意。 我是机器学习的新手,正在使用 Scikit 和决策树。

这是我想做的;我想接受我的所有输入并包含一个独特的功能,即客户端 ID。现在,客户端 ID 是唯一的,不能以决策树分析中的特征的正常方式进行总结。现在发生的事情是,树将客户端 ID 作为任何其他整数值,然后将其分支,例如,客户端 ID 小于 430 的路径与 430 以上的路径不同。这是不正确的,不是我想要的去做。我想做的是让决策树明白特定领域不能以这种方式分析,每个客户都会有自己的分支。这对决策树来说可能吗?

我确实有几个解决方法,其中之一是为每个客户开发独特的决策树,但训练这将是一场噩梦。我还可以做另一种解决方法,假设我们有 800 个客户,我会用一个位字段创建 800 个特征,但这也很疯狂。

这是机器学习中一个相当普遍的问题。在任何情况下,机器学习功能都不可能对每个实例都是唯一的。直觉上这是有道理的;如果算法不能从该特征推断出任何东西,它就不会 学习 任何东西。

你能做的就是在传递其余特征之前,将那条信息从决策树中分离出来,然后在做出预测后重新合并 ID 和预测。

我强烈反对对特征向量进行任何形式的操作以包含任何形式的 ID。特征应该只是算法用来做决定的东西。不要给它你不希望它使用的信息。您希望避免使用 ID 作为特征是正确的,因为(很可能)ID 与您尝试预测的任何内容都没有关系。

如果您确实想要单独的模型(并且为每个用户准备了足够的数据来制作它们),这并不像您想象的那么痛苦。您可以使用 Scikit 的 model saving feature and this answer on saving pickles to MySQL 轻松创建和存储个性化模型。除非您拥有大量用户,否则创建个性化决策树应该不会花费很长时间。