Pythonを使ったデータ分析の学習 - その7(『予測する』とは?)
巷で評判の良いPythonオンライン教材、『【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門 | Udemy』を購入し、学習してみた。
前回エントリ(相関関係を見る)はこちらから。
# 本エントリ(セッション4)はプログラミングは無く、簡単な座学のみ
セクション4: 予測するってどういうこと?
目的変数と説明変数
「予測」とは、『データに基づいて』予測を行うことである。
根拠がないとただの占いである。
とのことで、数値の予測にしろラベルの予測にしろ、いずれにしてもデータに基づいた予測が必要である。
予測に必要となるデータは
・過去の売上実績数
・予測のヒントになりそうなもの(天気、来客数、気温)
と大きく2つに分別できる。
これを統計的な言葉で説明すると、
・過去の売上実績数=目的変数
・予測のヒントになりそうなもの(天気、来客数、気温)説明変数
となるので、覚えておく必要がある。
代表的な予測問題
代表的な2種類の予測問題がある。
1・回帰問題
目的変数が数値
例:明日の豆腐の売り上げは?
2・分類問題
目的変数がカテゴリ
例:この画像の料理名は何?
その他としてテキストマイニングなどのジャンルもある。
予測モデルを作るキホン
これから予測モデルを作っていく上での注意点を紹介する。
まずは以下の例を読んでみてほしい。
Aさんは上司から予測モデルを作ってくれと頼まれました。
Aさんは『全てのデータを使って』『すぐにモデリングを始めよう』と決め、作業を開始しました。
結果、予測精度99%の高精度のモデルができました。Aさんは早速作成したモデルを使って運用を始めたが、全く予測精度が出ず、上司に叱られてしまいました。
さぁ、なにがマズかったのだろうか?
答えは『全てのデータを使った点』と『すぐにモデリングを始めた点』である。
# 『』が付いている時点でお察しだが
しかしバカにはできない。
これは実際に起こり得る事象なのである。
具体的にどうすればよかったのか、以下にて説明する。
・いきなりモデリングを始めた = 基礎分析を怠ってはいけない
基礎分析は基本中の基本!
・全てのデータを使った = モデルが過学習(※)と呼ばれる状態となってしまった
※ 過学習=Overfittingと言われ、モデル製作に使ったデータだけに特化したモデルを使ってしまうこと
【部署A】
理系の男子は全員メガネをしている→「よし、男子がメガネしていれば100%理系や!これでモデル作ったろ!」
【部署B】
理系でメガネしていない男性が存在→「予測できない!」
これが過学習。
部署Aに特化しすぎたモデルであるため、部署Bに対応できていない。
要するに、
モデルは汎用性が求められる。
言い換えると、
モデルは”未知のデータ”も予測できることが望ましい
ではどのように未知のデータに対応できるモデルを作るのか??
答えはシンプルである。
元になるデータセットをデータAとデータBとの2つにわけて、
一方(データA)をモデルを作成する際の学習用データとし、
もう一方(データB)をモデルの評価用のデータとするのである。
つまり、
データAを元にモデルを作成し、
データBを使って予測をさせる。
そうすることで作成したモデルが未知のデータに対応できているか検証するのである。
こうすることで汎用的な予測モデルを作成できるのである。
まとめ
・予測とは
データに基づき、値を想定すること
・代表的な予測問題
回帰と分類
・汎用的な予測モデルを作るべし
データを分割する / 過学習に注意
セッション4はこれで終わり。
比較的軽めの内容だったがキリが良いので本エントリはここまで。
次回はセッション5から着手する。