scikit-learn 在软标签上的分类

根据文档,可以为SGDClassifier指定不同的损失函数。据我所知,log loss是一种cross-entropy损失函数,理论上可以处理软标签,即以某些概率[0,1]给出的标签。

问题是:是否可以直接使用带有log loss函数的SGDClassifier来处理带软标签的分类问题?如果不能——如何使用scikit-learn解决这个任务(在软标签上的线性分类)?

更新:

由于target的标记方式和问题的性质,硬标签无法取得好的结果。但这仍然是一个分类问题(不是回归),我希望保留prediction的概率解释,因此回归方法也不适用。交叉熵损失函数可以自然处理target中的软标签。似乎scikit-learn中所有线性分类器的损失函数只能处理硬标签。

所以问题可能是:

如何为SGDClassifier指定自己的损失函数,例如。看起来scikit-learn在这里没有采用模块化方法,需要在其源码中进行一些更改


回答:

根据文档

‘log’损失提供逻辑回归,这是一种概率分类器。

一般来说,损失函数的形式为Loss( prediction, target ),其中prediction是模型的输出,target是真实值。在逻辑回归的情况下,prediction(0,1)上的值(即“软标签”),而target01(即“硬标签”)。

所以回答你的问题,取决于你是指prediction还是target。一般来说,标签的形式(“硬”或“软”)由选择的prediction算法和手头target的数据决定。

如果你的数据有“硬”标签,并且你希望模型输出“软”标签(可以设定阈值得到“硬”标签),那么是的,逻辑回归属于这一类别。

如果你的数据有“软”标签,那么你需要选择一个阈值将它们转换为“硬”标签,然后使用典型的分类方法(即逻辑回归)。否则,你可以使用回归方法,其中模型被拟合以预测“软”目标。在后一种方法中,你的模型可能会给出(0,1)之外的值,这需要处理。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注