1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

検証集合について (E資格対策)

Last updated at Posted at 2020-04-01

では書きます。
本ソースはGoogle Colaboratoryで動かしています。

学習データ、検証データ、テストデータ

機械学習を行うにあたってデータが必要です。データには3種類あり、学習データ、検証データ、テストデータがあります。
この3つがとても混乱するので整理すると

訓練データ:パラメータを学習
検証データ:モデル選択
テストデータ:性能の測定

の違いがあります。

検証集合

モデルを作成した際、性能が良いか悪いか検証するデータの集まりを指します。いわゆるテストデータと呼ばれるものです。
テストデータを作るにあたって元のデータセットを学習データとテストデータに分ける必要があります。
分ける手法に、

・ホールドアウト法
・交差検証
・k-分割交差検証法

があります。以下に紹介します。

ホールドアウト法

シンプルにデータをテスト用データと学習データに分ける手法。

帆0ルドアウト法.png

sklearnのtrain_test_splitではデフォルトはテストデータ0.25、学習データ0.75の割合で分けます。
コードはこちら


from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# データセットの生成
X,y=make_blobs(random_state=0)
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)#ここでデータを学習データとテストデータに分けている。
logreg=LogisticRegression().fit(X_train,y_train)
print("Test set score:{:.2f}".format(logreg.score(X_test,y_test)))

結果

Test set score:0.88

交差検証(Cross Validation)

交差検証は学習データを訓練セットとテストセットに分けて行う手法。
ホールドアウト法と違うのは

・すべてのデータが一度検証に使われる(=結果に偏りがなくなる)
・検証に重複がない
・ホールドアウト法をk回繰り返すのでより信頼度アップ

とメリットが多いです。
図にするとこう。

download.png

コードはこちら(!pip install mglearnを忘れずに)


import mglearn
mglearn.plots.plot_cross_validation()

実際に検証してみましょう。


from sklearn.model_selection import cross_val_score
scores=cross_val_score(logreg,X,y)
print("Cross-validation scores:{}".format(scores))
print("Average cross-validation scores:{}".format(scores.mean()))
Cross-validation scores:[0.9  0.9  0.9  0.8  0.95]
Average cross-validation scores:0.89

k-分割交差検証法

交差検証法の分割数を指定する検証法です。
上では5だったので3でやってみましょう。

scores=cross_val_score(logreg,X,y,cv=3)#cv:分割数
print("Cross-validation scores:{}".format(scores))
print("Average cross-validation scores:{}".format(scores.mean()))
Cross-validation scores:[0.88235294 0.84848485 0.90909091]
Average cross-validation scores:0.8799762329174095

参考文献

http://nobunaga.hatenablog.jp/entry/2018/07/28/114927
Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?