少しの論理的思考で人生を豊かにする。

ドイツの研究者のブログ。ライフハック的なことだったり、仮想通貨に関してだったり、機械学習だったり。雑多なことを書き連ねます。

統計と機械学習の共通点ってなに?

今日は統計と機械学習の共通点についてです。

f:id:masa_crypto:20180909072321p:plain

 

要点

統計と機械学習で解析できるデータや、やる作業はほとんど同じ。

だからこそ、モデル化する目的をしっかり確認。自分の考えの妥当性を検証したいなら統計、とりあえずデータ漁りしたいなら機械学習。

 

 

 

masa-crypto.hatenablog.com

 

 

前回は統計と機械学習の違いについて。元々の考え方の出発点が根本的に違うんだよ、ということでした。 とはいえ、同じデータを同じように解析できちゃうわけです。実際のところ。

 

 

 

例えば、体脂肪率をモデル化したい、体脂肪率の高い低いを説明するのに大事な要因を探りたいといった場合。各個人の体脂肪率を計って、その他に考えうる関係しそうな要因をいくつも用意するわけです(例:年収・スポーツ頻度・朝ごはんはパン派かお米派か・飲み会頻度・親の体脂肪率、とか。適当ですが)。

 

で、結局は統計も機械学習も、

1)集めたデータをエクセルシートなんかにまとめる

2)何らかの変数が目的変数(体脂肪率)と関係してるか確認のためにモデル化

3)モデル化した上でどの変数が強い説明力を持つか確認する

4)モデルがそれなりに妥当かどうか検証する(関連:説明力)

 

というワークフローは全く同じです。どっちも同じデータを使ってパターンを見るわけだから同じっちゃ―同じわけです。

 

だからこそ、統計と機械学習のやる作業が似ているからこそ、そのモデル化したい目的はなんなの?をしっかり自分に問う必要があるのです。

 

そこで前回書いた「違いとは何ぞや」を思い出してほしいのです。

説明したいの?予測したいの?

自分の考えた関係性を検証したいの?とりあえずデータ全部使って眺めたいの?

ここらへんを区別しとくと、どっちを使うかは明確になります。

 

実際、データ解析の依頼とか受けた際に、「これを機械学習でどうこうしてほしいんだけど・・」と言われても、相手の目的次第で統計手法をオススメしたりします。とはいえ、相談してくる以上、自分で何したらよいのかようわからん、という場合が多いので、色々話して、相手が仮説をもっていてそれを検証するのが目的かどうか(それなら統計で良い)というのを明らかにしていきます。「機械学習ってファンシーでマジカルなんだろ?やっちゃってよ!」みたいな輩が相談しにきたりした場合は、そもそも統計と機械学習の違いの話とか聞く耳持たない場合もあるので、そんな時はとりあえずもはや統計と機械学習どっちも適用して結果を比較したりもします。

 

 

・・とはいえ、最近は機械学習と統計、ちょっと境界線があいまいになってきてる部分もあったりしてですね。なんかお互いの分野の一部の人たちが少し歩み寄り始めたって感じの展開が10年前くらいから出てき始めてます(そこらへんも近日中に書きたいです)。

 

あと、機械学習って「データが大きい時に使うんじゃないの?」というご質問も受けたりして、でも実務だと小さいデータでも使うべきところもあるのよ、というのも近日中に書きます。

 

統計と機械学習の違いってなに?

統計と機械学習の違いってなに?これに答えます。

f:id:masa_crypto:20180909072321p:plain

 

データを使って、何かしらの有益な情報を得たい、というのは分野に関係なく求められることだと思います。まぁ良く使われるのは平均値だったり相関係数だったり、もう少し進むと回帰分析で簡単なモデルを作ったり。これは統計よね。

 

で、近年ビッグデータとか人工知能とかで脚光を浴びている機械学習(ディープラーニングなんてのも聞いたことあるかもしれません。これも機械学習の発展系です)。データを解析する、という点では統計と同じです。じゃあ、結局機械学習と統計、何が違うん?というのが今日の小咄。

 

僕はこれまで研究者として機械学習の論文を読み漁り、それらをまとめた総説なんてものも書いたりしているので、専門家です。データ解析コンサル的なこともしています。ただ、多様な解釈のうちの一意見に過ぎないという点はご注意を。

 

 

要点

1.統計は物事の解釈をするために、機械学習は予測をするために

2.統計は複雑なものを単純化する、機械学習は複雑なものを複雑なものとして扱う

3.統計はデータに強い仮定を置く、機械学習は仮定を置かない

 

統計?

統計は、たくさんのデータをいかに単純にまとめあげて傾向を掴めるか。統計は、ある問題が起こった場合の傾向、物事の全体像を掴みたい!というところを発端にしています(関連:統計の歴史を振り返る〜統計の3つの源流〜|統計学習の指導のために(先生向け))。要は、本質をとらえた少しの情報で説明したい

 

平均や分散を出すのも、仮説検定をするのも、あくまで人が物事を考える上でデータそのままだと情報が多すぎるから、なんとか情報量を減らして、物事をもっとシンプルに捉えたい、というところです。

 

