入れ子構造のクロスバリデーションを利用したハイパーパラメーターの探索とモデルの評価

nested k-fold cross validation

異なる機械学習アルゴリズムの中から最適なアルゴリズムを決めたいときは、ネストされた k-fold クロスバリデーションを使用することもできる。例えば、SVM と random forest の 2 つのアルゴリズムを試して、どのアルゴリズムが最も良いなのかを決めたいときなどに使用する。

機械学習モデルはハイパーパラメーターを含む場合がほとんどである。例えば、SVM ならば C や γ などがそれに当たる。これらのハイパーパラメーターは、クロスバリデーションを利用して決めていく必要がある。次に、一度ハイパーパラメーターが決まり、モデルが作成されると、今度はモデルを評価するためにクロスバリデーションを行う必要がある。つまり、ハイパーパラメーターを決めるためのクロスバリデーションとモデルを評価するためのクロスバリデーションの 2 回のクロスバリデーションが必要である。

このような場合は、下図のように、オリジナルデータセットを 2 回分割してサブセットを作れば対応できる。まず k (=5) 分割して、学習用とモデル評価用のデータセットを作る。次に、学習用のデータセットをさらに m (=2) 分割して、学習用と評価用に分けて、ハイパーパラメーターを決めるためのクロスバリデーションを行う。こうすれば 2 層目のサブセット(inner-loop)を使ってモデルを決めて、1 層目のサブセット(outer-loop)を使ってモデルの評価を行えるようになる。

ネストされたクロスバリデーション

次の例は、乳がんのデータセットを使って、SVM と random forest の 2 種類のアルゴリズムを使って作成した予測機の予測精度を比べる例である。モデルの評価結果から、random forest よりも SVM の方が予測精度が高いことがわかる。