cross-validationとは?初学者のための基本と実践ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
cross-validationとは?初学者のための基本と実践ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)


cross-validationの基本と役割

データ分析や機械学習をするとき、モデルが新しいデータにどれくらい正確に予測できるかを見積もることが大切です。cross-validationはこの見積もりを安定させ、過学習を防ぐための代表的な評価方法です。

cross-validationの基本的な考え方

通常、データを訓練データと検証データに分けて評価しますが、1回だけの分割だとデータの偶然の偏りに左右されやすいです。cross-validationではデータを複数回に分割して、各部分を "検証データ" として使い、残りを訓練データとして使います。これを繰り返すことで、モデルの一般化性能をより安定して推定できます。

代表的な方法

最もよく使われるのが k分割交差検証k-fold cross-validation)です。データを等しい大きさのk個の部分に分け、1つを検証データとして、残りを訓練データとしてk回学習と評価を行います。最後にk回の評価を平均して最終指標とします。

実際の手順のイメージ

例としてデータが100件あり、kを5とします。データを5つのブロックに分け、次のように回します。

回1: ブロック1を検証データ、ブロック2-5を訓練データ

回2: ブロック2を検証データ、ブロック1,3-5を訓練データ

...を5回繰り返し、各回の評価指標を平均します。これにより、特定のデータの並びに強く依存しない、一般的な性能 estimateが得られます。

hold-out法との違いと選び方

hold-out法はデータを1回だけ分割して評価します。cross-validationは複数回の分割で平均を取るので、バイアスが低く、分散は高くなることがある点に注意が必要です。データ量が多いと hold-outで十分な場合もあり、データが少ない場合は k-fold が有利です。

注意点とコツ

データに 時間的な順序がある場合は、データをランダムに並べ替えずに、時間順に分割するなどの工夫が必要です。データ漏洩を起こさないよう、特徴量を訓練データだけで作成するなどの配慮が大事です。

表で比較

方法長所短所
Hold-out実装が簡単、計算が速い1回の分割に依存しやすい
k-fold交差検証一般化性能の安定な推定計算量が多い

実務でのポイント

実務では、データが偏っていないか、カテゴリが極端に不均衡でないかを確認し、必要に応じて stratified k-fold などの工夫を使います。cross-validationはモデルの選択(例えば正則化の強さを決めるとき)やハイパーパラメータのチューニングにも活用できます。


cross-validationの関連サジェスト解説

k-fold cross validation とは
k-fold cross validation とは、機械学習のモデルを評価するための代表的な方法の一つです。データを分割して、学習と検証を複数回繰り返すことで、モデルが新しいデータをどれくらい正しく予測できるかを安定して推定します。単純にデータを1回だけ train/test に分けると、偶然の分割に左右されやすく、過学習のリスクやデータの偏りの影響を強く受けることがあります。k-fold はこの問題を解決するために使われます。具体的なやり方は次のとおりです。まずデータをK等分します。例えばK=5ならデータを5つのグループに分けます。その後、K回の検証を行います。各回では、1つのグループを検証用データとして取り出し、残りの4つを訓練データとしてモデルを学習します。学習が済んだら検証グループで性能を評価します。これをK回繰り返し、最後に各回の評価結果を平均してモデルのいわばおおよその性能を出します。この方法の利点は、データを最大限有効活用できる点と、評価のばらつきを小さくできる点です。データが少ない場合にも、全てのデータを訓練と検証に活かせるため信頼性のある評価が得られやすくなります。一方でデータ量が多い場合は計算コストが増える点や、データが時系列データの場合には時系列の順番を守る工夫が必要になる点も覚えておきましょう。実務では、分類問題なら層化した分割を行う stratified k-fold を使うと、各分割でクラスの比率が大きく崩れずに済みます。回帰問題ではデータの分布を保つような分割方法を選ぶと良いです。モデル選択の際には複数のモデルをk-foldで評価して比較すると、公平な比較ができます。注意点として、データの前処理でデータ漏洩を防ぐこと、シャッフルのタイミング、random_state の固定など、再現性を確保する工夫も大切です。時系列データには通常のk-foldは適さず、時系列に合わせた分割法を選ぶべきです。結論として、k-fold cross validation とはデータをK等分してK回学習と検証を繰り返し、平均値で性能を評価する方法です。データの有効活用と安定した評価を両立させる一方、計算コストやデータの性質に注意が必要です。
nested cross validation とは
nested cross validation とは、機械学習でモデルの性能を正しく評価するための手法です。データを複数回分割して、内側でハイパーパラメータを決定し、外側でその設定を使ってモデルの性能を評価します。内側の検証を使って最適なパラメータを選ぶことで、テストデータをハイパーパラメータの決定に使わず、評価を汚さないようにします。これにより、実際の新しいデータに対する予測力をより正確に見積もることができます。具体的な流れは次の通りです。データを5つのグループに分ける外側の折りたたみを用意します。外側の各分割で、訓練データをさらに5つのグループに分ける内側の折りたたみを回して、最適なハイパーパラメータを決定します。次に、そのパラメータを使って外側のテストデータを予測し、各折りの結果を集めて平均します。こうした手順を繰り返すことで、外側の評価が偏らず、パラメータ選択と評価を別々に行えます。注意点として、nested cross validation は計算量が多い点が挙げられます。データが大きい時やハイパーパラメータが多い時は時間がかかりますが、データが少ない場合やモデルの選択が重要な場面では信頼できる評価を得られやすいです。

