1行定義
交差検証とは、データを複数のグループに分け、検証用のグループを入れ替えながら学習と評価を繰り返して、モデルの汎化性能を見積もる方法のことです。
くわしく
交差検証は、手元のデータを何通りかに分け直して学習と評価を繰り返し、モデルの汎化性能を見積もる方法です。
なぜ必要か
モデルの良し悪しは、学習に使っていないデータで測る必要があります。学習に使ったデータで測ると、答えを丸暗記しただけのモデルでも高い点が出てしまうからです。最も単純なのは、データを学習用と評価用に一度だけ分けるホールドアウト検証です。ただしデータが少ないと、どのデータがたまたま評価用に入ったかで、結果が大きくぶれます。評価用に回した分だけ、学習に使えるデータも減ります。
k-分割交差検証の手順
代表的な方法がk-分割交差検証です。
- データをk個のグループに分けます。
- 1つのグループを検証用、残りのk-1個を学習用にして、学習と評価をします。
- 検証用にするグループを入れ替えながら、これをk回繰り返します。
- k回の評価値の平均を、モデルの性能の見積もりとします。
すべてのデータが一度ずつ検証用になり、それ以外の回では学習に使われます。kには5や10がよく使われます。kをデータの件数と同じにした方法は、Leave-One-Out交差検証(一つ抜き交差検証)と呼ばれます。
使うときの注意
- 学習をk回行うので、計算時間は1回の学習のおよそk倍かかります。
- 分類問題でクラスの比率に偏りがあるときは、各グループのクラスの比率をそろえて分けます(層化k-分割交差検証)。
- 時系列データを無作為に並べ替えて分けると、未来のデータで学習して過去を予測することになり、評価が甘くなります。過去のデータで学習し、それより後の期間で検証するように分けます。
- 交差検証は、ハイパーパラメータやモデルの選択によく使われます。最終的な性能は、選択に一度も使っていないテストデータで確認します。
覚え方
「k回、検証役を交代して平均をとる」と覚えます。
G検定での出題
出題のされ方
ホールドアウト検証との違い、k-分割交差検証の手順と利点、時系列データでの分け方やテストデータを別に残す必要性など、データの分け方を問う形で出題されます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| 交差検証このページの用語 | データを複数のグループに分け、検証用のグループを入れ替えながら学習と評価を繰り返して、モデルの汎化性能を見積もる方法 |
| ホールドアウト検証 | 手元のデータを学習用と評価用に一度だけ分け、学習に使わなかった評価用データでモデルの性能を測る方法 |
違いを表で比べる
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
k-分割交差検証では、すべてのデータが一度ずつ検証用データとして使われる。
答えを見る
答え ◯ 正しい
k個のグループが順番に1回ずつ検証役を務め、それ以外の回では学習に使われます。
-
時系列データで交差検証を行うときも、データを無作為に並べ替えてから分割するのが基本である。
答えを見る
答え × 誤り
無作為に分けると、未来のデータで学習して過去を予測することになり、評価が甘くなります。過去で学習し、後の期間で検証します。
-
k-分割交差検証は、ホールドアウト検証に比べて、学習と評価にかかる計算量が少ない。
答えを見る
答え × 誤り
学習と評価をk回繰り返すので、計算量はおよそk倍になります。その代わり、評価の結果が安定します。