【问题标题】:building a feature set for scikit learn为 scikit learn 构建功能集
【发布时间】:2014-04-16 06:22:19
【问题描述】:

我使用RandomForestClassifier 进行概率预测任务。我有大约 50 个功能和两个可能的标签的功能集 - first team winssecond team wins

该功能集包含两个团队的功能,以及我构建它的方式,因为我知道哪支球队获胜,50% 的集合标记为第一队获胜,50% 标记为第二队获胜 - 具有各自的功能放置在特征集中的正确位置 - 对于训练数据中的每场比赛,最初将获胜球队作为第一个,我交换每个球队的特征并将标签更改为second team wins,使用计数器模2。

我看到的问题是,如果我将计数器更改为从 1 或 0 开始,最终预测会发生巨大变化,这意味着数据集是不对称的。为了解决这个问题,我尝试将每个匹配项按正常顺序添加两次,其中标签为 first team wins ,并反转为标签为 second team wins。问题是——这如何影响模型的行为?在进行此更改后,我看到了一些负面影响,尽管不足以在统计上显着。然而,它确实增加了构建特征集和拟合模型的运行时间。

随机化标签和团队顺序会是一种更可靠的方法吗?我有什么选择?

【问题讨论】:

  • 你能和我们分享一些你的代码吗?
  • @Bach - 提供用于复制的最小代码示例会很困难..

标签: python classification scikit-learn prediction


【解决方案1】:

由于您要相互比较相应的团队功能,因此另一种方法是减少:

TeamA: featureA1, featureA2, featureA3 ... featureAN
TeamB: featureB1, featureB2, featureB3 ... featureBN
Output: which team wins

到:

Input: featureA1-featureB1, featureA2-featureB2, featureA3-featureB3, ..., featureAN - featureBN
Output: positive if team A wins, negative if team B wins

并在此基础上训练您的分类器。这种方法的好处是您现在可以比较一半的功能,并且不再需要担心团队的顺序。

【讨论】:

  • 好的,这是一个值得探索的方法。但特征之间的边距与绝对值的信息不同。
  • 没错。我忘记补充的另一件事是,这种方法的适用性取决于您的功能是什么,以及以这种方式比较它们是否有意义。
  • 仅供参考,这被称为学习排名的成对减少。这是相当明智和普遍的。
猜你喜欢
  • 2015-08-13
  • 2017-07-26
  • 2018-10-27
  • 2014-08-09
  • 2017-06-08
  • 2013-04-25
  • 2018-09-22
  • 2014-03-02
  • 2015-06-15
相关资源
最近更新 更多