機械学習 – ホールドアウト法(Hold-out)

教師あり学習を行う上で、モデルを作成し評価するための基本的な手法

教師ありデータを学習データとテストデータに分割する。
学習データでモデルを作成し、テストデータで性能を図る。

より効果的な方法として、データを学習データ、検証データ、テストデータと3つに分割し、検証データによって複数のモデルを評価・選択して最終的にテストデータで汎化誤差を評価する方法がある。

学習データにはある程度のデータ数が必要なため、学習データとテストデータの比率を検討する際は学習データに割り振られる件数を考慮すること。

サンプルコード:

from sklearn.datasets import load_breast_cancer           #サンプルデータ取得用
from sklearn.linear_model import LogisticRegression       #ロジスティック回帰用ライブラリ
from sklearn.cross_validation import train_test_split     #交差検証用ライブラリ
from sklearn.metrics import accuracy_score                #正答率算出用ライブラリ

# 分析対象データを取得
data = load_breast_cancer()
X = data.data
y = data.target

# データを取得して分割(学習用7:テスト用3)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

#ロジスティック回帰モデル作成
lr = LogisticRegression()
lr.fit(X_train, y_train)

# 学習データに対する正答率を出力
print('Training accuracy:', lr.score(X_train, y_train))

# テストデータに対する正答率を出力
print('Test accuracy:', lr.score(X_test, y_test))

出力結果:

Training accuracy: 0.957286432161
Test accuracy: 0.964912280702

シェアする

  • このエントリーをはてなブックマークに追加

フォローする