我有一组数据。对于简单的情况:
value: 0, 3, 6, 8, 10, 13, 14
type: o, o, x, x, x, o, o
该计划是使用简单的“阈值”进行分类。这个想法是应用mod + shift来更好地分类:例如,x = x mod 12然后这对对变成
(value) % 12: 0, 1(13), 2(14), 3, 6, 8, 10
type: o, o, o, o, x, x, x
现在我们可以使用threshold = 5进行分类而没有错误。
关于这种mod&shift分类算法,有没有正式的算法?
注意:我在这方面有些生疏。
一些初步想法:
有Kernels隐式地执行类似的操作。
径向基函数内核RBF是我可以考虑的一件事。或者只是Polynomial Kernel。
模数不能用作内核,因为它必须是对偶(->内核技巧),并且必须是双射函数。但是模数会丢失信息,因此无法“撤消”。
我分叉了Karpathy的SVM-JS demo,并将数据更改为您上面的示例数据。这提供了非常简单的可视化效果,在您的示例中,到以8为中心的(1D-)圆的径向距离将成为一个很好的分类器。
但是假设您要表示模数,并且由于也许您在(6 + 12 =)18、20或22处也有'x'值,这使我想起了周期性信号。对于周期性信号,您只需将输入数据转换为“傅立叶空间”并进行分类。我用引号引起来,因为近似值可能就很好。
所以,让我们尝试使内核函数成为(模数,余数)映射。 (大约类似于幅度和相位)。 (附带说明:谷歌搜索“傅立叶变换内核机器学习”表明这可能是一件事。)
Phi(x) = (x mod N, x rem N)
。
据我所知,这是有效的功能映射功能。然后您可以将其应用于SVM。