我一直在使用"Kernlab"包中的R中可用的stringdot函数.这是我的代码
library(kernlab)
x <- c("1","2","3")
y <- c("3","2","1")
lst <- list(x, y)
sk <- stringdot(length = 2, lambda = 1.2, type = "exponential", normalized = TRUE)
q <- kernelMatrix(sk,lst)
Run Code Online (Sandbox Code Playgroud)
据我所知,指数内核将创建长度为2的子串.例如,这里的字符串将1-2,1-3,2-3来自第一个向量和3-2,3-1,2-1第二个向量.它将尝试通过创建给定长度的各种子串来匹配输入,并根据给定的值减少子串的权重lambda.
根据我的预期,输出应包含(x,x)和(y,y)的值1和(x,y)的值0,因为给定输入之间没有共同的子串,但输出显示(x,y)对的值为0.4723.
我不明白为什么x和y之间的相似性是0.4723.