過学習:覚えすぎたモデル
決定木のレッスンで、「深すぎる木は、新しいデータに対してかえって予測を外しやすくなる」と説明しました。この現象を 過学習 と呼びます。
過学習したモデルは、訓練データに含まれていた偶然のばらつきや例外まで、すべて「ルール」として覚え込んでしまった状態です。「過去問の丸暗記」のたとえで言えば、問題の本質ではなく、過去問に書かれていた数字や言い回しまで丸ごと覚えてしまった生徒にあたります。
過学習は、次の2つの正解率を比べることで見つけられます。
実際に、この章の最後のミニプロジェクトで使う乳がんの診断データで、決定木の深さだけを変えて比べると次のようになります。
深さを制限しない木は訓練データを全問正解していますが、新しいデータでは、深さ3の単純な木に負けています。
ポイントは、訓練データでの正解率とテストデータでの正解率の差 です。訓練データではほぼ完璧なのにテストデータで大きく下がっているなら、過学習を疑います。逆に、どちらも低い場合は、モデルが単純すぎてデータの特徴を捉えきれていない「学習不足」の状態です。
過学習を防ぐ主な方法は、次の通りです。
- モデルを単純にする(決定木なら
max_depthを小さくする)
- 学習に使うデータを増やす
- 評価は必ずテストデータで行い、訓練データの成績だけで判断しない
この章の振り返り
この章では、「どれに当てはまるか」を予測する分類モデルを作り、それを正しく評価する方法を学びました。
- 分類 は、決まった選択肢(クラス)から1つを選ぶ問題。ラベルの番号には大小の意味がない
- ロジスティック回帰 は、一次関数の結果をシグモイド関数で「確率」に変えて分類する。「正解に付けた確率が低いほど大きい罰」を、勾配降下法の考え方で小さくするように学習する
- 決定木 は、
ifの分岐にあたる質問をデータから自動で見つけて分類する。質問は、ジニ不純度(混ざり具合)が最も小さくなるものが選ばれる
- 訓練データとテストデータ を分け、テストデータは最後の評価だけに使う。データリークに注意する
- 評価指標 は目的に応じて選ぶ。不均衡データでは正解率だけでは不十分で、再現率・適合率を見る
- 過学習 は、訓練データとテストデータの成績の差から見つける
前の章では「モデルを作る」ことが中心でしたが、この章では「作ったモデルを信用してよいか」を確かめる考え方が加わりました。実務では、モデルを作る時間よりも、評価して改善する時間の方がずっと長くなることも珍しくありません。
精度の先にある視点
評価指標が良くても、それだけで十分とは限りません。例えば、学習データに特定の年代や地域の人が少なかった場合、全体の再現率は高くても、その人たちに対してだけ見逃しが多い、ということが起こりえます。精度だけでなく、誰に対しても公平に機能しているか を確かめる視点も、AIを作る人には求められます。
ミニプロジェクト:乳がんの診断データで分類モデルを作る
最後に、scikit-learnに付属している実際の医療データ「乳がん診断データ(Breast Cancer Wisconsin)」を使って、この章の流れを通して実装します。
このデータには、569件の腫瘍の細胞核を画像から計測した30種類の数値(大きさ、形のなめらかさなど)と、その腫瘍が「悪性(0)」か「良性(1)」かのラベルが入っています。
from sklearn.datasets import load_breast_cancer
data = load_breast_cancer()
X, y = data.data, data.target
X.shape # → (569, 30): 569件 × 30項目
次の演習では、次の流れを自分で組み立てます。
- データを訓練データとテストデータに 分割 する
- 決定木のモデルを、訓練データだけで学習 させる
- テストデータで評価 する
コードの穴埋めは少しだけですが、「どのデータを、どの段階で使うか」を正しく判断することがこの演習の本題です。この章で学んだ「データリーク」や「過去問の丸暗記」の話を思い出しながら取り組んでください。
このレッスンを終えると、教材のStage4(分類モデルの作成と評価)が完了となります。お疲れ様でした。
次の章では、この章のロジスティック回帰を部品としてたくさんつなげた ニューラルネットワーク の仕組みを学びます。ディープラーニングの土台となる考え方です。
※このデータは機械学習の学習用に広く使われているもので、ここで作るモデルを実際の診断に使うことはできません。
出典: Wolberg, W., Mangasarian, O., Street, N., & Street, W. (1993). Breast Cancer Wisconsin (Diagnostic) [Dataset]. UCI Machine Learning Repository. ライセンス: CC BY 4.0