cross-validationの同意語

交差検証
データを複数の分割に分け、訓練と検証を繰り返してモデルの汎化性能を推定する評価手法。
クロスバリデーション
Cross-validation の日本語表記の別名。データを分割して評価を繰り返す汎化評価の手法。
k分割交差検証
データをK個に分割し、各分割を検証データとして用い、残りを訓練データとして学習する方法。
層化k分割交差検証
層化を行い、各分割にクラス分布がほぼ同じになるよう分割して実施する方法。
Leave-one-out交差検証(LOOCV)
データセットの1つを検証データとして取り出し、残りを訓練データとして全データ点について繰り返す方法。
Leave-p-out交差検証
データからp個を検証データとして取り出し、残りを訓練データとして繰り返す方法。
モンテカルロ交差検証
訓練・検証の分割をランダムに何度も作成して平均的な汎化性能を推定する方法。
繰り返しランダムサブサンプリング検証
何度もランダムに分割を作って訓練と検証を繰り返す方法。
時系列交差検証
時系列データに対して、順序を保ちながら訓練と検証を分割して評価する方法。
ローリングオリジン交差検証
時系列データで、訓練データを徐々に増やしていきながら検証点を前方へ移動させて評価する手法。

cross-validationの対義語・反対語

ホールドアウト法
データを1回だけ学習用と検証用に分けて評価する評価手法。クロスバリデーションのように複数回の分割と再学習を行わず、推定値のばらつきが大きくなりやすいのが特徴です。
単回分割検証
データを1回だけ分割して訓練と検証を行う方法(ホールドアウト法と同義)。手軽ですが分割次第で結果の信頼性が不安定になる可能性があります。
テストセット評価
訓練データとは別に固定のテストデータを用いて評価します。1回の評価で終わるため、クロスバリデーションと比べて偏りやすい点に注意が必要です。
一回分割評価
データを一度だけ分割して評価する簡易的な評価手法。複数回の分割を伴わない点が特徴です。
トレイン-テスト分割法
学習データとテストデータに分けて評価する代表的な手法。クロスバリデーションのような再分割は行いません。
外部検証
訓練データとは別の外部データセットでモデルを評価する方法。データの外部性を確認でき、過学習の影響を抑えるのに役立ちます。
ブートストラップ法による評価
標本を重複を許して再サンプリングし、複数回評価を行う再標本法。クロスバリデーションとは異なるアプローチですが、データに対する評価の代替として使われることがあります。

cross-validationの共起語

