专门使用机器学习进行特征分析,而不是预测

数据挖掘 机器学习 scikit-学习
2021-10-10 12:23:38

我是机器学习的新手,在过去的几个月里,我一直在使用 Sci-Kit Learn 来尝试了解构建功能集和预测模型的基础知识。

现在我尝试在数据集上使用 ML 不是为了预测未来值,而是为了了解每个特征的重要性和方向(正面或负面)。

我的特征 (X) 是描述产品的布尔值和整数值。我的目标 (y) 是产品的销售量。我有大约 15,000 条观察结果,每条有 16 个特征。

到目前为止,我的机器学习知识有限,我相信我可以根据一组新的特征 X 预测(以一定程度的准确度)新的 y。但是,我正在努力连贯地识别、报告和呈现组成 X 的每个特征的重要性和方向

到目前为止,我采取了两步方法:

  1. 使用线性回归观察系数
  2. 使用随机森林观察特征重要性

代码

首先,我尝试了解每个功能的方向性影响:

from sklearn import linear_model
linreg = linear_model.LinearRegression()
linreg.fit(X, y)
coef = linreg.coef_
...

其次,我尝试了解每个功能的重要性:

from sklearn import ensemble
forest = ensemble.RandomForestRegressor()
forest.fit(X, y)
importance = forest.feature_importances_
...

然后我将每个特征的两个派生值相乘,最后得到一些值,这可能是我正在寻找的信息!

我很想知道我是否走在正确的轨道上。这是 ML 的常见用例吗?是否有我应该关注的工具、想法、包来帮助指导我?

非常感谢你。

1个回答

您不需要线性回归来理解随机森林中特征的影响,您最好直接查看部分依赖图,这是当您将所有变量固定时得到的结果,并且您可以改变一个时间。您可以使用sklearn.ensemble.partial_depence.plot_partial_dependence. 查看文档以获取有关如何使用它的示例。

另一种可用于探索性数据分析的模型是DecisionTreeClassifier,您可以使用export_graphviz