gpt4 book ai didi

C++ 支持 vector 机 (SVM) 模板库?

转载 作者:太空宇宙 更新时间:2023-11-04 15:35:47 26 4
gpt4 key购买 nike

我有一个来自自定义抽象对象的数据集和一个自定义距离函数。是否有任何好的 SVM 库允许我训练我的自定义对象(不是 2d 点)和我的自定义距离函数?

我在 this similar stackoverflow question 中搜索了答案,但它们都不允许我使用自定义对象和距离函数。

最佳答案

要事第一。

SVM 不适用于距离函数,它只接受点积。所以你的距离函数(实际上是相似性,但通常 1 距离是相似性)必须:

  • 对称s(a,b)=s(b,a)
  • 是正定的s(a,a)>=0, s(a,a)=0 <=> a=0
  • 在第一个参数中是线性的 s(ka, b) = k s(a,b)s(a+b,c) = s(a,c) + s(b,c)

这可能很难检查,因为您实际上会问“是否存在从我的对象到某个 vector 空间的函数,phi 使得 s(phi(x), phi(y)) 是一个点积,从而导致所谓的 的定义内核, K(x,y)=s(phi(x), phi(y)) .如果您的对象本身就是 vector 空间的元素,那么有时放置 phi(x)=x 就足够了因此K=s , 但一般情况下并非如此。

一旦您拥有这种相似性,几乎所有 SVM 库(例如 libSVM)都可以提供 Gram 矩阵。简单定义为

G_ij = K(x_i, x_j)

因此需要O(N^2)内存和时间。因此,您的对象是什么并不重要,因为 SVM 仅适用于成对点积,仅此而已。

如果您寻找合适的数学工具来显示此属性,可以做的是寻找从相似性中学习的内核。这些方法能够创建行为类似于您的相似性的有效内核。

关于C++ 支持 vector 机 (SVM) 模板库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34218143/

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