Python – 决策树与处理唯一标签/特征

如果标题不太明确,我对此表示歉意。我是机器学习的新手,正在使用Scikit和决策树进行学习。

我想做的是,将所有输入数据包括一个独特的特征,即客户ID。现在的问题是,客户ID是唯一的,不能像决策树分析中的其他特征那样进行总结。目前,决策树将客户ID视为普通整数值进行分支,例如,ID小于430的客户走一条路径,大于430的走另一条路径。这显然是不正确的,也不是我想要的。我希望决策树能够理解这个特定字段不能这样分析,每个客户应该有自己的分支。这在决策树中是可能实现的吗?

我有一些变通方法,其中一个是为每个客户开发独特的决策树,但这样训练起来将是一场噩梦。另一个方法是,假设我们有800个客户,我将创建800个带有位字段的特征,但这也太疯狂了。


回答:

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

你可以做的就是在将其他特征传递给决策树之前,将这部分信息分离出来,然后在做出预测后再将ID和预测结果重新合并。

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

如果你确实想要个性化模型(并且对每个用户有足够的数据来创建它们),这并没有你想象的那么麻烦。你可以使用Scikit的模型保存功能以及这个关于将pickle保存到MySQL的回答,轻松创建和存储个性化模型。除非你有大量用户,否则创建个性化的决策树应该不会花费太多时间。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注