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() 给出连续值

如何使用带有 SVC 估计器的 OneVsRestClassifier 的 GridSearchCV?

Sklearn:评估 GridSearchCV 中 OneVsRestClassifier 的每个分类器的性能