首页 文章

基于RBF的SVM模型中的自定义核函数

提问于
浏览
0

目前我在R中使用 e1071 库来训练带有RBF内核的SVM模型,例如,使用以下参数调用SVM函数:

这里的问题是有没有可能进一步定制R中的RBF内核?我想要做的是在原始RBF内核中添加一个额外的计算,例如:[![在此输入图像描述] [2]] [2]

Xi和Xj是两个对象,表示绝对时间戳Ti和Tj的时间序列:

任何想法都欢迎,谢谢:)


*嗨,感谢@lejlot的答案,在这里我只是根据他的解决方案编辑公式,是不是:)

denote ai = (xi,ti) and bi = (xi, 1/sqr(g)*ti)

K(ai, aj) = exp(-g*||xi-xj||^2) exp(-(ti-tj)^2) =
      = exp(-g*||xi-xj||^2 -(ti-tj)^2) =
      = exp(-g*||xi-xj||^2 -g(1/sqr(g)*ti-1/sqr(g)*tj)^2) =
      = exp(-g*(||xi-xj||^2 + (1/sqr(g)*ti-1/sqr(g)*tj)^2)) =
      = exp(-g*(||xi-xj||^2 + (1/sqr(g)*ti-1/sqr(g)*tj)^2)) =
      = exp(-g*(||bi-bj||^2)) = RBF(bi, bj)*

*但是,另一个问题是你说的是将ti(乘以1 / gamma)连接到数据表示,但是如何?

假设X的矩阵包含4个特征,如下所示:

x1 x2 x3 x4
3  5  6  7  
4  3  2  4
8  5  2  2
3  2  1  0
9  9  3  2

关于时间戳值,由于每行具有相同的值,因此响应矩阵可以是:

t1 t2 t3 t4
1  1  1  1  
2  2  2  2
3  3  3  3
4  4  4  4
5  5  5  5

在e1071的包中,svm函数只包含x作为输入矩阵,我们如何还可以包含用于建模的时间戳矩阵?我不知道这是一个简单或愚蠢的问题,但现在它让我发疯:(

谢谢 :)

1 回答

  • 1

    所以这不是一个通用的解决方案,但在你的特定情况下,不需要自定义内核,让我们来表示ai =(xi,ti)和bi =(xi,1 / sqrt(g)* ti)

    K(ai, aj) = exp(-g*||xi-xj||^2) exp(-(ti-tj)^2) =
              = exp(-g*||xi-xj||^2 -(ti-tj)^2) =
              = exp(-g*||xi-xj||^2 -g(1/sqrt(g)*ti-1/sqrt(g)*tj)^2) =
              = exp(-g*(||xi-xj||^2 + (1/sqrt(g)*ti-1/sqrt(g)*tj)^2)) =
              = exp(-g*(||xi-xj||^2 + (1/sqrt(g)*ti-1/sqrt(g)*tj)^2)) =
              = exp(-g*(||bi-bj||^2)) = RBF(bi, bj)
    

    以来

    ||bi-bj||^2 = SUM_k (bik-bjk)^2 = SUM_k (xik-xjk)^2 + (ti-tj)^2
    

    所以你要做的就是将ti(乘以1 / sqrt(gamma))连接到数据表示并应用常规RBF内核 .

相关问题