如何使用多类 Vowpal Wabbit 获得对分类预测的信心

机器算法验证 不确定 多级 vowpal-wabbit
2022-03-29 16:48:24

我有一个分类问题,我正在使用--ect多类算法的选项。

分类器的输出如下:

1.000000 805848386108096
2.000000 133087140195133
2.000000 598100953597523
3.000000 629273927146079
2.000000 547637911979064
1.000000 733923413306849

第一部分是类(1 到 3),第二部分是我的标签/ID。

有没有办法获得每个预测的“置信度”水平?例如,如果置信度低于某个阈值,我想将该示例保留为“未分类”。

1个回答

不幸的是,由于 ECT 中的过滤器树/消除实现,获得置信度的度量并不是直截了当的。如果您可以牺牲一些速度,使用带逻辑损失的 -oaa 和 -r (--raw_predictions) 选项可为您提供原始分数,您可以将其转换为相对“信心”的标准化度量。假设您在“ect.dat”中有这样的文件:

1 ex1| a
2 ex2| a b
3 ex3| c d e
2 ex4| b a
1 ex5| f g

我们运行一对一:

vw --oaa 3 ect.dat -f oaa.model --loss_function logistic

然后使用原始分数输出运行预测:

vw -t -i oaa.model ect.dat -p oaa.predict -r oaa.rawp

您可以在 oaa.predict 中获得预测:

1.000000 ex1
2.000000 ex2
3.000000 ex3
2.000000 ex4
1.000000 ex5

和 oaa.rawp 中每个班级的原始分数:

1:0.0345831 2:-0.0888872 3:-0.533179 ex1
1:-0.241225 2:0.170322 3:-0.749773 ex2
1:-0.426383 2:-0.502638 3:0.154067 ex3
1:-0.241225 2:0.170322 3:-0.749773 ex4
1:0.307398 2:-0.387151 3:-0.502747 ex5

您可以使用这些映射它们1/(1+exp(-score)),然后以各种方式标准化以获得如下内容:

1:0.62144216 2:0.5328338 3:0.20096953 ex1
1:0.57251362 2:0.71125717 3:0.1433303 ex2
1:0.37941591 2:0.29294807 3:0.66095287 ex3
1:0.57251362 2:0.71125717 3:0.1433303 ex4
1:0.72177734 2:0.37525053 3:0.2704246 ex5

一旦您对一个非常大的数据集进行评分,您可以以 0.1 为步长绘制阈值,例如,如果使用该阈值进行评分,则相对于正确百分比,以了解什么阈值将为您提供 95% 的正确率1,以此类推。

这个讨论可能有用。