プログラミングの用語一覧へ
このページの目次
プログラミング中級図解あり

交差検証とは?

最終更新:2026/08/18

3秒でわかる

データを複数に分け、検証用を入れ替えながら学習と評価を繰り返す手法。一度きりの分割に頼らず性能を見積もるために使います。

30秒図解

5分割交差検証は評価用のfoldを入れ替えてF1を5回測り平均と標準偏差を見る
交差検証は評価用のfoldを入れ替えて複数回測り、一度の分割による偶然をならします。平均だけでなく標準偏差も見て、モデルの安定性を確かめます。

もう少し詳しく

どういうものか

交差検証は、手元のデータをk個の塊に分け、そのうち1つを評価用、残りを学習用として学習と評価をk回繰り返し、k個のスコアを平均する評価方法です。回ごとに評価用の塊を入れ替えるので、最終的にはすべてのデータが1度ずつ評価側に回ります。kは5か10が一般的で、この形をk分割交差検証と呼びます。

なぜ必要か

データを2つに割って1度だけ評価すると、そのスコアは分け方の運に左右されます。たまたま簡単な行が評価側に集まれば高く出ますし、逆なら低く出ます。データが数百件しかない場合、この振れ幅は数ポイントに達することがあり、モデルAとBのどちらが良いかという判断が分け方次第で逆転します。k回の平均を取れば、この揺れがならされます。同時に、スコアのばらつき自体も情報になります。回ごとの差が大きいモデルは、本番でも安定しません。

具体例

from sklearn.model_selection import cross_val_score, StratifiedKFold from sklearn.ensemble import RandomForestClassifier model = RandomForestClassifier(random_state=0) cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=0) scores = cross_val_score(model, X, y, cv=cv, scoring="f1") print(scores) # [0.81 0.78 0.85 0.79 0.83] print(scores.mean(), scores.std())

平均だけでなく標準偏差も見ます。平均が同じでもばらつきが小さいほうを選びます。

つまずきやすいところ

分割の前に全データで標準化や欠損値の補完を済ませてしまうと、評価用の情報が学習側へ漏れます。スコアは高く出ますが本番では再現しません。前処理パイプラインに入れ、分割の内側で行います。時系列データを無作為に分けるのも同じ種類の誤りで、未来の行を使って過去を予測する形になります。この場合は時間順を保つ分割を使います。もうひとつ、クラスの偏ったデータをそのまま分けると、正例が1件も入らない塊ができます。層化した分割を指定して比率を保ちます。

似た用語との違い

内容
ホールドアウト1回だけ分けて評価する簡易な方法
k分割交差検証k回繰り返して平均する
一つ抜き交差検証kをデータ件数と同じにする極端な形


交差検証はモデルの比較と調整に使い、最終的な性能はどこにも使っていないデータで1度だけ測ります。

次に学ぶ

教師あり学習とは?

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地交差検証プログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

データ分析入門 Python(pandas)

57レッスン
コース

生成AI資格対策(生成AIパスポート+G検定)

49レッスン
コース

Python中級 内包表記・高階関数・クラス入門

58レッスン
データ分析コースの全編を見る