で、どうやって単純化するか、ですよね。これの肝が「確率分布」になるわけです。データのばらつき、というのは、「ある確率分布に従う」という強い仮定を置くと、サンプル数が100個だろうが1000個だろうが、わずか数個のパラメーターというもので代表出来てしまう訳です。日本人男性全員の身長のほとんどが、171±5㎝で説明出来てしまう(値は適当です)、といったように。また、回帰分析なんかでも、どの変数が関係するか、場合によっては交互作用をもっているか、なんてのも仮定しないといけない。なので、基本的にはあくまで人の思考が前提にあってそれをサポートするのが統計なわけです。

 

 

機械学習?

機械学習は、たくさんの数値データからいかに精度の高い予測ができるか 。機械学習は、基本的に人工知能の一分野であり、「人間のニューロンを模したらイケてるんじゃね?」「どうやったらデータを人間の介入なしに機械が勝手に解析してくれるかな」というところからきてます。それには、少しの情報にまとめる必要な必ずしもなくて、とにかく精度の高い判断(要は予測)ができるものをデータから作りたい

 

統計とは全く異なります。平均や分散を出すのも、仮説検定をするのも、あくまで人が物事を考える上で必要なこと。そんなのは関係ない。そういった人間の思考で見落とすことがないよう、データのありとあらゆる情報を勝手に抜出して、データ内での関係の強いパターンを勝手に見つけ出したい。データそのままだと情報が多すぎるから、なんとか情報量を減らして、または確率分布のような仮定を置いて物事をもっとシンプルに捉えたい、なんてもってのほかだ!情報はとりあえず全部使ってみて、使える情報だけ残す。人の意思をデータ解析に極力介入させず、データのみで勝負する。これが機械学習。

 

 

 

 

余談ですが、決定木(CART)・バギング・ランダムフォレストなどの生みの親Leo Breimanさんのお話しを。サンプル数が数十個しかないのに、予測に使いたい説明変数が数千個とかある、という状況にでくわしたBreiman(どの遺伝子が癌の発現率に関係しているか知りたい、といった状況を想定して下さい。株価の予測でもいいです)。統計では、基本的にサンプル数は説明変数よりも5-10倍多くないと経験則的に苦しいです。なので、当然既存の統計手法なんてものは全く使えない。それでもコンサル的になんとか予測できるモデルを作らなきゃならない。そんななか、思いついたのが彼の機械学習アプローチらしいです(参考:Breiman 2001)。

 

なお、他の方々もこういった文章を書いたりしているようです。

きっと参考になると思います。

例:

tjo.hatenablog.com

qiita.com

最新:Iterative Random Forestが高次の交互作用を抽出できる期待のアルゴリズムか

機械学習は基本的に、入力と出力の間の関数が一切未知であるとした前提で、その謎の関数と同等の精度で結果を出せる関数をデータから見出すのが仕事です。なので基本的には統計と違って確率分布や線形性、どの変数間が交互作用を持つかなどは一切仮定しないです。

 

大前提、機械学習の哲学としては、「全ての情報は有益かもしれないという立場の元、最大限に予測精度を高める」ことを信条にしています。なので、予測精度がどれだけ高いか、というのが肝だったり。とはいえ、ブラックボックスを作るだけでは解釈までは難しい、せめてどの変数がどう出力に影響するのか?というのはある程度把握したいわけです。

 

で、よく言われるのが、機械学習は変数間の交互作用(Interaction)も勝手に見つけて考慮してくれるから強い、というやつです。特に、非線形で高次の交互作用(Nonlinear higher-order variable interaction)を上手くキャプチャーしてくれる、というやつ。たしかに、おそらく理論的にはそのような複雑な変数間の関係性を掴んでくれていたりするはず、ブラックボックスの中で。

 

しかしながら、「機械学習で高次の交互作用を捉えているというけど、じゃあどの変数がどういう風に関係しあっているの?」という質問に答えるすべがほとんどなかったりします。一応それっぽいアルゴリズムはいくつか提唱されているけど、大抵のものはいまいちな感じ。。そこでついに出てきた期待の(現時点おそらく最強)アルゴリズムが、BasuらによるiRFというやつです。

 

 Basu et al. (2018) Iterative random forests to discover predictive and stable high-order interactions. PNAS 

Iterative random forests to discover predictive and stable high-order interactions | PNAS

 

2017年にはすでにArxivに投稿されていて、強い興味を持っていたのですが、PNASに出てくるとは・・。

f:id:masa_crypto:20180907170618p:plain

これは、Random forestをベースにしていて、論文の事例では2次・3次・4次・5次・6次の交互作用を総当たりで評価して、どれが一番大事かを評価してみたりしています(上の図では3次までだけど、論文中には6次とか平気で出てきます)。面白いのは、例えば2次の交互作用(A*B)が重要でなくとも、3次(A*B*C)が大事だったりすること。こんなん、事前に式を立てるパラメトリックな統計では決して思いつけないですよね。このアルゴリズムを使うと、どの変数らを一緒に考えないといけないのか、というのが容易に抽出できるようになるかもしれません。

 

なお、Rで既にパッケージ化されているので、試してみたくもある。