【问题标题】:Python - Decision Trees and Handling Unique Labels/featuresPython - 决策树和处理独特的标签/特征
【发布时间】:2017-07-11 10:33:47
【问题描述】:

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

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

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

【问题讨论】:

  • 是的,您描述的第二个选项(一个 - 热编码)是我对您的描述的建议
  • 这似乎是一项艰巨的工作,如果我需要扩展到数千个客户,这是最好的方法吗?
  • 因为我使用的是 pandas,所以我猜 get_dummies 函数可能是我最好的选择?
  • 您已经很好地描述了您自己的解决方案:您需要使用一种工具,允许您将 ID 排除在分析功能之外。

标签: python machine-learning scikit-learn feature-selection


【解决方案1】:

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

您可以做的只是在传递其余功能之前从决策树中分离出那条信息,然后在生成后重新合并 ID 和预测。

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

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

【讨论】:

  • 好吧,事情就是这样。这显然是基于监督学习,但有可能,但我不确定每个客户的结果可能略有不同。这是我需要测试的东西,因为如果我使用单热编码之类的东西并且它给客户端带来了不好的结果,我会把它扔掉。但是,根据您上面的评论,我将反向执行此操作,并且不会使用 one-hot。我会做一些测试来衡量准确性,如果它不起作用,我会探索其他选项。
  • 一次性编码是个好主意,但用户 ID 在任何情况下都很少是好的分类特征。如果您在我注册之前(或之后)两周注册 StackOverflow,这是否有助于对我们作为用户进行预测?答案几乎总是“不”。
猜你喜欢
  • 1970-01-01
  • 2016-09-04
  • 2021-11-05
  • 2018-05-15
  • 2017-11-09
  • 2019-10-16
  • 2016-07-29
  • 2021-07-25
  • 2015-08-13
相关资源
最近更新 更多