web-dev-qa-db-ja.com

キャレットを使用したRでの相互検証を備えたSVM

私が持っているデータセットに対して10分割交差検証を行うサポートベクターマシン回帰を実行するために、キャレットパッケージを使用するように言われました。 151変数に対して応答変数をプロットしています。私は次のことをしました:-

> ctrl <- trainControl(method = "repeatedcv", repeats = 10)
> set.seed(1500)
> mod <- train(RT..seconds.~., data=cadets, method = "svmLinear", trControl = ctrl)

私はそれを手に入れました

C    RMSE  Rsquared  RMSE SD  Rsquared SD
  0.2  50    0.8       20       0.1        
  0.5  60    0.7       20       0.2        
  1    60    0.7       20       0.2   

しかし、私は自分のフォールドを確認できるようにしたいと考えています。フォールドごとに、予測値が実際の値にどれだけ近いかを確認します。どうやってこれを見に行くのですか?

また、それはそれを言う:-

RMSE was used to select the optimal model using  the smallest value.
The final value used for the model was C = 0.

私はこれが何を意味し、上の表でCが何を意味するのか疑問に思っていましたか?

RT (seconds)    76_TI2  114_DECC    120_Lop 212_PCD 236_X3Av
38  4.086   1.2 2.322   0   0.195
40  2.732   0.815   1.837   1.113   0.13
41  4.049   1.153   2.117   2.354   0.094
41  4.049   1.153   2.117   3.838   0.117
42  4.56    1.224   2.128   2.38    0.246
42  2.96    0.909   1.686   0.972   0.138
42  3.237   0.96    1.922   1.202   0.143
44  2.989   0.8 1.761   2.034   0.11
44  1.993   0.5 1.5 0   0.102
44  2.957   0.8 1.761   0.988   0.141
44  2.597   0.889   1.888   1.916   0.114
44  2.428   0.691   1.436   1.848   0.089

これは私のデータセットの一部です。 151の変数に対してRT秒をポットするようにしています。

ありがとう

15
user2062207

trainControlオブジェクトの「savePred」オプションを使用してCV予測を保存する必要があります。あなたの「士官候補生」データがどのパッケージからのものかはわかりませんが、ここにアイリスを使用した簡単な例があります:

> library(caret)
> ctrl <- trainControl(method = "cv", savePred=T, classProb=T)
> mod <- train(Species~., data=iris, method = "svmLinear", trControl = ctrl)
> head(mod$pred)
        pred        obs      setosa  versicolor   virginica rowIndex   .C Resample
1     setosa     setosa 0.982533940 0.009013592 0.008452468       11 0.25   Fold01
2     setosa     setosa 0.955755054 0.032289120 0.011955826       35 0.25   Fold01
3     setosa     setosa 0.941292675 0.044903583 0.013803742       46 0.25   Fold01
4     setosa     setosa 0.983559919 0.008310323 0.008129757       49 0.25   Fold01
5     setosa     setosa 0.972285699 0.018109218 0.009605083       50 0.25   Fold01
6 versicolor versicolor 0.007223973 0.971168170 0.021607858       59 0.25   Fold01

編集:「C」はSVMのチューニングパラメータの1つです。詳細については、kernlabパッケージのksvm関数のヘルプを確認してください。

EDIT2:自明な回帰の例

> library(caret)
> ctrl <- trainControl(method = "cv", savePred=T)
> mod <- train(Sepal.Length~., data=iris, method = "svmLinear", trControl = ctrl)
> head(mod$pred)
      pred obs rowIndex   .C Resample
1 4.756119 4.8       13 0.25   Fold01
2 4.910948 4.8       31 0.25   Fold01
3 5.094275 4.9       38 0.25   Fold01
4 4.728503 4.8       46 0.25   Fold01
5 5.192965 5.3       49 0.25   Fold01
6 5.969479 5.9       62 0.25   Fold01
19
David