ysk_son’s diary

勉強の記録

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から着手する。