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
モデルを返す必要があります。glass0
ただし、これはKEELなどのいくつかのデータセットには当てはまらないことがわかりました。
ここで何が欠けていますか?