【发布时间】:2015-02-15 23:12:44
【问题描述】:
我正在开发一种新算法,该算法会生成一个修改过的核矩阵,用于使用 SVM 进行训练,但遇到了一个奇怪的问题。
出于测试目的,我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型。例如,
# Model with kernelMatrix computation within ksvm
svp1 <- ksvm(x, y, type="C-svc", kernel=vanilladot(), scaled=F)
# Model with kernelMatrix computed outside ksvm
K <- kernelMatrix(vanilladot(), x)
svp2 <- ksvm(K, y, type="C-svc")
identical(nSV(svp1), nSV(svp2))
请注意,我已关闭缩放,因为我不确定如何在内核矩阵上执行缩放。
据我了解,svp1 和 svp2 应该返回相同的模型。然而,我观察到这对于一些数据集来说并非如此,例如来自KEEL 的glass0。
我在这里错过了什么?
【问题讨论】:
-
你能发布你用来加载 x 和 y 的代码吗?我只是用玩具数据尝试了这个,这两个对我来说是相同的。
-
@Aabglov 使用 glass0 数据集我发现 OP 发布了相同的错误。