統計のモデルと機械学習のモデル、どう使い分ければよいのか


![Photo by Lubo Minar on Unsplash](https://qiita-image-store.s3.amazonaws.com/0/124978/aa3dcb43-e6f3-364f-caad-0ff279c6132c.jpeg)

以前、「[結局、機械学習と統計学は何が違うのか？](https://exploratory.io/note/kanaugust/aNL1RkQ0gB)」というポストの中で「統計と機械学習の違い」について、手法や技術的な側面から簡潔に説明していた記事を紹介しました。

今回は、もう一歩先に進んで、それでは、統計と機械学習のモデルがあった時、どう使い分ければいいのか」について簡潔にまとめられていた記事、"[Road Map for Choosing Between Statistical Modeling and Machine Learning](http://www.fharrell.com/post/stat-ml/)" を紹介したいと思います。

以下、要訳。

--- 

**Road Map for Choosing Between Statistical Modeling and Machine Learning by Frank Harrell** - [Link](http://www.fharrell.com/post/stat-ml/) 

統計モデルはデータ生成のメカニズムに確率を持ち込み、大抵の場合は未知の値を持つ解釈可能なパラメータ（例えば予測変数の影響（係数）、ターゲット変数（予測したい対象）の分布といったもの。）を持ちます。

統計モデルでよく使われるのは回帰モデルで、複数の予測変数の影響度を切り離して考えることができます。統計モデルには 線形回帰、ベイズ回帰、semiparametric models、一般加法モデル、longitudinal models、イベントまでの時間のモデル（生存分析）、罰則付き回帰モデル、などがあります。罰則付き回帰はリッジ回帰、ラッソ、エラスティック・ネットを含みます。

機械学習の研究者の多くが信じていることとは逆に、統計モデルは複雑さ（非線形性、二次の交互作用など）、制限がないほどに多い数の予測変数（もし罰則付き最尤推定法もしくは懐疑的事前分布を使うベイズモデルが使われれば。）といったことにも簡単に対応できます。Regression Splinesを使えば全ての連続的な予測変数に関してのなめらかで直線的でない影響度を調べることが簡単にできます

機械学習は典型的な統計パラメーターを使わずに、アルゴリズム的なアプローチをとります。そして予測変数と結果の間にある関係には前提となる構造は特に要求されません。機械学習は一般的に、一つ一つの変数の影響を単体では捉えようとはしません。

機械学習にはランダムフォレスト、再帰分割回帰木 (CART)（決定木など）、バギング、ブースティング、サポートベクターマシン、ニューラルネットワーク、深層学習などがあります。

機械学習はデータ生成のプロセスをモデルするのではなく、単純に手元にあるデータから学ぼうとします。機械学習は統計というよりは、コンピューターサイエンスの一部です。

機械学習と統計モデルの違いでもっともわかりやすいのは、統計モデルは予測変数の影響度を足していくことに重きを置くにの対して、機械学習はふつうそうした影響度の足し上げには特別な注意を払わないということです。

機械学習とAIは、ノイズ（雑音）からシグナルをわけやすい場合にすばらしい成功をおさめています。例えば、画像や音響の認識、言語の翻訳、しっかりとルールが定義されたゲームのプレイ、などがそうです。

こうしたものは、学習中にすばやいフィードバックが得ることができ、はっきりとした答えがあります。

しかし、例えば医療診断や人間の行動といったノイズからシグナルを切り分けにくい場合は状況が変わります。

機械学習の役に立つ一つの使い方としてレントゲン技師の専門的なイメージ解釈能力を模倣するためのパターン認識があります。

しかし、ある患者の症状、現象、リスク要因、デモグラフィックなどを考慮した上で、バイオプシー（生体から検体 をとって行う病理組織学的検査法）を行う必要のある確率を診断するとなったときには、役に立ちません。

## 統計モデルを選んだほうがいい場合

統計モデルを使うのがいい場合は以下のようなときです。

* 不確実性を備えていて、ノイズに対するシグナルの割合が大きくない場合。（例えば、双子がいたとして、その一人は大腸癌になるかもしれず、もう一人はならないかもしれない。）そうした結果にランダム性があるような場合は、Classification（分類）をするのではなく、傾向をモデルすべきです。
* 完璧なトレーニングデータを持っていない時。対象となるものを何度もテストできない場合。結果をエラーなしに評価できない場合。
* 少ない数の変数の影響度を切り離して評価したい場合。
* 全体的な予測の不確実性や予測変数の影響度を調べる必要がある場合。
* 足し上げていくことが予測変数の結果に与える影響の主な方法である場合。交互作用が比較的小さく、それは事前に定義できるような場合。
* データのサンプルサイズが大きくない場合。
* 例えば治療、施策、リスク要因といった特別な変数の影響を分けて考えたい場合。
* モデル全体を解釈したい場合。

## 機械学習モデルを選んだほうがいい場合

機械学習がよりよい選択であるのは以下のような場合です。

* ノイズからシグナルを切り離しやすい場合。予測される結果が強いランダム性を持たない場合。機械学習が得意とする画像認識では、例えば対象となる文字が「E」なのか「E」でないのかがはっきりしている。
* アルゴリズムが膨大な量の全く同じ結果が繰り返されるデータで学習することができる場合。（アルファベットのそれぞれの文字が1000回繰り返されるような場合）
* 全体的な予測がゴールであって、治療、施策といった一つの変数の影響は問題ではない場合。
* 予測における不確実性を推測することや選択された予測変数の影響度にはあまり興味が無い場合。
* データのサンプルサイズが大きい。
* モデルがブラックボックスで中で何が起きているかには興味が無い場合。


---

以上、要訳終わり。

以前にも「[結局、機械学習と統計学は何が違うのか？](https://exploratory.io/note/kanaugust/aNL1RkQ0gB)」という統計と機械学習の違いについた記事を紹介しましたが、今回、この記事を紹介しようと思ったのは、シグナル・ノイズ・レイシオについて書いてあった点がおもしろいと思ったからです。

ついつい、画像認識や言語の翻訳というと、データ量も多く、複雑なデータ構造をもっているので、かなり難しいことのような気がし、それをうまく処理して、よりよい予測の成果を出せるようになってきているのだから、最近のAI、正確には機械学習のアルゴリズムの進化はすごいということになり、ふだんのデータ分析もそういったアルゴリズムを使ったほうがもっと効率良くできると思いがちです。

しかし、よく考えてみると、こういったタイプのアプリケーションは、実は答えというものが、人間の目から見るとシンプルに決まっているわけです。「ホットドッグ」の写真は「ホットドッグ」だというのは人間からすれば明らかなわけで、それをコンピューターの力で自動的に判断させようとするのが難しい（難しかった）わけです。

ところが、この顧客は「1ヶ月以内にやめるかどうか」、「1年あたり1000ドル以上払ってくれる優良顧客になるか」、この患者は「1年以内にある病気になるか」というのを予測するというのは、答えがはっきりとしないので、どんなにデータが大量にあって、以前に比べてもっと進化したアルゴリズムをつかえるようになっても、まだ難しかったりします。

なぜなら、全く同じような属性を持った二人の顧客であっても、一人はやめるし、もう一人はやめないということがおきるからです。また、双子で同じような遺伝子と生活環境を持っていても、それでも一人は病気になって、もう一人はならないかもしれないからです。こういうのを、シグナル・ノイズ・レイシオ（割合）が低いといったりします。

そして実際のビジネスでは、こういったシグナル・ノイズ・レイシオ（割合）が低いデータばかりなのですが、こうした状況で、いろんな角度からデータを分析し、仮説を立て、実験し、検証し、といったステップを何度も繰り返しながら、リスクと確率を理解した上で、実際のビジネスの意思決定、さらにはアクションに結びつけていくという地道なことをやっていくわけですが、そうした時の思考プロセスに大いに役立つのが、統計学習系のアルゴリズムなのです。

個人的には、機械学習のアルゴリズムもデータ分析の一環で、使えるものはどんどんと使っていけばいいと思っていますが、この違いをはっきりと理解した上で使わないと、後で痛い目にあうことがある、つまり[データ・インフォームドではなくデータ・ドリブン](https://exploratory.io/note/kanaugust/jSb4nFO0MI)になってしまうはめになりかねないので気をつけたいですね。


# データサイエンス・ブートキャンプ、1月開催！

来年1月の中旬に、Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、[データサイエンス・ブートキャンプ](https://exploratory.io/training-jp?utm_campaign=choose_stats_ml&utm_medium=blog&utm_source=qiita)を東京で開催します。

データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報は[こちらのホームページ](https://exploratory.io/training-jp?utm_campaign=choose_stats_ml&utm_medium=blog&utm_source=qiita)にあります！

---

*Photo by Lubo Minar on [Unsplash](https://unsplash.com/photos/ECxwQjLRwLA)*