12

のオプションを使用ksvmして、R の kernlab パッケージから確率を予測しています。ただし、 を使用すると、 で与えられる確率が最も高いクラスが得られないことがあります。type="probabilities"predict.ksvmpredict(model,observation,type="r")predict(model,observation,type="p")

例:

> predict(model,observation,type="r")
[1] A
Levels: A B
> predict(model,observation,type="p")
        A    B
[1,] 0.21 0.79

これは正しい動作ですか、それともバグですか? それが正しい動作である場合、確率から最も可能性の高いクラスをどのように推定できますか?


再現可能な例を試す:

library(kernlab)
set.seed(1000)
# Generate fake data
n <- 1000
x <- rnorm(n)
p <- 1 / (1 + exp(-10*x))
y <- factor(rbinom(n, 1, p))
dat <- data.frame(x, y)
tmp <- split(dat, dat$y)
# Create unequal sizes in the groups (helps illustrate the problem)
newdat <- rbind(tmp[[1]][1:100,], tmp[[2]][1:10,])
# Fit the model using radial kernal (default)
out <- ksvm(y ~ x, data = newdat, prob.model = T)
# Create some testing points near the boundary

testdat <- data.frame(x = seq(.09, .12, .01))
# Get predictions using both methods
responsepreds <- predict(out, newdata = testdat, type = "r")
probpreds <- predict(out, testdat, type = "p")

results <- data.frame(x = testdat, 
                      response = responsepreds, 
                      P.x.0 = probpreds[,1], 
                      P.x.1 = probpreds[,2])

結果の出力:

> results
     x response     P.x.0     P.x.1
1 0.09        0 0.7199018 0.2800982
2 0.10        0 0.6988079 0.3011921
3 0.11        1 0.6824685 0.3175315
4 0.12        1 0.6717304 0.3282696
4

1 に答える 1

14

決定マトリックスと投票を見ると、回答とより一致しているように見えます。

> predict(out, newdata = testdat, type = "response")
[1] 0 0 1 1
Levels: 0 1
> predict(out, newdata = testdat, type = "decision")
            [,1]
[1,] -0.07077917
[2,] -0.01762016
[3,]  0.02210974
[4,]  0.04762563
> predict(out, newdata = testdat, type = "votes")
     [,1] [,2] [,3] [,4]
[1,]    1    1    0    0
[2,]    0    0    1    1
> predict(out, newdata = testdat, type = "prob")
             0         1
[1,] 0.7198132 0.2801868
[2,] 0.6987129 0.3012871
[3,] 0.6823679 0.3176321
[4,] 0.6716249 0.3283751

kernlabヘルプ ページ ( )は、TF Wu、CJ Lin、および RC Weng によるペアワイズ カップリングによるマルチクラス分類の確率推定の?predict.ksvm紙へのリンクです。

セクション 7.3 では、決定と確率が異なる可能性があると言われています。

...確率ベースの方法と決定値ベースの方法による結果が非常に異なる理由を説明します。一部の問題では、δDV によって選択されたパラメータが、他の 5 つのルールによって選択されたものとはまったく異なります。波形では、いくつかのパラメーターで、すべての確率ベースの方法で δDV よりもはるかに高い交差検証精度が得られます。たとえば、検証セットの決定値は、2 つのクラスのデータに対して [0.73, 0.97] と [0.93, 1.02] にあることがわかります。したがって、検証セット内のすべてのデータが 1 つのクラスとして分類され、エラーが大きくなります。反対に、確率ベースの方法は、シグモイド関数によって決定値を当てはめます。これは、0.95 付近の決定値でカットすることにより、2 つのクラスをより適切に分離できます。この観察は、確率ベースの方法と決定値ベースの方法の違いに光を当てます。

私は問題を理解するのにこれらの方法に十分に精通していませんが、あなたは知っているかもしれません.確率と他の方法で予測type=responseするための異なる方法があり、予測に使用される方法とは異なる方法に対応しているようです.確率。

于 2013-03-28T16:53:10.443 に答える