【发布时间】:2011-07-29 21:36:25
【问题描述】:
我有一个标准的 {-1,+1} 机器学习问题。主要区别在于数据点是二进制字符串,因此它们的接近度是通过汉明距离来衡量的。 在这种情况下可以应用 SVM 吗?哪个 SVM 库更适合这项任务?
【问题讨论】:
-
我刚刚意识到汉明距离是L1-距离,那么哪个SVM库可以正确处理数据点之间的L1-距离?
标签: machine-learning svm
我有一个标准的 {-1,+1} 机器学习问题。主要区别在于数据点是二进制字符串,因此它们的接近度是通过汉明距离来衡量的。 在这种情况下可以应用 SVM 吗?哪个 SVM 库更适合这项任务?
【问题讨论】:
标签: machine-learning svm
这可能最好使用允许您创建自定义内核函数的 SVM 库(例如 libSVM、SVMLight、scikits)来处理。然后你必须编写一个汉明距离函数来计算两个字符串之间的距离并将其作为核函数插入。
唯一的问题是,我不确定汉明距离是否真的是一个内核,因为它满足Mercer's conditions。明明是对称的,不知道是不是正定的。
【讨论】:
就像 StompChicken 所说,汉明距离是否是一个有效的内核还不清楚。
除非我遗漏了什么,否则我认为它是一个有效的内核,因为它是以下空间中的内积:K("aab","baa") = [0,1,0,1,1 ,0] \dot [1,0,0,1,0,1].
在理解了这种“编码”之后,您可以真正使用任何支持线性内核的 SVM 库,像前面的示例一样对您的字符串进行编码。
【讨论】:
如果核 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)
考虑到 k 是汉明距离,根据 1) 我们将有:
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 一起使用,但肯定会失去解决凸优化问题的好处。
【讨论】:
e^{-(d(x, y) / sigma)^2}。如果d 是 L2 距离,则这是一个内核(证明例如here)。当然,它也适用于任何可以等距嵌入到 L2 中的度量。不幸的是,L1 似乎不能完全嵌入到 L2 中:these notes 描述了具有O(sqrt{log n} log log n) 失真的算法,并提到有一个小于log log n 的下限。
This paper 提出了一个用于测量分类特征之间的汉明距离的核。只需将标准指数核中的欧几里德距离替换为 Hamming。
也可以将欧几里得距离和汉明距离组合到一个内核中,这对于混合了连续变量和离散变量的数据集来说是很好的。
好消息是他们还证明了这个内核确实是正定的(第 14 页)。
【讨论】: