gpt4 book ai didi

python - 支持向量机,scikit-学习 : Decision values with RBF kernel

转载 作者:行者123 更新时间:2023-11-28 22:51:12 28 4
gpt4 key购买 nike

我在某处读到,不可能在非线性内核上解释 SVM 决策值,因此只有符号很重要。但是,我看到几篇文章对决策值设置了阈值(尽管使用 SVMlight)[1] [2]。所以我不确定对决策值设置阈值是否合乎逻辑,但我对结果很好奇。

所以,LibSVM python 接口(interface)在调用 predict() 时直接返回具有预测目标的决策值,有没有办法用 scikit-learn 做到这一点?我已经使用 svm.SVC() 训练了一个二元分类 SVM 模型,但现在卡在那里了。

在源代码中,我发现 svm.libsvm.decision_function() 函数被注释为“(libsvm 名称为 predict_values)”。然后我看到了 svm.SVC.decision_function() 并检查了它的源代码:

    dec_func = libsvm.decision_function(
X, self.support_, self.support_vectors_, self.n_support_,
self.dual_coef_, self._intercept_, self._label,
self.probA_, self.probB_,
svm_type=LIBSVM_IMPL.index(self._impl),
kernel=kernel, degree=self.degree, cache_size=self.cache_size,
coef0=self.coef0, gamma=self._gamma)

# In binary case, we need to flip the sign of coef, intercept and
# decision function.
if self._impl in ['c_svc', 'nu_svc'] and len(self.classes_) == 2:
return -dec_func

它似乎在做 libsvm 的预测等价物,但如果它等价于 ,为什么它会改变决策值的符号?

此外,是否有任何方法可以使用此值或任何预测输出来计算 SVM 决策的置信度值(概率估计和 Platt 方法除外,我的模型在计算概率估计时效果不佳)?或者正如人们所争论的那样,唯一的符号对非线性核中的决策值很重要?

[1] http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0039195#pone.0039195-Teng1

[2] http://link.springer.com/article/10.1007%2Fs00726-011-1100-2

最佳答案

It seems like it's doing the libsvm's predict equivalent, but why does it changes the sign of decision values, if it's the equivalent of ?

这些只是关于类符号内部表示的实现技巧。没什么好担心的。

sklearn decision_function是SVM的超平面w之间的内积值和你的数据 x (可能在内核诱导空间中),所以你可以使用它,转移或分析。然而,它的解释非常抽象,因为在 rbf 内核的情况下,它只是以 x 为中心的正态分布乘积的积分。方差等于 1/(2*gamma)以及以支持向量(和相同方差)为中心的正态分布的加权和,其中权重为 alpha系数。

Also, is there any way to calculate confidence value for an SVM decision using this value or any prediction

使用 Platt 缩放并不是因为有一些“游说者”迫使我们这样做 - 只是这是估计 SVM 置信度的“正确”方法。但是,如果您对“概率感”置信度不感兴趣,而是可以使用任何可以定性比较的值(哪个点更有信心)而不是决策函数来进行比较。它大致是核空间中的点图像与分离超平面之间的距离(直到归一化常数为 w 的范数)。所以这是真的,

abs(decision_function(x1)) < abs(decision_function(x2)) => x1不如x2自信.

简而言之 - 越大 decision_function值,该点在其超平面中的“深度”。

关于python - 支持向量机,scikit-学习 : Decision values with RBF kernel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800301/

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