C++支持向量机(SVM)模板库
C++ support vector machine (SVM) template libraries?
我有一个来自自定义抽象对象的数据集和一个自定义距离函数。有没有什么好的SVM库可以让我在自定义对象(而不是二维点)和自定义距离函数上进行训练?
我在这个类似的stackoverflow问题中搜索了答案,但没有一个允许我使用自定义对象和距离函数。
第一件事。
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)
中是线性的
这可能很难检查,因为您实际上会问"是否有一个函数从我的对象到某个向量空间,phi使得s(phi(x), phi(y))
"是一个点积,从而导致所谓的内核,K(x,y)=s(phi(x), phi(y))
的定义。如果对象本身就是向量空间的元素,那么有时将phi(x)=x
设为K=s
就足够了,但一般情况下这是不正确的。
一旦有了这种相似性,几乎任何SVM库(例如libSVM
)都可以提供Gram矩阵。简称
G_ij = K(x_i, x_j)
因此需要CCD_ 10的内存和时间。因此,对象是什么并不重要,因为SVM只适用于成对点积,仅此而已。
如果您寻找合适的数学工具来显示此属性,那么可以做的就是从相似性中寻找内核学习。这些方法能够创建有效的内核,其行为与您的相似性相似。
查看以下内容:
- MLPack:一个提供大量功能的轻量级库
- DLib:一个非常流行的工具包,在工业界和学术界都有使用
除此之外,您还可以使用Python包,但可以从C++导入它们。
相关文章:
- 编译时未启用intel oneApi CUDA支持
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用CMake检测支持的C++标准
- 为什么istream不支持右值提取
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 扩展光电二极管探测器以支持多个传感器
- MSVC是否支持C++11样式的属性而不是__declspec
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 在 SVM-Struct 中未定义对 sqrt 的引用(已使用 -lm)
- 哪个C++规范开始支持 std::vector
- 如何检测VS C++编译器是否支持C++11?
- CertGetCertificateChain 具有支持的内存存储和证书信任列表
- Casablanca/cpprestsdk listener.support接受函数,但不支持方法
- 支持向量机 (SVM) 与 K-NN 测试效率
- 是否有支持自定义内核的SVM库可以与Visual Studio C++一起使用
- SVM支持向量机回归openCv c++
- C++支持向量机(SVM)模板库
- 支持向量机(SVM)