クロスバリデーション

クロスバリデーションとは、データを分割して学習、判定を繰り返す検証方法です。 分割したトレーニングデータをさらに分割して、かつデータに偏りの無いように性能を検証できます。

scikit-learnでは cross_val_score 関数を使って簡単にクロスバリデーションを行えます。

scores = cross_val_score(
    estimator=clf,  # 分類器を指定
    X=X_train,  # 特徴行列 X を指定
    y=y_train,  # 目的変数 y を指定
    cv=8  # データを何分割にして検証するか指定
)

cross_val_score は、内部では層化k分割交差検証という手法を使って偏りの無いようにスコアを計算します。

cv には内部でデータを何分割してスコアを計算するかを指定できます。 cross_val_score 関数は cv の数と同じ長さの numpy.array を返します。 arrayの各値が、1回ごとに計算したスコアの値になります。 このarrayから平均と標準偏差を計算することで、最終的なスコアを計算して性能評価ができます。

層化k分割交差検証