【问题标题】:Random Forest or other machine learning techniques [need advice]随机森林或其他机器学习技术 [需要建议]
【发布时间】:2020-12-05 11:45:30
【问题描述】:

我试图了解一些自变量之间的基本原理,并量化它们对因变量的重要性。我遇到了诸如随机森林之类的方法,它可以量化变量的重要性,然后预测结果。但是,我对要与随机森林或类似方法一起使用的数据的性质有疑问。下面提供了一个数据结构示例,正如您所见,时间序列有一些变量,例如人口和年龄,它们不会随时间变化,尽管不同城市之间存在差异。而温度和#internet 用户等其他变量随着时间和城市内部的变化而变化。我的问题是:如何量化这些变量对“Y”变量的重要性?顺便说一句,我更喜欢在 python 环境中应用该方法。

【问题讨论】:

  • 您需要将月份(日期)转换为整数,然后我推荐一个热门的城市变量。
  • @barker 你能详细说明为什么要使用 one-hot 方法吗?

标签: python machine-learning random-forest


【解决方案1】:

我的想法如下。您的结果变量“Y”只有几个可能的值。您可以构建一个分类器(随机森林是许多现有分类器之一),以预测说“Y in [25-94,95-105,106-150]”。您将在此处获得三种不同的结果,它们相互排除。 (除95105 之外的其他间隔限制也是可能的,如果这更适合您的应用程序)。

正如您所解释的,您的一些预测变量是时间序列,而其他预测变量是恒定的。您应该使用滑动窗口技术,您的分类器根据与时间相关的变量预测“Y”,例如 1 月份。一些变量是常数并不重要,因为实际变量“City”有四个结果:“[City_1,City_2,City_3,City_4]”。同样,使用 'Population' 和 'Age_mean' 作为实际变量。

一旦您使用分类器,就会开发出许多特征排名和特征选择的方法。您可以使用像 insight classifiers 这样的网络服务来为您完成这项工作,或者为此下载像 Weka 这样的软件包。

关键是您要组织模型及其预测变量,以便分类器可以正确学习。

【讨论】:

    【解决方案2】:

    “我如何量化重要性”是非常常见的问题,也称为“特征重要性”。

    特征重要性取决于您的模型;通过回归,您的系数很重要,在随机森林中,您可以使用(但有些人不推荐)内置 feature_importances_ 或更好的 SHAP-values。此外,您还可以使用 som correlaion,即您的特征和目标之间的 Spearman/Pearson 相关性。

    不幸的是,没有“免费午餐”,您需要根据自己的用途、数据的外观等来决定。

    我认为您遇到的可能是 Boruta,您可以在其中打乱变量,将它们添加到数据集中,然后根据随机森林中的“最佳打乱变量”创建阈值。

    【讨论】:

      【解决方案3】:

      如果城市和月份也是您的自变量,您应该将它们从索引转换为列。使用 pandas 读取您的文件,然后使用 df.reset_index() 可以为您完成这项工作。

      【讨论】:

      • 感谢您的回答,但我认为您误解了这个问题
      猜你喜欢
      • 1970-01-01
      • 2015-03-14
      • 2016-10-20
      • 2015-08-18
      • 2019-10-05
      • 2016-12-24
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多