gpt4 book ai didi

python - SVM(一对多)中多类分类的置信度估计

转载 作者:行者123 更新时间:2023-12-04 08:31:50 24 4
gpt4 key购买 nike

使用 SVM-OVR (Ove-Vs-Rest) 进行多类分类时, 训练分类器,使用 等于类的数量。
第 i 个分类器基本上计算第 i 类和包含所有其他类的类之间的二元分类。
然后,为了预测一个新的数据样本,所有的 测试分类器,并根据为每个分类器估计的置信度,返回最可能的类。例如,class1 = 0.59,class2 = 0.61,依此类推,关联概率最大的将对应输出类。
我想知道每个分类器的置信度是如何计算的。我试图阅读 SVC 中的文档,但我看不到 predict函数评估每个分类器。换句话说,如果 class1 = 0.59,那么 0.59 是如何计算的?生成它的原始值是什么?样本到超平面的欧几里德距离?

最佳答案

这是通过 实现的普拉特缩放 (也称为普拉特校准)。
Platt Scaling 是一种算法,可将这些多个分类器的输出转换为类的概率分布。
它由以下给出:
enter image description here
其中 f(x) 是 SVM 输出,A 和 B 只是算法学习到的标量。
当然,Scikit-learn 可能会使用它的一个变体,但这是主要思想。
更多详情请引用original paper .

更新
根据您在下面的评论,f(x)只是分类器分数,即决策函数输出,对于 SVC,它是:f(x) = θᵀg(x) + b (权重乘以一些映射函数+一些偏差),其中f(x)的输出从分类器中获得。
现在,来自每个分类器的那些分数被插入到 Platt Scaling 算法中,以根据上面给出的公式将它们转换为概率。
请注意,Platt Scaling 是通过交叉验证执行的,以避免由于参数选择 A 可能发生的过度拟合。和 B在上面的 Platt 缩放公式中(因此它的计算成本可能更高)。另请注意,Scikit-learn 使用 libsvm为此,它是用 C 编写的。

关于python - SVM(一对多)中多类分类的置信度估计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64985698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com