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

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

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

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


回答:

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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