如何最好地在多个标签上显示最佳模型?
数据挖掘
机器学习
评估
模型选择
绘图
2022-01-22 20:12:09
3个回答
由于您对每个标签上模型的相对排名感兴趣,您可以使用它ArrayPlot来显示排名。
例如,四个模型在一组 45 个标签上的预测成功。
SeedRandom[126]
modelLabels = 0.75 + RandomFunction[WienerProcess[-0.01, .08], {0, 45, 1}, 4];
modelLabels = TimeSeriesWindow[modelLabels, {1, Automatic}];
ListLinePlot[modelLabels,
PlotStyle -> ColorData[112],
PlotLegends -> StringTemplate["ba``"] /@ Range[2, 5]]
对于First标签
First@Transpose@modelLabels["ValueList"]
{0.648211, 0.743796, 0.68795, 0.720637}
我们可以看到Orderingfor rank 应该是模型 2、4、3,然后是 1。模型排序的检查确认。
modelLableRank = Reverse@*Ordering /@ Transpose@modelLabels["ValueList"];
First@modelLableRank
{2, 4, 3, 1}
这些等级现在可以用 可视化ArrayPlot。
ArrayPlot[Transpose@modelLableRank,
ColorRules -> Thread[Range@4 -> ColorData[112] /@ Range@4],
FrameTicks -> All,
FrameLabel -> {"Rank", "Label"},
PlotLabel -> "Model Prediction Sucess",
PlotLegends -> Placed[StringTemplate["ba``"] /@ Range[2, 5], Below]
]
第一个标签排名符合预期,可以看到相对排名和排名模式。
希望这可以帮助。
您可以使用一些指数,例如(可能是加权的)平均值。
另一种方法是使用 3 维图,其中一个维度是任务。
为了比较模型,您需要为模型的质量定义一个指标。
您没有指定,但我假设您的模型是一个多类分类器:在 45 个标签中,对于每个示例,它需要选择正确的一个。
您可以计算每个标签与其他标签的模型的 F1 分数:它能够正确预测标签 0 与不预测标签 0 的频率?(这被称为“一对多”策略。)这将为每个模型提供 45 个 F1 分数:每个标签一个 F1 分数。您显示的图表明所有标签或多或少都同等重要,因此您可以平均每个模型的 F1 分数,这将为您提供每个模型质量的指示。如果标签的重要性不同,请根据重要性使用加权平均值。
请注意,您显示的图只是说每个模型预测标签 0 大约 28 次,但没有关于这多久正确的信息......
其它你可能感兴趣的问题



