Scikit-
learn在内部使用LibSVM,而这又使用了Platt缩放(如LibSVM作者在本说明中所述)来校准SVM以产生除类预测之外的概率。
普拉特缩放需要首先像往常一样训练SVM,然后优化参数向量 A 和 B ,使得
P(y|X) = 1 / (1 + exp(A * f(X) + B))
f(X)样品到超平面的有符号距离在哪里(scikit-
learn
decision_function方法)。您可能会在此定义中认识到逻辑乙状结肠,这与逻辑回归和神经网络用于将决策函数转换为概率估计的功能相同。
请注意:
B参数“截距”或“偏差”或您喜欢调用的任何参数,都可能导致基于该模型的概率估计进行的预测与您从SVM决策函数获得的预测不一致
f。例如,假设
f(X)= 10,则对的预测为
X正;但是如果
B = -9.9和
A = 1,那么
P(y|X) =.475。我凭空想出这些数字,但是您已经注意到,这实际上可能会发生。
实际上,Platt缩放可在交叉熵损失函数下,在SVM输出的顶部训练概率模型。为了防止此模型过度拟合,它使用内部五重交叉验证,这意味着使用SVM训练SVM
probability=True可能比原始的非概率SVM昂贵得多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)