【发布时间】:2017-08-04 02:52:59
【问题描述】:
我正在针对二进制分类问题评估一些机器学习模型,并在添加一个非二进制特征时遇到奇怪的结果。
我的数据集由推文和与它们相关的一些其他值组成,因此主要特征向量是使用 scikit-learn 的 Tf-idf Vectoriser 对推文和 SelectKBest 特征选择生成的稀疏矩阵(5000 列)。
我还有两个要添加的功能,它们都是 1 列密集矩阵。我将它们转换为稀疏并使用 scipy 的 hstack 函数将它们添加到主要特征向量中。这些功能中的第一个是二进制的,当我只添加一个时,一切都很好,我得到了大约 60% 的准确度。然而,第二个特征是整数值,添加它会导致不同的结果。
我正在测试逻辑回归、SVM (rbf) 和多项朴素贝叶斯。添加最终特征时,SVM 准确度提高到 80%,但对于 Logistic 回归,它现在总是预测相同的类别,而且 MNB 也非常偏向于该类别。
SVM confusion matrix
[[13112 3682]
[ 1958 9270]]
MNB confusion matrix
[[13403 9803]
[ 1667 3149]]
LR confusion matrix
[[15070 12952]
[ 0 0]]
谁能解释为什么会这样?我不明白为什么这个额外的功能会导致两个分类器有效地变得多余,但对另一个分类器的改进如此之多?谢谢!
【问题讨论】:
-
该功能的类别是否高度不平衡?
-
不,对于我测试过的所有数据,这些类都非常平衡,它总是给出这样的结果
标签: python machine-learning scipy scikit-learn svm