Help us understand the problem. What is going on with this article?

Pythonではじめる機械学習 モデルの評価と改良(交差検証)

学習内容の目次

モデルの評価と改良

  • 交差検証

要約

☆交差検証

  • データの分割を指定した回数行い,複数のモデルを訓練する
  • train_test_splitのように訓練セットとテストセットをランダムに分割しないため,安定した結果が得られる
  • 分割回数を5回に指定すると4/5(80%)を訓練データに,10回に指定すると9/10(90%)を訓練データに用いる

一連の流れ

In[1]:
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression

iris = load_iris()
logreg = LogisticRegression()

# cross_val_scoreはデフォルトで3分割を行う
scores = cross_val_score(logreg, iris.data, iris.target, cv=5)
print("Cross-validation scores: {}".format(scores))

Out[1]:
Cross-validation scores: [1.         0.96666667 0.93333333 0.9        1.        ]

In[2]:
# 平均値を用いて交差検証の結果をまとめる
print("Average cross-validation score; {:.2f}".format(scores.mean()))

Out[2]:
Average cross-validation score; 0.96

ポイント

交差検証

  • cv=でデータの分割回数を指定する
  • 分割後のスコア平均値を求めることで最終的な結果を得る
  • 主に回帰で用いるが,クラス分類で扱いたい場合にはKFold分割器を用いる
  • 学習が全く上手く行かない場合にはKfoldのshuffleパラメータをTrueに指定してみる
  • 様々な分類器(LeaveOneOut,ShuffleSplit,GropuKFold)を使い分ける

使用想定場面

☆交差検証

  • train_test_splitの結果が良くないときに,とりあえず交差検証を試してみるのがいいかも?
  • そうでなくても様々な分割回数で試して,train_test_splitとの結果と比較してみるのがいいかも
  • ただ,最初の1/3まではクラス0,2/3まではクラス1とデータが固まっている場合は適さない
  • データセットの種類や大きさによって,1つ抜き交差検証,シャッフル交差検証,グループ付き交差検証などを用いる
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away