具有汉明距离的二进制数据的svm

问题描述 投票:5回答:4

我有一个标准的{-1,+ 1}机器学习问题。主要区别在于数据点是二进制字符串,因此它们的接近度通过汉明距离来度量。在这种情况下可以应用SVM吗?哪种SVM库更适合此任务?

machine-learning svm
4个回答
2
投票

如果内核k对于任意对示例x和z为正定,则gram矩阵的行列式为非负。

|k(x, x) k(x, z)|
|               | = k(x,x)k(z,z) - k(x,z)^2 >= 0
|k(z, x) k(z, z)|

对于距离(包括汉明距离),以下属性成立:

For any x, y:

1) d(x, z) >= 0 and d(x, z) = 0 <=> x = z
2) symmetry d(x, z) = d(z, x)
3) triangular inequality d(x, z) <= d(x, y) + d(y, z)

根据1,将k考虑为汉明距离,]:

a) k(x,x) = k(z,z) = 0

但是要成为正定核,我们需要:

b) k(x,x)k(z,z) - k(x,z)^2 >= 0

将a)应用于b),我们有:

-k(x,z)^2 >= 0
k(x,z)^2 <= 0

这意味着k(x,z)不是真实值,因此它不是有效内核。

除非我丢失了某些内容,否则我认为它是有效的内核,因为它 是以下空间中的内积:K(“ aab”,“ baa”)= [0,1,0,1,1,0] \ dot [1,0,0,1,0,1]。

这是为内核定义功能的好方法,但不是汉明距离。“ aab”和“ baa”之间的汉明距离为2,第一个和第三个字符不同。但是

[0,1,0,1,1,0] \dot [1,0,0,1,0,1] = 1.

如果汉明实例不是正定的,并不意味着它不能与SVM一起使用,但是可以肯定的是,您失去了解决凸优化问题的好处。


1
投票

这可能是通过使用SVM库来解决的,该库允许您创建自定义内核函数(例如libSVM,SVMLight,scikits)。然后,您将必须编写一个汉明距离函数以计算两个字符串之间的距离,并将其作为内核函数插入。


1
投票

[就像StompChicken所说,尚不清楚汉明距离是否是有效的内核。


0
投票

Mercer's conditions为分类特征之间测得的汉明距离提出了一个核。只需用Hamming替换标准指数内核中的欧几里得距离即可。

© www.soinside.com 2019 - 2024. All rights reserved.