【问题标题】:svm for binary data with hamming distancesvm 用于具有汉明距离的二进制数据
【发布时间】:2011-07-29 21:36:25
【问题描述】:

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

【问题讨论】:

标签: machine-learning svm


【解决方案1】:

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

唯一的问题是,我不确定汉明距离是否真的是一个内核,因为它满足Mercer's conditions。明明是对称的,不知道是不是正定的。

【讨论】:

    【解决方案2】:

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

    除非我遗漏了什么,否则我认为它是一个有效的内核,因为它是以下空间中的内积:K("aab","baa") = [0,1,0,1,1 ,0] \dot [1,0,0,1,0,1].

    在理解了这种“编码”之后,您可以真正使用任何支持线性内核的 SVM 库,像前面的示例一样对您的字符串进行编码。

    【讨论】:

      【解决方案3】:

      如果核 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 的下限。
      • 也就是说,在实践中,您可以通过在样本上找到汉明距离矩阵,将它们通过高斯,然后将其投影为半正定(通过归零从其特征分解中取出负特征值,或向对角线添加等于最负特征值的量;前者tends to work better in practice,但后者更容易计算)。或者,您可以像上面那样使用近似嵌入到 L2 中,并在其上使用任何内核。
      【解决方案4】:

      This paper 提出了一个用于测量分类特征之间的汉明距离的核。只需将标准指数核中的欧几里德距离替换为 Hamming。

      也可以将欧几里得距离和汉明距离组合到一个内核中,这对于混合了连续变量和离散变量的数据集来说是很好的。

      好消息是他们还证明了这个内核确实是正定的(第 14 页)。

      【讨论】:

        猜你喜欢
        • 2017-04-03
        • 2011-06-14
        • 1970-01-01
        • 2015-12-20
        • 2015-09-06
        • 2013-11-18
        • 2017-09-10
        • 1970-01-01
        • 2016-06-06
        相关资源
        最近更新 更多