嵌入数值类别

我有一个基本的LSTM模型,通过输出6个类别的概率分布来对输入数据进行分类。没什么特别复杂的。

现在,模型运作正常并给我一个输出,我会取最大值来对输入进行分类。然而,我认为我们可以做得更多。

对我来说,与其看到实际类别,不如看到LSTM输出的概率分布更加有用;比如说

[ 0.0528042 ,  0.11904617,  0.27744624,  0.37874526,  0.13942425,         0.03253399]

因为这些信息可以告诉我第二好的猜测,第三好的猜测等等,以及LSTM对其标记为某个类别的信心程度。

有趣的是,我的类别之间非常相关;比如说,如果类别1和2对应于“非常大值”和“大值”,我知道我的值很大,而类别3和4对应于“小值”和“非常小值”。

有没有什么方法可以利用类别之间的密切关系来获得更好的输出?当然,我不希望简单地只有两个输出(“大”和“小”),因为概率分布对我来说非常重要。


回答:

需要实现一个自定义损失函数来编码类间关系。

假设你的6个类别是按顺序排列的(比如,["极大", "很大", "大", "小", "很小", "极小"]),一个合适的损失函数可能是1D-Wasserstein距离(也称为地球移动距离)。

一维EMD有一个闭合形式的公式。例如,你可以尝试实现这篇论文中描述的内容。

1D-EMD

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中创建了一个多类分类项目。该项目可以对…

发表回复

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