2015年7月21日火曜日

分析モデル評価:Overfitting & Generalization

分析モデルの評価:Overfitting」からの続き。

If you torture the data long enough, it will confess.

これはノーベル賞受賞者の経済学者 Ronald Coase の言葉。その意味するところは、恣意的な理論を展開することへの警鐘で、以下のように解釈している

長いことデータをいじり倒せば、自分の思う通りの結果を得られる。

「データに基づく分析」と謳ってみたところで、都合の良いようにデータをいじり倒して、都合の良い分析結果を出すこともできる。データ分析が必ずしも客観的な分析とはならないことを示している。「社会調査のウソ」を改めて思い出してしまう。

冒頭の言葉は、Foster Provost, Tom Fawcett 著「Data Science for Business」の第 5 章「Overfitting and Its Avoidance(当てはまり過ぎとその回避)」で知った。本章は次の一節から始まる。

One of the most important fundamental notions of data science is that of overfitting and generalization.
データサイエンスにおいて重要な概念のひとつが overfitting と generalization.

overfitting とは「当てはまり過ぎ」。冒頭の "If you torture the data long enough, it will confess." overfitting の一種という気がする。

ここでは、前回の投稿と被りながらも、更に overfitting について突っ込み、データ分析が目指すべき generalization について模索してみた。


データ分析とは?

この疑問は前回の投稿の冒頭でも示した。前回は overfitting から焦点をブレさせないために、敢えて「データ分析は予測モデルの構築」という表現は避けた。これは、要するに「過去のデータから未来を予測する」ということ。つまり overfitting とは「過去のデータに一致し過ぎる分析」であり、データ分析において決して好ましいものではない。

もし仮に「未来は過去の完全な繰り返し」であるならば、この overfitting に問題はない。例えば「年収 1,000 万円以上の 30 代男性は、携帯電話の契約期間終了直前に 100% 解約する」など。ところが「未来は過去の完全な繰り返し」ではないが故に、未来予測をするデータ分析において overfitting の回避は必須となる。

overfitting の簡単な例を挙げる。

ある携帯電話会社の過去の顧客データから、解約予測をユーザー特性から判定する分析モデルを構築した。このモデルをテストしたところ、100%の確率で解約の有無を正確に予測した。このモデルは好ましい分析モデルと評価できるだろうか? 
注意:ユーザの特性が同じなら、常に同じ結果になると仮定(そもそも、こんな仮定からして常識的に破綻している)。

この分析モデルは table model と呼ばれる。つまり、過去データを全て格納したテーブルから、分析結果を出すモデル。上の例では、過去に解約したユーザ特性と完全に同じ特性を持つユーザを「解約」と判断する。つまり、単に「過去と同じ結果を返す」だけのモデル。逆に、過去に解約したユーザ特性にマッチしないユーザは、全て「継続」と判定するモデル。

ここで、判定する未来のデータは全て table model にとって未知のデータの場合、全て「継続」と判断する(table model が知る過去の「解約」データではないから)。よって

 Erraor rate = (解約数)÷ (解約数 + 継続数)

これは、左の P.115 の図 5-2 にある、軸の base error rate に相当する。

この図は fitting graph で、次の図 5-1 よりは「極端」に表記されている。青線は table modelError rate で、軸の 地点が "Complete memorization of training set" とあるように、全データの件数で、同時に Error rate はゼロになる。

5-2 の x 軸は「テーブルのレコード数」で一般的には「Complexity of model(モデルの複雑度合)」に相当する。軸の右に行くほどモデルは複雑になる。

過去データにマッチすればするほどモデルの複雑さは高まり、Error rate は低下するが、同時に overfitting の度合は高まる。先の例で「100% 正確に予測した」のは「未来が過去の繰り返し」が前提となり、明らかな overfitting と判定できる。

A model that looked perfect would be completely useless in practice!
一見完璧なモデルだが実務では全く使えない!

100% 予想できるモデルなどない」のです。


「天気予報」より勝るために

overfittinggeneralization については、本章冒頭の以下が簡潔に示している。

As discussed previously, we are interested in patterns that generalize—that predict well for instances that we have not yet observed. Finding chance occurrences in data that look like interesting patterns, but which do not generalize, is called overfitting the data. P.111

データ分析で最も関心があるのは「一般化されたパターン」で、未だ観測されていない事象を予測するもの。

以下は、overfitting の回避方法を述べているが、「データ分析」の定義でもある。要点部分を意訳した。

Unfortunately, the problem is insidious. The answer is not to use a data mining procedure that doesn’t overfit because all of them do. Nor is the answer to simply use models that produce less overfitting, because there is a fundamental tradeoff between model complexity and the possibility of overfitting. Sometimes we may simply want more complex models, because they will better capture the real complexities of the application and thereby be more accurate. There is no single choice or procedure that will eliminate overfitting. The best strategy is to recognize overfitting and to manage complexity in a principled way. P.113
overfitting の回避策は「overfitting の程度が低い」モデルを使うことではない。そこには、分析モデルの複雑さと overfitting の可能性とのトレードオフがあるから。overfitting を少なくさせる唯一の方法はない。最良の方法としてあるのは、ある原則に沿って overfitting を見つけてモデルの複雑度を管理すること。

「データ分析は予測モデルの構築」は、要するに「未来予想」でもあり、「今日と同じ明日を予想」するものではない。私としては、少なくとも「天気予報」より勝る分析モデルを構築していきたい。


天気『予想』だろ?」に続く。

0 件のコメント:

コメントを投稿