k分割交差検証
データをk個のブロックに分け、各ブロックを検証データとして順番に使い、残りを訓練データにして評価する代表的なCV手法。
LOOCV
1点を検証データに、残りを訓練データにしてデータ点数分だけ繰り返す極端な形のクロスバリデーション。
階層化k分割交差検証
クラスの分布が各折り目でほぼ同じになるようにデータを分割することで、クラス不均衡の影響を抑える方法。
反復k分割交差検証
k分割を複数回ランダムに分割して評価を平均化する方法。
モンテカルロ交差検証
乱数を用いて訓練データと検証データの組み合わせを繰り返し作成する評価法。
ホールドアウト法
データを一度だけ訓練データと検証データに分割して評価する最もシンプルな手法。
訓練データ
モデルを学習させるためのデータ。
検証データ
モデルのパラメータを評価・選択するために使うデータ。
テストデータ
最終的な汎化性能を測定するためのデータ。
バイアス-分散のトレードオフ
予測誤差が発生する原因であるバイアスと分散のバランスの関係。
汎化
未知データに対する予測力、訓練データ以外のデータでの性能。
過学習
訓練データに過度に適合してしまい、未見データでの性能が低下する状態。
未学習
データの特徴を十分に捉えられていない状態で、性能が低いこと。
モデル選択
複数のモデルの中から最も良いものを選ぶプロセス
ハイパーパラメータ
学習アルゴリズムの設定値。CVを用いて最適化の対象となる。
評価指標
モデルの性能を数値化する基準となる指標。
正解率
分類問題で正しく予測した割合。
適合率
陽性と予測したうち実際に正解だった割合。
再現率
実際の陽性のうち正しく予測できた割合。
F1スコア
適合率と再現率の調和平均で、バランスを測る指標。
ROC-AUC
ROC曲線の下の面積。二値分類の識別力を表す指標。
MSE
平均二乗誤差。回帰モデルの誤差を評価する基本指標。
MAE
平均絶対誤差。外れ値の影響を抑えた誤差指標。
RMSE
平方根を取ったMSE。誤差のスケール感が直感的に分かる指標。
R^2
データの分散をどれだけ説明できるかの指標。汎化能力の目安。
ネストされたクロス検証
ハイパーパラメータ調整と評価を分離して過適合を防ぐCVの拡張手法。
時系列データ用CV
時系列の順序を崩さずに分割して評価するCV手法。
データリーク
検証時に訓練データから情報が漏れ、評価が不正になる問題。
パイプライン
前処理と学習を一連の流れとして組み、漏れを防ぐ設計。
データ前処理
欠損値処理、特徴量変換など、学習前の処理全般。
スケーリング
特徴量を同じスケールに揃える前処理。
階層化サンプリン
クラス分布を保ちながらデータをサンプリングする方法。
cross_val_score
CVを実行して得られるスコアを返す機能・指標。
TimeSeriesSplit
時系列データ用の分割方法。過去データを訓練、未来データを検証に使う。
Random_state
再現性を確保する乱数シード。

cross-validationの関連用語

cross-validation
データセットを複数の分割に分け、モデルの汎化性能を推定する検証手法。訓練データと検証データを何回も組み合わせて評価する。
k-fold cross-validation
データを等しく分割したk個の折り目を作り、各折り目を検証データとして用い、残りを学習データとして学習・評価する方式。
stratified k-fold
クラス分布を各折り目でなるべく同じになるように分割するk-foldクロスバリデーション。
leave-one-out cross-validation (LOOCV)
データセットの各サンプルを1つの検証データとして使い、残りを学習データにして繰り返す方法。データ量が多いと計算負荷が高い。
leave-p-out cross-validation
p個を検証データとして取り出す全組み合わせを評価する方法。計算量が膨大になりやすい。
nested cross-validation
外側のCVで汎化性能を評価し、内側のCVでハイパーパラメータを調整する二重のCV。過学習を防ぐ。
repeated cross-validation
同じデータを異なる乱数で複数回分割して評価を平均化する方法。
Monte Carlo cross-validation
ランダムなトレイン/テスト分割を複数回繰り返して評価を集計する方法。
time series cross-validation (TimeSeriesSplit)
時系列データの順序を保ったまま訓練データを増やして検証データを進める分割方法。
bootstrap validation
データを重複を許して再サンプリングし、複数のモデルを評価して汎化を推定する方法。
train-test split
データを学習用と検証用に分ける最も基本的な分割。
validation set
ハイパーパラメータの調整やモデル選択に用いる検証データ。
test set
最終的なモデルの汎化性能を評価するために使うデータセット
training set
モデルを学習させるためのデータセット。
generalization
未知データに対して正しく予測できる能力。
overfitting
訓練データに過剰適合してしまい、未知データでの性能が低下する状態。
underfitting
データの情報を十分に捉えきれておらず、訓練データと未知データの両方で性能が低い状態。
bias-variance tradeoff
モデルの複雑性と予測誤差のトレードオフ。高いバイアスは単純・低分散、低いバイアスと高分散のバランスを探す。
data leakage
検証時に学習データに含まれてはいけない情報が含まれてしまう現象。評価が過大になる原因。
target leakage
目的変数の情報が特徴量として leakage 考えられる場合。
class imbalance
クラス間のデータ数が不均衡な状態。少数クラスの予測が難しくなる。
stratification
分割時にクラス分布を保つ手法。特に分類問題で用いられる。
cross-validation score
各分割で得られた性能指標の平均と分散を用いてモデルを評価する指標。
accuracy
正解数の割合。分類問題での基本指標。
precision
陽性と予測された例のうち実際に陽性である割合。
recall
実際に陽性である例のうち正しく陽性と予測された割合。
F1 score
精度と再現率の調和平均。クラス不均衡時に有効。
ROC-AUC
ROC曲線の下の面積。クラス識別能力の指標。
AUROC
ROC-AUC の同義語
log loss
予測確率と実際のクラスの不一致を対数損失で測る指標。
Brier score
確率予測の予測精度を測る指標。0に近いほど良い。
RMSE
平方根平均二乗誤差。回帰の誤差の尺度。
MAE
平均絶対誤差。回帰の誤差の尺度。
calibration
予測確率と実際の頻度を一致させるように調整すること。
calibration curve
キャリブレーション曲線。予測確率と実際の頻度を比較する図。
grid search
全組み合わせのハイパーパラメータを試して最適を選ぶ方法。GridSearchCV などで使う。
grid search CV
ハイパーパラメータをグリッドで探索しつつCVで評価する手法。
random search
パラメータ空間をランダムにサンプリングして探索する方法。
RandomizedSearchCV
scikit-learn のハイパーパラメータ探索で、ランダムにパラメータを試すCV付き探索。
pipeline
データ前処理とモデルを連結して再現性を高める処理の連なり。
feature scaling
特徴量を共通のスケールに揃える処理。後処理での学習安定性向上。
standardization
平均0、分散1にする標準化。
normalization
最小値0・最大値1にスケーリングする正規化。
feature selection
予測力のある特徴だけを選び、過学習を抑制する。
GroupKFold
データ内のグループを意識して折りたたみを作る分割法。グループ間の情報漏れを防ぐ。
LeaveOneGroupOut
各グループを1つの検証データとして使うLeave-One-Group-Out法。
TimeSeriesSplit
時系列データ向けの連続的な学習/検証の分割。
reproducibility
結果を他人が再現できるよう、乱数種の固定やデータ分割の記録を行うこと。
random_seed
乱数生成の初期値。再現性を確保する。
data preprocessing
データの前処理全般。欠損値処理、エンコーディング、スケーリングなど。
confusion matrix
予測と結果の真偽を二次元表で示す。
macro/micro averaging
多クラス評価時の平均の取り方。macroはクラスごとに平均、microは全体で集計。
multiclass
3クラス以上の分類問題。
binary classification
2クラス分類
feature engineering
新たな特徴量を作成して予測性能を高める技術。

