これは私達の行っているデータサイエンスのトレーニングで、日本でもグローバルでもよく聞かれる質問です。実は2年ほど前にこの質問に正面から真摯に答えていた"Machine Learning vs. Statistics"という、とても素晴らしい記事があるのですが、今日は、そちらの記事をみなさんに紹介してみたいと思います。
ちなみに、筆者のTom FawcettとDrew HardinはSilicon Valley Data Scienceというデータサイエンスのコンサルティング会社で、多くの有名企業がデータサイエンスを使ってビジネスの問題を解決するための支援を行っていました。ちなみに、その会社の方は去年、Appleに買収されています。さらに、Tomは、「Data Science for Business」(翻訳書:戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック)という有名な本の著者でもあります。こちらはビジネス側の人間にもわかりやすいようにデータサイエンスの手法を説明してあるので、おすすめです。
それではさっそく、本文の方に行ってみましょう。
以下、翻訳
歴史を振り返ると、機械学習はいつも統計学とぎこちない形で共存してきました。それはまるで、結婚式で、新婦の昔のボーイフレンドが新郎の家族とたまたま席が一緒になってしまったかのようです。両者とも会話がどこに向かうのか予想できず、気まずい思いをしながら時間を過ごしてしまうものです。
なぜこんなことになるかというと、実は機械学習が、多くの統計学の手法を取り入れてきたにもかかわらず、統計学を置き換える気はそもそもなく、さらにもっといえば、統計学の基本を踏襲する気も端からないからです。にもかかわらず、統計学者と機械学習を使う人はよく一緒に働くことになり、同じようなタスクをこなし、そしてお互いが何をやっているのか疑問に思ったりするものです。
機械学習とはおおまかにいうとハイブリッドな分野です。そのインスピレーションと手法は様々なところから拝借してきました。その歴史において、目指す方向はその時その時で変わり、外の世界にいる人達にとっては何か捉えどころのない不思議なものとして映ってきました。統計学は1つの分野として確立されているのですが、機械学習も統計学と重なる領域が多くあるため、「結局、統計学と機械学習は何が違うのか」という質問がよくでてくるわけです。そしてたくさんの答えが与えられてきました。
例えば、こちらは中立的、もしくは否定的なものです。
- 「機械学習とは結局のところ、応用統計学である。」
- 「機械学習とは統計学をかっこよくしたものだ。」
- 「機械学習とは統計学のビッグデータ版だ。」
- 「短い答えとしては、特に違いはない。」
まともに受け止めることは出来ないもの、ちょっと人を小馬鹿にしたようなものもあります。
- 「統計学では損失関数は事前に定義されていて、どういった手法を使うかに結びついている。機械学習では、あなたの問題解決のためにユニークな損失関数をプログラムして作ることになるでしょう。」
- 「機械学習とはコンピューターサイエンスは修了したが、統計学のコースは修了することができなかった人たちのものである。」
- 「機械学習は、統計学からモデルや仮説の検証を引いたものである。」
- 「機械学習が次の10年でどうなるかわからないが、どうなるにせよ、統計学者は自分たちの方がとっくにやっていたと泣き言を言っていることだろう。」
こうした質問は、Quora、StackExchange、LinkedIn、KDNuggetsや別のソーシャルメディアなどでもよく出てきます。
私達の一人(Tom)は機械学習のプロで、もう片方(Drew)は統計学のプロですが、何年もの間一緒に仕事をしてきて、お互いの分析と問題解決に対するアプローチを観察し、思考プロセスの違いを理解しようとして多くの議論を重ねてきました。そこで、データサイエンスの世界でのそれぞれの分野の役割に関しての私達の理解をもとに、その違いを正確にここで説明してみたいと思います。
アルゴリズムではなく、ゴールと戦略が違うのだ
ほんとの違いは、アルゴリズムや使い方にあるのではなく、目的や戦略にあると思います。どちらの分野ももう一つの分野の一部であるというのではなく、どちらも片方だけにしかない手法があるというものでもありません。それは、二人の老人が公園に座って二つの違うボードゲームを行っているかのようです。どちらのゲームも同じような台座を使い同じコマを使いますが、それぞれのゲームには異なるルールがあり、異なるゴールがあります。なぜならそれらは根本的に違うゲームだからです。それぞれの老人はお互いのゲームを見て、困惑した表情を見せ、お互いのことをあまりゲームがうまくないと思い合っているわけです。
このポストの目的は、その二つのゲームの違いを説明することです。
統計
統計も機械学習も両方、データからモデルを作ります。しかし目的が異なります。統計学者は特別な統計値(statistics)とよばれる指標を使うことにフォーカスします。これらの統計値は、元のデータを数少ない統計値に変換することでデータ量を減らします。二つのよく使われる統計値として、平均値と標準偏差というものがあります。統計学者はこうした統計値を異なった目的に使います。よくあるのは記述統計(descriptive statistics)と推測統計(inferential statisticas)とよばれるものです。
記述統計は元のデータの構造を統計値や可視化を使って表現するものです。複雑なデータをシンプルなかたちにすることで人間が理解しやすくします。例えば、株式市場にあるたくさんの会社の株価というデータを考えてみましょう。そこにある膨大なデータを見て何が起きているのかを理解するのは大変です。そこで、株式のコメンテーターはあるインデックス(日経平均など)が上がったか下がったか、もしくはどれくらいの割合で上がったか、下がったかについて話すのです。
推測統計はデータに対する考察に関わるものです。この分野におけるいくつかの成果は古く18世紀、19世紀まで遡りますが、大きな飛躍は、20世紀の初めにカール・ピアソン、RAフィッシャーなどが行った仕事の成果によるところが大きいです。推測統計は以下のような質問に答えようとするものです。
- トルネードのシェルターに入っている人たちのほうが、橋の下に隠れている人たちよりも生き残る可能性が高いか?
- 全人口の一部であるサンプルがあるとすると全人口はどれくらいいるのか?
- ある年にある町ではどれだけの人が医療の処方を受ける必要があるのか?
- 月あたりの経費を100回中99回払えるようにするにはどれだけのお金が銀行に残っていればいいのか?
- 何人くらいの人が明日スーパーに来るのか?
こうした質問は推定であり、予測であります。もし私達が完璧な情報を持っていればその答えを正確に計算することができるでしょう。しかし現実にはいつも不確定要素があります。ということは、どんな主張にも間違っている可能性があるのです。そして主張のタイプによってはおそらくいつも少しだけ間違っていることがあります。例えば、家の外の温度を推測しろと言われ、あなたは29.92130971と推測したとします。しかし、それが完璧に正解である可能性はほとんどないでしょう。それでも100歩譲って、たまたま完全に正解であったとしても、その10秒後にはもう違っているはずです。
推測統計はこうした問題を解決しようとします。どんなに最高の条件が揃っていたとしても、統計学者による主張には間違いがあることが、少なくともたまにはあります。そして残念ながら、同じデータから、偽陽性(false positives、陽性であると予測したが間違っていた場合)の可能性を、偽陰性(false negative、陰性であると予測したが間違っていた場合)の可能性を増やすことなしに減らすことはできないのです。変化が起きていると結論付ける前にもっと多くの証拠を要求すればするほど、眼の前で起きている変化はあなたの必要とするレベルの証拠を持たないものとなってしまうことが多々あります。
しかし、何らかの意思決定をしなければいけない時に、私達がより良い意志決定を行うためのフレームワークを、統計が提供してくれるのです。そこで、統計学者は様々な結果が起こりうる確率を調べることになります。ここで、統計学者はモデルを使います。統計学の世界でのモデルを作る目的は、私達にとって重要な質問に答えるというゴールを前提に、データの生成プロセスをおおまかに理解するためです。
モデルは推定や予測をするのに必要な数学的なフレームワークを提供します。実際には、統計学者は強い仮定を持ったモデルと弱い仮定を持ったモデルの間でトレードオフを行うことになります。強い仮定を持ったモデルを使うということは、一般的には、モデルの中により多くのバイアスが含まれる(これは良くないことです。)というリスクを背負いながら、推定量の分散を小さくすることを意味する(これは良いことです。)、もしくはその逆です。問題は、統計学者はどちらのアプローチが良いのかはっきりとわからないまま、どちらかのアプローチを選ばなくてはいけないということです。
統計学者は正式な結論をだすことを求められるので、ゴールは考えられうる全ての統計分析の結果を用意することになります。これはまるで法廷での鑑定人になるかのようです。
しかしこれはあくまで、こうありたいという理想的なゴールであって、実際のところ、統計学者は法廷での審査に耐えうるためのもというよりも、むしろシンプルな分析を行うものです。それでも、基本的な考えは同じです。つまり、統計学者は分析を行う時、その信憑性を疑われるということを前提に行うべきであって、一つ一つの分析における選択は批判に耐えうるものでなければいけないのです。
このことが意味することを理解することは重要です。分析が最終の成果物であるため、理想的にはそこで使われたデータの加工のステップ、特定のモデルの選択の根拠となる観察結果を含め、全ての分析のステップが文書化されて、再現可能であるべきです。モデルの全ての過程がリストアップされ、全ての検証の結果がレポートされているべきです。つまり、統計学者の分析というのは、モデルが与えられたデータに対して、いくつかの条件のもとに適切にフィットしていることを保証するものなのです。
まとめると、モデルの妥当性、モデルのパラメータの正確な推定、モデルからの推論といったものが統計学者にとっての主な関心事なわけです。その反面、機械学習においての大きな関心事である、まだ見えていないデータに対する予測というのは統計学者にとってはあまり大きな関心事ではないのです。統計学者は予測をするための技術はもっているのですが、それはあくまでも一般的には推論の中の特別なケースです。
機械学習
機械学習の歴史には多くの紆余曲折がありました。もともとはAIの一部であり、人間の知能は学習できるものだということが大きな関心事でした。過去数十年の間に、多くのAIに関するものがそうであったように、その関心の中心はエンジニアリング、パフォーマンスに関するアプローチの方に移ったようです。つまり、そのゴールは特定のタスクをより良いパフォーマンスで達成するというものです。機械学習の世界で、最も大きなタスクというのは予測モデルです。つまり、まだ分かっていない答えを予測するためのモデルを作るということです。ここで、ひとまず機械学習の他の関心事には目をつぶって話を進めましょう。というのも予測分析というのが機械学習の主要な領域であり、それこそが統計学とよく比較される関心事だからです。
予測分析では、答えのある過去データを機械学習のアルゴリズムに渡します。それぞれのデータポイントにはラベルがあり、それは問題のタイプによりますが、分類のタイプであればカテゴリーの名前であり、回帰のタイプであれば数値となります。このアルゴリズムは予測のためのモデルを作ります。詳しく言うと、学習のアルゴリズムは答えのあるデータを分析し、新しいデータに対して正確にラベルをつけるための手順ともいえるものを定義します。データの一部は後でそのモデルを検証するときのために残され、モデルを作るときには使われません。また、ブートストラップやクロスバリデーションといった手法では、同じデータが何度も検証のために使われたりもします。
こうして作られる予測モデルには大きな価値があります。良いパフォーマンスを出すモデルは、どのカスタマーがより価値が高いのか、どの取引のトランザクションが怪しいのか、どのカスタマーの貸出リスクが高いのか低いのか、どのデバイスが故障するのか、どの患者がガンなのか等を予測することが出来ます。これは未来が過去とほぼ同じで、過去によく観られたパターンは将来も起こると仮定することになります。もちろん、これはある一定の因果関係を 仮定することになりますが、そうした仮定は検証される必要があります。
統計学とは対象的に、ここでのゴールは最高の予測結果を生成するということにあります。機械学習を使う人達はある程度の探索的データ分析を行いますが、それはあくまでも機械学習のアルゴリズムに渡すデータを準備するためであり、どの属性を使い、どのタイプのモデルを使うかを判断するためです。ここで作られるモデルはデータの生成プロセスに対する信頼性や整合性を保証するためのものではありません。その目的は極めて機能的なものなのです。機械学習を使う人たちにはモデルの整合性を証明することが求められません。機械学習においてはこうしたことには意味がないのです。なぜならモデルはよりよい予測の精度を上げるための手段に過ぎないからです。機械学習のモットーがあるとすれば、「モデルの信頼性というのはテストすることで得られる」というものです。
このアプローチから、機械学習が統計学とどう違うのかに関しての重要な点を見い出すことができます。
機械学習を使う人達は、モデルの仮定や検証といった心配をする必要がありません。モデルの仮定が問題になるのは、悪い予測結果を出した時のみです。もちろん、どのモデルのタイプを使うかを決めるためのガイドとして、標準的な探索的データ分析(exploratory data analysis (EDA))は行います。しかし、テスト用のデータを使った予測の精度こそがモデルの品質の最終的な権威であり、機械学習を使う人達は、普通、モデルの仮定の検証をモデルの予測精度の評価にまかせます。
おそらくもっと重要なのは、機械学習を使う人達は仮定が満たされないときでも、それなりの予測結果をモデルが出すことが出来るというような難しい場合の心配をしなくていいのです。例えば、ナイーブベイズの分類アルゴリズムは属性同士が独立していることを仮定します。しかし実際には、属性同士に依存関係があったとしてもしっかりとした予測結果を出すことが出来ます。同じように、ロジスティック回帰のアルゴリズムは予測の変数同士に相関関係がないことを仮定しますが、実際には相関関係があっても大丈夫だったりすることがよくあります。もとになるデータが正規分布になっていることを仮定するアルゴリズムも、実際にはなんとなく正規分布っぽいデータの時でも使えたりします。
統計学者と違って、機械学習を使う人達はサンプルは静的な母集団から他のサンプルとは独立なものとして、毎回同じ確率分布で値が決定すると仮定し、それは母集団を表すものであると仮定します。もし母集団に変化があれば、そのサンプルはもはや母集団を代表するものではないとということになり、全ての予測結果には意味がなくなります。言い方を変えると、テストに使われるデータは分析対象の母集団からランダムに取られたサンプルであるということです。もし母集団が変わってしまうのであれば、いくつかの手法を用いて検証し調整することも出来ますが、大抵の場合は、サンプルが母集団を代表しなくなってしまうことに対して、機械学習を使う人達は責任を負いません。
予測分析のゴールは、最終的にはそうした予測の仕組みを(システムやサービスとして)デプロイし、意志決定を自動化することにあります。それはデータを入れて、なんらかの決定を出すというパイプラインの一部になります。そこで、データサイエンティストはコンピュータ処理に関して理解している必要があります。予測モデルやその仕組がどう実装されるのか、どれくらい速く処理されなければいけないのか、このモデルはどこからデータを取ってきて、最終的な決定に対して何を行うのか、といったことに関してです。
このようなコンピュータ処理に関することは統計学者にとっての関心の対象ではありません。統計学者にとって機械学習というのは科学というよりも工学の学問のようであり、ある意味それは的を得ていると言えるでしょう。機械学習を使う人たちはモデルの選択や仮定を正当化する必要がないので、たくさんのモデルの中から自由に組み合わせて使うことが出来ます。どんな機械学習の手法でも最終的には一つの検証のタイプがあるのみです。それはテストデータを使った予測精度の検証です。機械学習はよく大量のデータを扱うので、機械学習を使う人たちは、パラメトリックなモデル(母集団の分布を仮定しているモデル)に比べてもっと大量のデータを必要とするノン・パラメトリックのモデル(母集団に対して特に仮定を持っていないモデル)を使うことが出来ます。
よくある例として、ランダム・フォレストや勾配ブースティング(原文:boosted decision tress / ブーステッド・決定木)の場合を考えてみましょう。これらのアルゴリズムがどう動くかといった理論はよく知られ理解されています。共にノン・パラメトリックで比較的大量のデータを必要とします。どちらも仮説の検証のためのテストはなく、いつ使えるか使えないかと行った仮定もありません。どちらもただ単純に予測結果を返すだけのブラックボックス(中身の見えない)なモデルです。こうした理由から、統計学者はこうしたモデルを使うことにたいして躊躇します。しかしこれらのモデルは、予測精度ということに関しては、驚くほど素晴らしい成果をたたき出します、両者とも、多くのKaggleのコンテストで高いスコアをはじき出し、参加者たちがよく使うモデルなのです。
まとめ
クラスタリング、アソシエーション分析、特徴選択、モデル評価の手法など、まだここでは話していない素晴らしいトピックが統計学と機械学習にはあります。この二つの分野はこうしたものをいつも同じように捉えているとはいえませんが、基本的な使用方法については同じようなものです。ここでは、予測モデルというトピックに的を絞って話をしてきました。というのも、このトピックこそが二つの分野の間に大きな摩擦を起こしているようだからです。
まとめると、統計も機械学習もデータサイエンスへ貢献しているという点では変わりないのですが、ゴールが違い貢献の仕方も違います。手法や理論は重なる部分があるかもしれませんが、その目的はまったく違います。ですので、機械学習を「応用統計」と呼ぶのは誤解の元ですし、二つのそれぞれの分野に対しての侮辱です。
機械学習は一般的にはコンピュータ・サイエンスの授業の一環として教えられてきました。そして統計学は、統計学専門の学部で教えられるか、数学の学部の一環として教えられてきました。コンピュータ・サイエンティストはソフトウェアのパッケージの一部として使われる現実の世界のアルゴリズムをデザインするように教えられてきたのに対して、統計学者は科学研究のための数学的な土台を提供するように教えられてきました。多くの場合は、二つの分野は同じことを説明するのに別の言葉を使っていたりします。
しかし、二つの分野の違ったアプローチはとても重要な点を共有します。それは基本的には機械学習も統計学もデータを使って問題を解決するという点です。過去数年の間にたくさんの人たちと議論を重ねてきましたが、私達はみんな同じ基本的な課題に関して思考をめぐらせているのです。機械学習は予測を強調し、統計学は推定と推論を強調します。しかしどちらも数学的な手法を使って質問に答えることに関心があるのです。そしておそらくもっと重要なのは、一緒に議論していくことはそれぞれの分野をより良くしていくことになります。例えば、正則化(regularization)やリサンプリングなどは両方の分野からの貢献が改善につながったいい例です。
以上、翻訳
冒頭にも述べたように、私どもの提供するトレーニングでも、よく統計学と機械学習の違いは何なのかという質問を受けます。これに関してはいくつか考えられると思います。
1つは、そもそもAI、機械学習を使ったプロダクト、サービス、またはトレーニングと謳っていても、中身を開けると実は統計学の世界では昔からあるアルゴリズムだったということが世間一般によくあります。こうした何でもかんでもAIと簡単に呼んでしまう現在の風潮が、機械学習と統計学の違いを余計わかりにくくしているのだと思います。ここに関しては、私達を含め全てのデータサイエンスのサービス、プロダクト、またはトレーニングやセミナー等を提供する立場にある人達は、より正しい情報を真摯に伝えていく責任があると思います。
さらに、ここ最近の特にエンジニアを中心としたデータサイエンスのブームでは、統計学の知識がなくとも、大量のデータさえあればそれなりの予測結果を出してくれる複雑な機械学習のアルゴリズムに脚光が集まっていますが、結局、ビジネスの意志決定に関わるようなデータ分析では、予測の結果よりも、因果関係の方が価値があり、そういう場面では統計学のアルゴリズムがよく使われます。最近紹介したNetflixのプロダクト部門が行っているような分析でもまさにこうした統計学の手法を使っています。そこで、結局、機械学習と統計学は何が違うのかということになるのだと思います。
ここで紹介した記事の中にもあるように、私も機械学習と統計学の違いとはアルゴリズムやテクノロジーというよりも、その目的さらには戦略にあるのだと思います。しかしこの違いは、どっちが優れているかということではありません。むしろ、その時その時の目的に応じてどちらでも使いこなせるようになっておくことが、よりよい意志決定を行って行くためには重要なのではないでしょうか。
統計学のバックグラウンドを持つ人は統計学の手法に偏ったスキルの習得に励み、エンジニアリングに強い人は機械学習の手法に偏ったスキルの習得に励むというのが、ここシリコンバレーでさえよく見られます。しかし、これからはそういった垣根を超えて、もっと「データを使ってより良い意志決定を行っていく」という目的のための幅広いスキルの習得、向上がデータを分析する立場にある人には求められていくのではないかと思います。実際私の知っているデータサイエンティストの多くが機械学習のアルゴリズムと統計学のアルゴリズムをハイブリッドに使いまわしているのをよく見かけます。
この辺の話をもっと聞きたい方、こうしたスキルを身に着けたい方は、ぜひ私どもの提供するデータサイエンスのトレーニングへの参加を検討してみて下さい。
それでは、今日は以上です。
この6月の下旬に、Exploratory社がシリコンバレーで行っているトレーニングプログラムを日本向けにした、データサイエンス・ブートキャンプを東京で開催します。データサイエンスの手法を基礎から体系的に、プログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に参加を検討してみてください。詳しい情報はこちらのホームページにあります!