如何测量数据框中特征之间的差异?
How to Measure the difference between features in dataframe?
我有一个包含大约 20000 行和 98 个特征(所有特征都是数字)的数据框和一个具有二进制值的目标特征:0 和 1。基本上,有两个总体(目标值为 1 的第一个总体 - 50%--,第二个与目标值 0 -50%- 平衡的数据)。在分类问题中,我试图预测给定数据的目标值。所以,我植入了一个监督学习算法(例如SVM)来预测目标值,并且可以得到非常好的结果,准确率在0.95左右。这个结果给我一个观点,即这些特征之间存在相当大的差异。因此,在下一步中,我必须知道造成这种差异的 重要特征 是什么,以及量化这两组人群之间特征差异的最佳方法是什么。有什么想法吗?
要按重要性对功能进行排名,您可以使用 Weka with its powerful toolkit for feature selection. See this blogpost 获取更多信息和示例。顺便说一下,Weka 也有 SVM 实现。一旦你确定了重要的特征,你就可以想象它们在这两个 类 之间有多么不同,例如通过绘制 类 的分布图。 Matplotlib 有类似 hist
或 boxplot
的工具。
如果你有带线性核的支持向量机,你可以使用它的系数作为输入特征的直接决策权重:
除了使用模型中支持向量的系数外,您还可以尝试构建其他模型。
决策树方法将明确地向您显示哪些输入特征拆分了数据 - 对于一些重要的定义,靠近根的特征更重要。
如果您尝试使用 PCA 等特征缩减技术并重建您的模型,此处组件的系数将告诉您哪个贡献最大。
或者您可能完全是个暴徒,构建了很多模型而忽略了一些特征,然后看看哪个更好。
或者你可以是横向的,考虑一下你的模型没有准确分类的几个点有什么不同。
您可以尝试使用 KS-test 测试您的功能吗?例如,功能 1,按 class 拆分。然后你得到两组。然后测试它们是否来自不同的分布或只记录 p 值。
当您拥有所有测试结果或 p 值时,使用来自不同分布/非常低 p 值的样本制作另一个模型。看看新型号是否更好或相似。
不确定这是否有所作为。
想发表评论但不能这样做。
我有一个包含大约 20000 行和 98 个特征(所有特征都是数字)的数据框和一个具有二进制值的目标特征:0 和 1。基本上,有两个总体(目标值为 1 的第一个总体 - 50%--,第二个与目标值 0 -50%- 平衡的数据)。在分类问题中,我试图预测给定数据的目标值。所以,我植入了一个监督学习算法(例如SVM)来预测目标值,并且可以得到非常好的结果,准确率在0.95左右。这个结果给我一个观点,即这些特征之间存在相当大的差异。因此,在下一步中,我必须知道造成这种差异的 重要特征 是什么,以及量化这两组人群之间特征差异的最佳方法是什么。有什么想法吗?
要按重要性对功能进行排名,您可以使用 Weka with its powerful toolkit for feature selection. See this blogpost 获取更多信息和示例。顺便说一下,Weka 也有 SVM 实现。一旦你确定了重要的特征,你就可以想象它们在这两个 类 之间有多么不同,例如通过绘制 类 的分布图。 Matplotlib 有类似 hist
或 boxplot
的工具。
如果你有带线性核的支持向量机,你可以使用它的系数作为输入特征的直接决策权重:
除了使用模型中支持向量的系数外,您还可以尝试构建其他模型。
决策树方法将明确地向您显示哪些输入特征拆分了数据 - 对于一些重要的定义,靠近根的特征更重要。
如果您尝试使用 PCA 等特征缩减技术并重建您的模型,此处组件的系数将告诉您哪个贡献最大。
或者您可能完全是个暴徒,构建了很多模型而忽略了一些特征,然后看看哪个更好。
或者你可以是横向的,考虑一下你的模型没有准确分类的几个点有什么不同。
您可以尝试使用 KS-test 测试您的功能吗?例如,功能 1,按 class 拆分。然后你得到两组。然后测试它们是否来自不同的分布或只记录 p 值。
当您拥有所有测试结果或 p 值时,使用来自不同分布/非常低 p 值的样本制作另一个模型。看看新型号是否更好或相似。
不确定这是否有所作为。 想发表评论但不能这样做。