OneVsRestClassifier 的损失函数
Posted
技术标签:
【中文标题】OneVsRestClassifier 的损失函数【英文标题】:Loss function for OneVsRestClassifier 【发布时间】:2016-10-31 19:37:15 【问题描述】:我有一个经过培训的OneVsRestClassifier
(scikit-learn
)。
clf = OneVsRestClassifier(LogisticRegression(C=1.2, penalty='l1')).fit(X_train, y_train)
我想找出我的测试数据的损失。我使用了log_loss
函数,但它似乎不起作用,因为我有多个类作为每个测试用例的输出。我该怎么办?
【问题讨论】:
您的数据有多大,您使用的是哪个数据集? 我正在使用来自 ntlk.corpus 的“路透社”数据集。总共大约 10,000 个文档。 【参考方案1】:您所指的分类问题称为Multi-Label Classification 问题。为此,您做出了使用OneVsRestClassifier
的正确决定。默认情况下,score
方法使用 子集准确度,这是一个非常苛刻的指标,因为它要求您正确猜测标签的整个子集。
scikit-learn 提供的其他一些损失函数,您可以使用如下:
-
Hamming Loss - 这测量了您对标签的预测与真实标签之间的汉明距离。 This 是理解汉明距离的直观公式。
Jaccard Similarity Coefficient Score - 测量预测标签和真实标签之间的 Jaccard 相似度。
Precision, Recall and F-Measures - 在多标签分类的情况下,Precision、Recall 和 F-Measures 的概念可以独立应用于每个类。 following guide 解释了如何在多标签分类中跨所有标签组合它们。
如果您还需要像在多标签排名问题中那样对标签进行排名,那么 scikit-learn 中还有其他更高级的技术可用,这些技术在示例here 中有很好的记录。如果您正在处理此类问题,请在 cmets 中告诉我,我将更详细地解释这些指标。
希望这会有所帮助!
【讨论】:
我很高兴它对你有用。如果对您有帮助,您能否将其标记为已接受的答案?这也将帮助其他有同样疑问的人。谢谢。以上是关于OneVsRestClassifier 的损失函数的主要内容,如果未能解决你的问题,请参考以下文章
使用 OneVsRestClassifier 时如何传递 XGBoost 拟合参数?
如何用 OneVsRestClassifier 做 GridSearchCV?
GridSearch 用于 OneVsRestClassifier 中的估计器
OneVsRestClassifier(svm.SVC()).predict() 给出连续值