gpt4 book ai didi

python - 混淆OneClassSVM的 "dual_coef_"

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:09 24 4
gpt4 key购买 nike

我读过关于one-class-svm的论文“估计高维分布的支持度” sklearn 中提供了。

我注意到对偶变量有一个约束:Σ_i α_i =1。

但是当我尝试调用 api clf._dual_coef_ 时,我发现 clf._dual_coef_ 的总和不是 1。

我是否错过了任何细节?

谢谢

最佳答案

结果

对于一类 SVM,LIBSVM解决了每个 α_i 乘以 (νℓ) 的缩放问题,其中 ν 是超参数,ℓ 是实例数。因此约束条件变为 α_i≤1 且 Σ_i α_i = νℓ。

<小时/>

原因

LIBSVM 的第 2.3 节中

Similar to the case of ν-SVC, in LIBSVM, we solve a scaled version of (7).

引用第 2.2 节(ν-支持向量分类)中的内容

In LIBSVM, we solve a scaled version of problem (5) because numerically α_i may be too small due to the constraint α_i≤1/ℓ.

因此,对于一类 SVM,LIBSVM 解决了缩放问题,因为由于约束 α_i≤1/(νℓ),α_i 在数值上可能太小。

<小时/>

验证

具体来说,因为问题是关于sklearn的,所以我修改了here中的代码确认想法,尽管根据我的理解sklearn.svm.OneClassSVM在后端使用 LIBSVM。

from sklearn.svm import OneClassSVM
from sklearn.datasets import load_boston

X = load_boston()['data'][:, [8, 10]]
clf = OneClassSVM(nu=0.261, gamma=0.05)
clf.fit(X)

print(clf.nu*X.shape[0])
print(clf._dual_coef_.sum())

给出

132.066
132.06599999999918

关于python - 混淆OneClassSVM的 "dual_coef_",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56966678/

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