こうですね。わかります。 double kernel(Map<String, Double> x1, Map<String, Double> x2){ double n = 0; for(Map.Entry<String, Double> ent : x1.entrySet()){ if(!x2.containsKey(ent.getKey())) continue; n += ent.getValue() * x2.get(ent.getKey()); } return (n + 1) * (n + 1); } ということで、2次多項式カーネルにするには、1足して2乗するだけということなのでやってみました。結果ですが、なんかよくなってるような気もするけど、よくわかりません。。。 やっぱ、ちゃんと交差検証で性能試せるようにしないと。 スパムフィルタでよく使われてる、ベイジアンフィルタのこと