Scikits Learn:线性核 SVM 中的特征权重

Posted

技术标签:

【中文标题】Scikits Learn:线性核 SVM 中的特征权重【英文标题】:Scikits Learn: feature weight in Linear kernel SVM 【发布时间】:2012-06-19 23:49:03 【问题描述】:

我正在处理文本分类问题(情感分析)。我想知道 scikit-learn 中是否有任何选项可以为特征添加“权重”(作为重要性的衡量标准)。我检查了文档,发现the attribute "coefs" of SVC,定义如下:

    coef_   array, shape = [n_class-1, n_features]  
    Weights asigned to the features (coefficients in the primal problem). 
   This is only available in the case of linear kernel.coef_ is readonly property derived from dual_coef_ and support_vectors_ 

但是,这个属性似乎是只读的。

【问题讨论】:

【参考方案1】:

coef_ 向量是机器学习算法学习到的参数的视图。手动设置它们没有意义,因为它们会自动根据数据进行优化调整。你可以做的是:

如果您事先知道某些类比其他类更重要,请设置 class_weight

如果您事先知道某些样本(数据集中的行)比其他样本更重要,请设置 sample_weight

重新调整特征以使某些特征比其他特征具有更大的方差,例如,如果您使用 RBF 内核并希望使某些特征比其他特征更重要(通常最好将所有特征缩放到单位方差)

如果您使用内核并希望以这种方式编码特殊的先验知识,请使用自定义的预计算内核。

对于文本分类,数据非常暗淡,内核通常只是在浪费资源而很少或根本没有增加预测准确性,因此最后两点可能与您的具体问题无关。

【讨论】:

以上是关于Scikits Learn:线性核 SVM 中的特征权重的主要内容,如果未能解决你的问题,请参考以下文章

在 python scikit-learn 中,RBF 内核的性能比 SVM 中的线性差得多

如何不让一个超平面影响多类线性核 SVM 中的决策?

机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)

支持向量机SVM(3)核函数、非线性支持向量机

机器学习——支持向量机(SVM)

python scikits 学习 - SVM 选项