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 中的线性差得多