2

データセットが 1 つあり、データセット全体に対して 10 倍の交差検証などの交差検証を行う必要があります。パラメータを選択して放射基底関数 (RBF) カーネルを使用したいと考えています (RBF カーネルには C とガンマの 2 つのパラメータがあります)。通常、人々は開発セットを使用して SVM のハイパーパラメーターを選択し、開発セットに基づいて最適なハイパーパラメーターを使用し、それをテスト セットに適用して評価します。ただし、私の場合、元のデータセットは 10 個のサブセットに分割されています。残りの 9 つのサブセットでトレーニングされた分類子を使用して、1 つのサブセットが順次テストされます。固定されたトレーニング データとテスト データがないことは明らかです。この場合、ハイパーパラメータの選択はどのようにすればよいですか?

4

1 に答える 1

0

特定の理由で、データが正確に10 個のパーティションに分割されていますか? それらを再度連結/シャッフルできない場合は、通常の (繰り返し) 交差検証を実行して、パラメーター グリッド検索を実行します。たとえば、10 個のパーティションと 10 個の繰り返しを使用すると、合計 100 個のトレーニング セットと評価セットが得られます。これらは現在、すべてのパラメータ セットのトレーニングと評価に使用されているため、試行したパラメータ セットごとに 100 個の結果が得られます。パラメータ セットごとの平均パフォーマンスは、セットごとの 100 個の結果から計算できます。

caretこのプロセスは、R でのこの短い例のように、ライブラリを使用して、ほとんどの ML ツールに既に組み込まれています。

library(caret)
library(lattice)
library(doMC)
registerDoMC(3)

model <- train(x = iris[,1:4], 
            y = iris[,5], 
            method = 'svmRadial', 
            preProcess = c('center', 'scale'),
            tuneGrid = expand.grid(C=3**(-3:3), sigma=3**(-3:3)), # all permutations of these parameters get evaluated
            trControl = trainControl(method = 'repeatedcv', 
                                        number = 10, 
                                        repeats = 10, 
                                        returnResamp = 'all', # store results of all parameter sets on all partitions and repeats
                                        allowParallel = T))

# performance of different parameter set (e.g. average and standard deviation of performance)
print(model$results) 
# visualization of the above
levelplot(x = Accuracy~C*sigma, data = model$results, col.regions=gray(100:0/100), scales=list(log=3)) 
# results of all parameter sets over all partitions and repeats. From this the metrics above get calculated
str(model$resample) 

ハイパーパラメータのグリッドを評価したら、適切なパラメータ セットを選択できます (「モデル選択」。たとえば、適切に機能しながら複雑でないモデルを選択するなど)。

ところで:可能であれば、クロスバリデーションよりもクロスバリデーションを繰り返すことをお勧めします(最終的には10回以上の繰り返しを使用しますが、詳細は問題によって異なります)。@christian-cerri が既に推奨しているように、新しいデータに対する最終モデルのパフォーマンスを推定するために使用される追加の目に見えないテスト セットを用意することをお勧めします。

于 2016-05-18T13:29:36.653 に答える