随机森林或其他机器学习技术

问题描述 投票:0回答:3

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

python machine-learning random-forest
3个回答
1
投票

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

特征重要性取决于您的模型;通过回归,您的系数很重要,在随机森林中,您可以使用(但有些人不推荐)内置

feature_importances_
或更好的
SHAP
值。此外,您还可以使用一些相关性,即您的特征和目标之间的 Spearman/Pearson 相关性。

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

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


1
投票

我的想法如下。您的结果变量“Y”只有几个可能的值。您可以构建一个分类器(随机森林是许多现有分类器之一),来预测“[25-94,95-105,106-150] 中的 Y”。您将在这里得到三种不同的结果,并且相互排斥。 (除

95
105
之外的其他间隔限制也是可能的,如果这更适合您的应用)。

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.