machine-learning - ML.net 中多类多标签分类的每类加权损失
问题描述
我想对几个类进行分类,比如说 A、B、C 和 D,但数据集是不平衡的(A 类可以有 60% 的案例)。因此,ML.NET 中的多类分类算法倾向于预测 A.
这种不平衡的情况在我的问题的人群中很常见:A比其他人更频繁,B比C更频繁,C比D更频繁。现在,我对上/下采样不感兴趣数据集或增加数据集的大小来解决这个问题(除非没有其他选择)。
在我的问题中,成功预测 B 比预测 A 更有价值,预测 C 比 B 更有价值,预测 D 比 C 更有价值。所以我有兴趣按顺序给予 B、C 和 D 类更多的权重告诉算法承担更多风险并尝试预测其他类别。
但是我在 ML.Net 中找不到方法。我知道它可以用损失函数来完成,但没有太多关于它的信息,我在 ML.net 中找不到任何示例。我尝试实现自定义损失函数(类 CustomLoss:ISupportSdcaClassificationLoss、ISupportSdcaLoss、IScalarLoss、ILossFunction<float、float>、IClassificationLoss)并尝试将其注入(MulticlassClassification.Trainers.SdcaNonCalibrated)但没有成功,因为基本事实始终为 1 (它不代表真值类,所以我不知道我在计算哪个类)
有什么想法可以用 ML.net 解决这个问题吗?如果没有,C# 中是否有一些好的替代 ML.net 来解决这个问题?
解决方案
试试 Tensorflow.NET 作为一个很好的选择https://github.com/SciSharp/TensorFlow.NET
推荐阅读
- mysql - MySQL 使用 BETWEEN 不返回任何内容?
- docker - 如何协调多容器 (Docker) 系统中的集成测试?
- java - 如何防止一个方法在测试中调用另一个方法?
- excel - 如何在 4 个不同的工作表中找到 A 列中的差异
- r - 识别并替换数据框列表中所有数据框中存在的数值列的最小值
- c# - Window7 C# Debug & Release 程序,差异值(处理位图)
- python - 从 3.7 开始,字典中的 PopItem 返回最后插入的对。字典是无序的怎么办
- ios - 为什么设置曝光模式为 AVCaptureExposureModeContinuousAutoExposure 时无法自动更改曝光持续时间
- react-native - 如何修复'不变违规:使用带有 Expo 的 react-native-svg-charts 元素类型无效
- javascript - 如何通过数学公式计算斐波那契函数