【问题标题】:Determining the most contributing features for non -linear SVM regression in sklearn or any python library在 sklearn 或任何 python 库中确定对非线性 SVM 回归贡献最大的特征
【发布时间】:2020-03-14 12:09:12
【问题描述】:

我使用基于 RBF 内核的支持向量机回归训练了一个模型。我想知道对于基于 RBF 内核的支持向量机来说非常重要或主要贡献特性的特性。我知道有一种方法可以根据权重向量(向量的大小)来了解线性支持向量回归的最有贡献的特征。然而,对于基于 RBF 内核的支持向量机,由于特征被转换到一个新的空间,我不知道如何提取最有贡献的特征。我在 python 中使用 scikit-learn。有没有办法在基于 RBF 核的支持向量回归或非线性支持向量回归中提取贡献最大的特征?

from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'linear')

在这种情况下: Determining the most contributing features for SVM classifier in sklearn 效果很好。但是,如果内核更改为

from sklearn import svm
svm = svm.SVC(gamma=0.001, C=100., kernel = 'rbf')

上面的答案不起作用。

【问题讨论】:

标签: python scikit-learn jupyter-notebook


【解决方案1】:

让我对 cme​​ts 进行排序作为答案:

如你所见here:

分配给特征的权重(原始系数 问题)。这仅在线性内核的情况下可用。

但它也没有任何意义。在线性 SVM 中,生成的分离平面与您的输入特征在同一空间中。因此,它的系数可以看作是输入“维度”的权重。

在其他内核中,分离平面存在于另一个空间中 - 这是原始空间的内核变换的结果。它的系数与输入空间没有直接关系。事实上,对于 rbf 核,变换后的空间是无限维的。

正如 cmets 中提到的,您可以做的事情:

玩转特征(省略一些),看看准确性会如何变化,这会让您了解哪些特征很重要。

如果您使用其他分类器作为随机森林,您将获得其他算法的特征重要性。但这不会回答您的问题,这对您的 svm 很重要。所以这不一定能回答你的问题。

【讨论】:

    【解决方案2】:

    关于非线性 SVM 模型的检查(例如,使用 RBF 内核),我在这里分享一个发布在另一个线程中的答案,可能对此有用。

    该方法基于“sklearn.inspection.permutation_importance”。

    在这里,关于"permutation_importance" applied on SVM models 的意义的压缩讨论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-26
      • 2017-05-28
      • 2017-06-24
      • 2014-10-16
      • 2013-12-14
      • 2016-05-16
      • 2019-12-13
      • 2019-04-07
      相关资源
      最近更新 更多