如何找到每个类最重要的属性

数据挖掘 机器学习 神经网络 深度学习 特征选择 多类分类
2022-02-22 05:41:49

我有一个包含 28 个属性和 7 个类值的数据集。我想知道是否有可能为每个类找出决定类值的最重要的属性。

例如,答案可能是:属性 2 对 1 类最重要,属性 6 对 2 类最重要,等等。或者更明智的答案可能是:属性 2 低于 0.5 对 1 类最重要,属性 6 是高于 0.75 对 2 类等最重要

我最初的方法是在数据上构建一个决策树,并找到每个类具有最大信息增益/增益比的节点,这将是该类的最决定因素。问题是我发现的决策树实现没有给出每个节点的信息增益/增益比,因为这是时间限制,我没有时间实现我自己的版本。我目前的想法是创建多个数据集,这些数据集都是一个类而不是其他类,然后对它们执行属性选择(例如信息增益)以找到最重要的属性。这是向下的正确方向还是他们更好的选择?

4个回答

如果您必须为每个类拆分数据集,那么我建议您尝试 PCA。主成分分析基本上用于降维,因为它为您提供了最能代表数据分布的属性子集。您可以将它用于所有类,并以这种方式获得影响类数据分布的最佳属性。

让我们这样说。确定不同特征和输出之间关系的最简单方法是使用协方差矩阵。您甚至可以可视化每个类的数据。看看下面的图片。

在此处输入图像描述

假设纵轴是输出,横轴是特征之一。如您所见,了解这些特征可以让我们了解输出的变化。现在,考虑下图。

在此处输入图像描述

在此图中,您可以看到考虑到这个典型特征并不会通知您输出的变化。

另一种方法可以使用PCA它自己找到合适的特征。它所做的是找到与输出更相关的重要特征的线性组合。

或者更明智的答案可能是:属性 2 低于 0.5 对 1 类最重要,属性 6 高于 0.75 对 2 类最重要,等等

一种方法是将连续变量离散化为直方图。此后,直方图的每个 bin都可以被视为一个单独的变量,并且可以使用标准决策树实现轻松找到其重要性,例如 sklearn 中提供_feature_importances属性的实现。这将使您深入了解每个变量的重要区域。

这在本文的图 9 中得到了证明

欢迎来到这个网站,内特!

对于每个班级,很难得到“哪个最重要”的答案,通常情况下,区别是“班级之间”而不是“特定班级”。

我使用来自 xgboost 的特征重要性,这种方法允许测量哪个特征参与了增强森林 xgboost 的更多树。甚至有可能绘制这些重要性,从而产生非常好的数据来显示。

XGBoost 中的特征重要性