コラムデータ分析

データ解析、AI実装におけるPythonとR

データ解析、AI実装におけるPythonとR

 データ解析やAI実装の仕事をするうえで最もよく使われるプログラム言語といえば、PythonとRではないでしょうか。どちらもインタプリタ言語で、プログラムを逐次解釈しながら、コンピュータが実行可能形式に変換し処理を進めます。インタプリタ言語はコンパイル言語と比べてとても処理速度が遅いですが、データ型の宣言が不要など、文法自体がシンプルになっていることが多いため初学者でも取り組みやすいこと大きなが特徴です。どちらの言語も豊富な計算パッケージが用意されているので、あまり数値計算自体のプログラミングをせずにデータを数理モデルへあてはめたり、機械学習法を適用したりできるので、現場ではとても重宝されています。

 PythonとRのもっとも大きな違いは、対象とする作業範囲です。Pythonはコンピュータ上で行われる一般的な作業をおおむねカバーすることを目的とした汎用言語であるのに対し、Rは多様なデータ解析を実現することのみを目的として作られている専門言語になります。
 日本ではPythonを使ってデータをハンドリングする技術者や社会人がとても多いです。これは社会的なニーズとしてAIを実装するという仕事が多く、その発注先であるIT企業の開発体制に起因しているように思われます。実際、PythonはOSのシステムコールや通信プロトコルのサポートなども簡単にできるので、システムにおけるAI以外の部分の実装にも容易に使えることから現場のプログラマーから多く支持されています。さらにPythonは人工知能の研究者の中では最もメジャーなインタプリタ言語であり、最先端のAI研究の成果はPythonで実装されていることがとても多いことも、熱い支持を受けている理由の一つでしょう。実際、人工知能学会の発表や論文ではPythonを使った研究が数多く見られます。
 一方で、統計関連の学会へ目を向けるとRがもっともメジャーな言語になります。日本の統計関連の6つの学会が合同で開催する連合大会の発表へ目を向ければ、データ分析の大半はRで行われていることがわかります。これはRの前身であるS言語が、データを視覚化しつつデータ解析をすすめていく探索的データ解析を実現するために設計されたこともあり、その設計を継承しているRは人間が対話的にデータ解析するという点ではとても作業効率が良い言語になっているからです。また、インパクトファクターが11を超える権威のある統計ソフトウェアの研究雑誌 Journal of Statistical Software には、R以外の言語で実装されている論文はあほぼ見当たらないことからも、いわゆる統計の世界ではRがデファクトスタンダードな言語だといえると思います。
 以上のことから、ディープラーニングを筆頭に人工知能の最新の潮流を追いかけるのであればPythonのパッケージを、最新の統計的データ解析や統計的機械学習を追いかけるのであればRのパッケージを使うのが効率的だといえるでしょう。

 以下は私個人の見解ではありますが、個々のデータの発生メカニズムの解明はともかく、多様なビッグデータを組み合わせて正答率の高いAIを実現し、システムとして早く世に提供したいという目的であればPythonを使い、データの裏側にある現象のメカニズムを説明するために視覚的かつ対話的にデータ解析したり、その分析結果をもとに説明可能なAIを開発したりすることが目的あればRを使うほうが作業効率は良いと思っています。
 なお、どちらの言語も計算スピード自体はとても遅いので、高速で大量な計算をする必要があるのであれば、C言語などのコンパイル言語での実装は避けて通れないと思います。スピードが要求される現場であれば、lapack と呼ばれる線形代数(脚注1:AI開発やデータ分析では必須の数学です)のライブラリを使うことを検討してみてください(脚注2:ちなみに、PythonやRの数値計算機能の内部実装自体でもこの lapackが使われています)。
 これは完全に蛇足ですが、統計学会の会員である私が最も書いたプログラミング言語は、実はRではなくコンパイル言語のJavaでして、大学院生時代は数値計算も jlapack というjava 版のlapackを使っていました。当時作っていたJavaの統計システムやそのシステムを使う統計データの標準化の取り組みについては、もし機会があればこのコラムで紹介したいと思っています。

著者:横内大介 准教授(一橋大学大学院 )
編集:ADSリサーチアソシエーション事務局

※当サイト内コンテンツの無断転載・無断使用は禁止です