cross-validationのおすすめ参考サイト


学問の人気記事

トルクの単位・とは?初心者向けに徹底解説!なぜ単位が違うのかまで分かる共起語・同意語・対義語も併せて解説!
933viws
引用・参考文献とは?初心者でもわかる使い方とポイント解説共起語・同意語・対義語も併せて解説!
495viws
示差走査熱量測定とは?初心者向けガイドで学ぶ基本と実験のポイント共起語・同意語・対義語も併せて解説!
381viws
絶縁抵抗値とは?初心者でも分かる測定の基本と安全のコツ共起語・同意語・対義語も併せて解説!
371viws
no・とは?初心者にもわかる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
361viws
summarize・とは?初心者向け解説と使い方のコツ共起語・同意語・対義語も併せて解説!
342viws
ナイロン樹脂とは?初心者にもわかる基本と用途ガイド共起語・同意語・対義語も併せて解説!
332viws
穴加工・とは?初心者が知っておく基本と現場での活用ポイント共起語・同意語・対義語も併せて解説!
300viws
welchのt検定とは?不等分散のデータを比較する統計手法をやさしく解説共起語・同意語・対義語も併せて解説!
268viws
3/4・とは?分数の基本を分かりやすく解く完全ガイド共起語・同意語・対義語も併せて解説!
241viws
論述問題・とは?初心者にも分かる解説と解き方のコツ共起語・同意語・対義語も併せて解説!
232viws
ダーウィンの進化論とは?中学生にも分かるやさしい解説と身近な例共起語・同意語・対義語も併せて解説!
206viws
超音波探傷・とは? 初心者向けのやさしい解説と身近な活用共起語・同意語・対義語も併せて解説!
203viws
摘要とは?初心者にも分かる意味と書き方ガイド共起語・同意語・対義語も併せて解説!
194viws
z変換・とは?初心者が知っておくべき基礎と日常への応用共起語・同意語・対義語も併せて解説!
194viws
ensureとは?初心者にもわかる意味と使い方を徹底解説共起語・同意語・対義語も併せて解説!
189viws
洗浄バリデーションとは?初心者が押さえる基本と実務のポイント共起語・同意語・対義語も併せて解説!
187viws
空気圧センサーとは?初めてでも分かる仕組みと身近な活用事例共起語・同意語・対義語も併せて解説!
182viws
気圧の単位とは?中学生にもわかるPa・atm・bar・Torrの違いと換算ガイド共起語・同意語・対義語も併せて解説!
165viws
先にとは?初心者でもわかる意味と使い方ガイド共起語・同意語・対義語も併せて解説!
163viws

新着記事

学問の関連記事