先日、第3の波ーAI、機械学習、データサイエンスの民主化という記事の中でも話したように、今では世界中のどこでもデータサイエンスの世界ではRもしくはPythonといったオープンソースのプログラミング言語やツールが広く使われるようになりました。
実際私たちも特にシリコンバレーの様々なタイプのお客様と接することが多々ありますが、最近ではいよいよSASもしくはSPSSといった古くからあるエンタープライズ向けのデータ分析・統計ツールを会社で使用するためにかかる莫大なコストを見直すという圧力が日々大きくなっているようで、新規のプロジェクト、もしくは新規に雇用された人たちがそういった経費の承認を得るのは基本的にありえないか、あってもかなり大変らしいです。で、結局、どうせSASもしくはSPSSを使ってやろうとしてることは何でもRもしくはPythonを使ってできてしまうし、さらにもっと多くの最先端のアルゴリズムにアクセスできるということで、どんどんその移行が起こっているようです。そういったわけで、そういったプログラミング言語のトレーニングであったり、もしくは私どものExploratoryのようなプログラミングなしでRのさまざな機能にアクセスすることができるツールなどに対する需要が高まり始めているわけです。
ただそうはいっても実際には古くからある会社や大きな会社で、そうしたコストがまだ見える形で問題になってない場合などは、今でも大金を払ってSASもしくはSPSSを使っているところが多いというのも現実です。そこで、今日はヨーロッパの方でデータ分析のコンサルテーションを行っているデータサイエンティストのJeroem Krommeが彼のチームの経験をもとに、R、Python、SAS、SPSSといった主要なデータサイエンス関連のツールをわかりやすく比較し、またそういったツールの導入に際してのアドバイスをこちらの方にまとめていたものを、本人の了解を得た上でこちらに日本語に訳したものをみなさんに紹介させていただきたいと思います。
<翻訳ここから>
お客様のデータ分析関連のプロジェクトをやっていてよく見かけるのはSAS、SPSS、R、Pythonですが、その中でもSAS、SPSSがおそらく一番良く使われているのではないでしょうか。ただ、オープンソースのプログラミング言語である R、Pythonに対する顧客の興味は日々増すばかりです。最近では幾つかの私たちのお客様もSAS、SPSSからRもしくはPythonへと移行してしまいました。さらに、もしまだ移行していなかったとしても、最近の商業用のソフトウェア(SAS、SPSSを含む)はR、Pythonを中から使えるようになっていたりするので、そうやって実際にはすでにRやPythonを使っていたりするわけです。
SASはもともとノース・カロライナ州立大学で農業の数値データを分析するのを主な目的として開発されました。SASの頭文字はStatistical Analysis System(統計的分析システム)から来ています。そうしたソフトウェアへの当時の需要をもとに、1976年にSASは会社として設立されました。
Statistical Package for the Social Sciences (社会科学のための統計パッケージ)つまりSPSSはもともと社会科学の分析のために開発されましたが、実はそれと同時に世界で最初のPC用の統計用プログラミング言語でもありました。最初スタンフォード大学で開発が始まりましたがその8年後SPSSとして会社が設立され、2009年にはIBMに買収されています。
R言語はもともと統計モデルを使った分析を主な目的としてニュージーランドのオークランド大学で開発が始まり、2000には最初のバージョンがオープンソースとして公開されました。
今まで見てきた他のツールと比べて、Python言語だけが大学で開発が始まらなかったプロジェクトです。Pythonはもともと、あるモンティ・パイソン(ここから名前がつきました)の好きなオランダ人によって作られました。彼はある年のクリスマスの間にやるプロジェクトを探していて、ABCというプログラミング言語をもとにPythonという新しい開発言語を作り上げました。ABCも実は同じ彼によってプログラマーではない人にプログラミングを教えるということを目的に作られました。PythonはC++やJavaと一緒で、多目的なプログラミング言語です。ただしそういった言語に比べて圧倒的に学びやすいのが特徴です。その後沢山のプログラマーたちが数多くのモジュールを開発し、最近では様々な統計的な分析をするためのツールが揃ってきたことによって、今日、前述の統計ツールと一緒にリストアップされるのに相応しいレベルになっています。
この記事では、この4つの言語を手法、技術、学びやすさ、可視化、サポート体制、そしてコストという観点から比べてみたいと思います。今回は特にプログラミング言語にフォーカスした比較ですので、SAS Enterprise Miner または SPSS ModelerのようなUIは今回の比較リストからは外してます。
統計的手法と技術
そもそもデータ分析をするときには、説明のための分析と予測のための分析の間をいったりきたりするものです。どちらの分析手法をとるかというのはその時々のゴールが何であるかによります。例えば、顧客の離脱もしくはキャンセルというのを例にとってみましょう。まずは何故顧客が離れていっているのかという質問があるかもしれませんし、もしくはどの顧客が離れていくのかという質問があるかもれしません。最初の質問の主な目的は顧客が何故離れていくのかを説明することです。2つ目の質問はどの顧客が辞めていくのかを予測することになります。これらは根本的にタイプの違う質問で、こうした違いがこの後どういった分析の手法をとるかに影響していきます。この予測の方がいわゆる一般にデータ・マイニング、または機械学習と言われるものです。
SASとSPSSはもともと仮説検定という視点が重要な学問の場で開発されたこともあって、説明のためのデータ分析を起源としています。ですので機械学習・AIなどのアルゴリズムはRやPythonに比べると圧倒的に少ないです。もちろん両ツールとも最近ではSAS Enterprise MinerもしくはSPSS Modelerといった予測モデルを作るのに適したパッケージも出てきてはいますが、それらは全く本体とは別のツールであり、さらに別のライセンスが必要になります。
オープンソースのソフトウェアが優れている理由はたくさんありますが、その中でもそのコミュニティによって絶えず改善されていくという点、機能がどんどん追加されていくという点は特に注目されるべきでしょう。Rはもともと大学のような学問や研究に携わる人たちが自分たちで作ったアルゴリズムをできるだけ多くの世界の人たちに使ってもらいたいと考えて作られました。そういったこともあって、Rはアルゴリズムの種類と数に関して、説明するための分析と予測するための分析の両方で強力であると言えるでしょう。
それに対し、Pythonは学問・研究もしくは統計学の視点からというよりはもともとビジネス・アプリケーションを作るということにフォーカスして開発されたということもあって、アプリケーションの中で直接使いたいという時に特に強いです。そんなわけで、その統計的な機能も予測するといった側面が強いと言えます。Pythonはデータの分析者が間に入ることのないような機械学習のアプリケーションの中でよく使われます。ですので、Pythonは画像やビデオを処理して分析するといった場合などにも強いです。たとえば私たちは昨年の夏に独自の自動運転のラジコンの車をPythonを使って作りました。あと、PythonはSparkのようなビッグ・データのフレームワークを使う時などにも一番使いやすい言語でしょう。
学び易さ
SASもSPSSも総合的なUIがあるので、ユーザーはいつもプログラミングをしなくてはいけないということはありません。さらに、SPSSはペースト関数というものがあって、実行されているステップをもとにコードを生成することができます。SASはProc SQLというものがあって、SQLを知っている人たちにとっては比較的とっつきやすいかもしれません。ただ、両ツールともそれぞれ全く違うシンタックスを使ってますし、他のどのプログラミング言語と比べても全く違うものなので、もしこのうちのどれかを学ばなくてはいけない状況に遭遇してしまった場合は、お気の毒さまというしかありません。
RにもRattleなど古くからあるUIベースのソリューションもあるにはありますがSASやSPSSと比べると全くかなわないといったところでしょうか。Rはプログラマーにとっては簡単に学べる言語ですが、ただほとんどのデータ分析者はプログラミングの経験がないというのが現実です。ですのでそういった方達にとってはRは学びにくい言語ということになるでしょう。しかし一度基本を押さえてしまうとそのあとは比較的簡単になっていきます。そういうことで、私たちの方でもR言語でのプログラミングを経験することのできる教育コースを、これからデータサイエンティストになりたいという人たちのために作りました。
Pythonは先ほども話しましたように、もともとプログラマーではない人たちにプログラミングを教えるために作られたABCという言語をもとに作られているということもあって、その記述されたスクリプトは読みやすく、一番学びやすい言語と言えるでしょう。Pythonは一般的なプログラミング言語ですのでUIというものがあるわけではありません。
まとめるとSAS/SPSSが学び始めるという点ではプログラミングなしでも分析をすることができるという点で、一番始めやすい言語と言えるかもしれません。
サポート
SAS、SPSS、どちらも商用ソフトウェアですので正式なサポートがあります。これは幾つかの会社にとってこうしたツールを選ぶ理由にもなるのではないでしょうか。というのも何か問題に当たっときに助けてもらうことができるという安心感があるからです。
それに対して、オープンソースのツールに対するサポートは、あまり期待できないのではないかというのが世間一般の認識ではないかと思います。しかし、現実はそうではありません。確かに、こうしたオープンソースのツールはその作成者などから直接サポートをしてもらえないかもしれないのですが、実際にはRでもPythonでもはるかに大きなコミュニティというものが自然発生的に形成されていて、たいていの場合はそこにいる多くの人たちが積極的に助けてくれるものなのです。例えば、99%以上の確率であなたが直面するであろう問題、質問はすでに誰かが報告していて、それをすでに誰かが例えばStack Overflow(技術系のQ&Aサイト)といったところなどで答えてしまっているものです。さらに、すでに幾つかの会社がRやPythonのサポートサービスを提供していたりします。ですので、皮肉にもRやPythonに関しては正式なサポートがないものの、実際に質問などがあったりした場合にはSASやSPSSに比べてはるかに早く答えが見つかるものなのです。
データの可視化
データの可視化に関しては、SASやSPSSもあるにはありますが極めて機能重視です。ちょっとした変更を加えることができるもののやはり本当にカスタマイズしようとすると、かなりめんどくさい、もしくは不可能です。その点、やはりRやPythonではもっとたくさんのことがカスタマイズできます。Rの世界で広く使われている可視化のツールとしてggplot2というものがありますが、基本的になんでも調整可能でさらにshinyというツールを使ってインタラクティブなアプリケーションを作ることも可能です。
RとPythonはお互いから絶えず学んでいっていますがその中の一つの優れた例として、実はPythonの方でも今日ではこのggplotに相当するものが提供されていたりします。Pythonでデータを可視化する時によく使われる別のモジュールとしてはMatplotlibというのがあります。
コスト
RとPythonはどちらもオープンソースですので、誰でも無料で使えます。もちろんそのダウンサイドとしては前述のようにSASまたはSPSSのようにUIのあるものに比べて学ぶのが大変ということはあるでしょう。結果として、RやPythonを使いこなすことのできるデータ分析者は、そうでない人たちに比べてもっと高い給料をもらっています。そして、現在そういったスキルのない人たちを教育するコストは無視のできるものではありません。ですので、実際にはオープンソースだからと言って完全に無料ということにはなりませんが、それを差し引いても、SASやSPSSなどのような未だにものすごく高いライセンス料を求めてくるツールに比べるとRとPythonはまだ断然安いと言えるでしょう。
私の選択
“Software is like sex, it’s better when it’s free”
— Linus Torvalds (creator Linux)
ソフトウェアというものはセックスみたいなもんで、フリー(ただ)である時が、よりいいものです。
ーリーナス・トーバルズ(Linuxの生みの親)
ちなみに私がデータ分析する時によく使うツールというのはRかPythonで、ライセンスを買うことなしに、さらにそういったものに煩わされることなしに、いつでもどこでも使えるのがいいです。ライセンス以外でRもしくはPythonを使う大きな理由としては、統計的な手法が幅広く充実しているからです。何と言ってもどんなタイプのアルゴリズムでも自分がその時に行っているデータ分析に最適なものを選んできて使えてしまうわけですから。
RとPythonどっちを使うかと聞かれると、それはその時々での最終的な目的によります。先ほども言いましたように、Pythonは多目的なプログラミング言語でアプリケーションを作るということにフォーカスされて作られた言語ですので、機械学習・AIに強いです。ですので、顔やオブジェクトの認識や深層学習をするアプリケーションを作るときにはPythonを使います。一方で、どの顧客がキャンセルするかといった予測だけでなく、なぜそうなるのかということを理解するために、顧客の行動パターンを理解するなどといったように、説明するための分析が求められる時はRを使います。
そうはいっても、この二つのプログラミング言語は相互補完なところがあります。例えば、Rの中からPythonのコードを実行するためのツール(reticulate, rPython)があったり、逆にPythonの中からRのコードを実行するためのツール (rpy2)があったりします。ですので、この二つの言語を混ぜて使うことができるのであれば、それはなお一層強力なソリューションになります。
<翻訳ここまで>
というわけで、一気に訳してみましたがどうだったでしょうか?
以下の点が特に注目できるのではないかと思います。
- SAS/SPSSはUIがあるので特にプログラミングの経験がない人は始めやすい。
ただ、そのライセンスはとても高い。 - R/Pythonはプログラミングの経験のない人にとっては始めるのが難しい。特にRはPythonに比べると最初はとっつきにくいかもしれない。
- R/PythonはSAS/SPSSに比べ、アルゴリズムの数が増える、機能が改善されていくスピードが圧倒的に早い。
- サポートに関しては、SAS/SPSSは商業的な正式なサポートはあるものの、実際に使うユーザーにとってはR/Pythonの方が、情熱的な世界中のユーザー・開発者によって自然発生的に形成されているコミュニティのおかげで、求めている情報を見つけやすいし、質問、問題もたいていはすでに別の人たちによって解決されていてそれがオンラインでシェアされていることがほとんど。
- Rは特に説明するための分析、または分析者がインタラクティブにデータを分析していきたいといった場面で特に使いやすい。さらに、もともと学問・研究の場から出てきたということで、統計、機械学習などのアルゴリズムは様々な領域をカバーしていてその数も非常にたくさんある。
- Pythonはもともと多目的なプログラミング言語で、アプリケーションを開発するための言語ということもあり、機械学習・AIを使ったアプリケーションを作る場合にその真価を発揮する。
こういった比較をする記事などにありがちな、製品を売っているベンダーの匂いのする比較ではなく、実際に現場でデータ分析を長年行っている人の視点での比較ということで、フェア(公平)で、さらに要点を絞って分かりやすく総合的にまとめられているという点で、こうしたツールの選択で迷っている、もしくは現在使っているツール以外にも興味があるといった方には特に役立つ記事と言えるのではないでしょうか。
データサイエンス・ブートキャンプ・トレーニング
最後に手前味噌になりますが、こうしたRやPythonといったオープンソースの最先端のデータサイエンスのツールまたはアルゴリズムを使ってもっとビジネスを改善してみたいと思ってはいるが、プログラミングという壁があって始めることができていないという方に向けて、プログラミングなしでデータサイエンスができるようになるためのブートキャンプ・トレーニングを来月、6月に東京で行います。
もし興味のある方は是非こちらのページで詳細の方をご覧くださいませ。
By Kan (Twitter)