首页 > 解决方案 > 应用 mod 操作进行分类

问题描述

我有一组数据。对于简单的情况:

value:  0,  3, 6, 8, 10, 13, 14
type:   o,  o, x, x,  x,  o,  o

计划是使用一个简单的“阈值”进行分类。这个想法是应用 mod + shift 来更好地分类:ex, 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 分类算法的正式算法?

标签: machine-learningclassificationlinear-regression

解决方案


警告:我在这方面有点生疏。

一些初步的想法:

  • 有些内核隐含地做类似的事情。

  • 径向基函数内核RBF是我能想到的一件事。或者也许只是一个多项式内核

  • 模数不能作为内核工作,因为它必须是对偶的(--> 内核技巧)并且必须是双射函数。但是模数会丢失信息并且不能“撤消”。

我分叉了 Karpathy 的SVM-JS 演示,并将数据更改为上面的示例数据。这提供了一个非常简单的可视化,在您的示例中,到以 8 为中心的 (1D-) 圆的径向距离将是一个很好的分类器。

Karpathy 工具中一维数据的 hacky 版本

但是考虑到您想要表示模数,并且可能您在 (6+12=) 18、20 或 22 处也有“x”值,这让我想起了一个周期性信号。对于周期性信号,您只需将输入数据转换为“傅立叶空间”并对其进行分类。我把它放在引号中,因为近似值可能就可以了。

因此,让我们尝试将 Kernel 函数设为 (Modulus, Remainder) 映射。(大致类似于幅度和相位)。(旁注:谷歌搜索“傅立叶变换内核机器学习”表明这可能是一件事。)

Phi(x) = (x mod N, x rem N).

据我所知,这是一个有效的特征映射函数。然后你可以将它应用到 SVM 上。


推荐阅读