公開日:2019/10/8
更新日:2019/10/8
キーワード:データサイエンス R言語
文字数:3800(読み終わるまでおよそ6分)
この記事でわかること
- R言語よりPythonを学ぶべき理由
- R言語の特徴(Pythonに対する強みと弱み)
はじめに
データサイエンスの世界で用いられるプログラミング言語は、PythonとR言語でかなりのシェアを占めています。
したがって、データサイエンスを勉強し始める方は、Pythonを選ぶかR言語を選ぶかで迷うことが多いと思います。
しかし、ここはあえて言い切らせて頂くと、これからデータサイエンスを学ばれる方はR言語よりPythonを選ぶべきです。
その理由と、R言語の特徴について解説したいと思います。
1. R言語の利用企業が減っている
2019年5月のマイナビニュースにて、以下の記事が掲載されました。
Rがトップ20位圏外へ、Pythonの採用が進む – 5月開発言語ランキング
https://news.mynavi.jp/article/20190509-820376/
1年くらい前は、データサイエンスと言えばR言語かPythonかと言われていましたが、最近になってR言語の人気はすっかり落ちてしまいました。
R言語の利用企業が減っている理由の一つは、機械学習ブームを巻き起こしたディープラーニングへの対応力が、Pythonに劣るためと考えられます。
また、R言語でウェブ開発することはできない(大変難しい)ですが、PythonにはDjangoやFlaskという便利なフレームワークがあることも関係していると思います。
WantedlyやGreeenで検索すると求人企業数は以下のようになっています。
Wantedly・・・Python 3911件 R言語711件
Greeen・・・・Python 1828件 R言語30件
同じ学習時間を投下するのであれば、少しでも仕事を得やすいプログラミング言語を選択すべきだと思います。
2. R言語の特徴
最近、データサイエンスの分野では、すっかりPythonの後塵を拝してしまった感のあるR言語ですが、決してデータ解析の実力がPythonに劣っているから、というわけではありません。
そこで、R言語の特徴を見ていきましょう。
1)Pythonに対する強み
①統計解析に強い
R言語は元々、統計学に携わる人向けに統計学者が開発したプログラム言語です。したがって、データ解析に関するライブラリは充実しており、最小限の労力でデータを解析するための環境が整備されています。
また、時系列解析については、forecastパッケージなどR言語の方がパッケージのラインナップが圧倒的に豊富です。
アンケートデータの解析結果から統計的に有意かどうかを読み解くのに便利なため、多くの調査会社ではR言語が採用されています。
Pyrthonも統計解析に関するライブラリは充実してきていますが、やはり統計解析の分野ではR言語に一日の長があります。
②データから何かを説明したいときに使いやすい
データを解析して、その結果を基に何かを説明することを目的とした統計的な処理は、R言語の方がやりやすいです。
例えば、重回帰分析を行えば、変数選択をすることが可能であり、重要な特徴量のみを回帰式に残してくれるので、重要な特徴量が何かなどの議論ができます。また、回帰分析のまとめもsummary関数で簡単に表示できます。一方、Pythonの場合は、すべての特徴量を使った回帰式しか作ってくれないので、そこからどの特徴量が重要なのかといった議論したいというときは、少し使いにくいです。また、回帰分析のまとめを表示するには、statsmodelsパッケージをインポートする必要があります。
また、グループAとグループBの母平均が同じと言えるかどうかの統計的検定を行いたいとき、ばらつきが同じか違うかで検定方法が異なります。R言語であれば、自動的に検定方法を使い分けてくれますが、Pythonだと自分で指定してあげる必要があります。
③プログラミング初心者は直感的に分かりやすい
プログラミング初心者は、R言語の方が感覚的に分かりやすいと思います。
例えば、a = [10, 20, 30, 40, 50]というリストの要素を参照したい場合を考えてみましょう。
要素の位置を表す番号をインデックス番号と言いますが、Pythonをはじめ一般的なプログラミング言語はインデックス番号は0から始まります。従って、最初の要素「10」を参照したいときは、
a[0]
と記述する必要があります。
プログラミングに慣れている人にとっては、インデックス番号が0から始まるのは当たり前のことですが、プログラミングに慣れていない人にとっては、これは非常に戸惑うところです。
一方、R言語はインデックス番号を1から数えます。したがって、最初の要素「10」を参照したいときは、
a[10]
と記述すればよいです。プログラミング初心者にとっては、R言語の数え方の方が直感的に分かりやすいのです。
④オンラインヘルプが充実している
R言語は、オンラインヘルプが非常に充実しています。help関数を使うか、調べたい関数の先頭に「?」をつけるだけで詳細なヘルプを表示してくれます。
プログラミングに慣れない間は、この充実したヘルプ機能はとても助かります。ただし、ヘルプは英語で書かれてはいるので、英語が苦手な方には辛いです。
⑤データ解析に関する専門書が充実している
前述したとおり、R言語は統計学に携わる人向けに開発された言語なので、アカデミックの世界では、非常に多くの方が使用しています。データ解析専門書は大学の指導者が書くことが多いため、必然的に専門書に掲載されるコードの例はR言語となります。
正しい解析の数学的な原理を本でしっかり学んで、本に掲載されているコードで試したいという方は、R言語を読めるとメリットがあります。
2)Pythonに対する弱み
①プログラミングという点では、Pythonより使いにくい
R言語は、プログラミング初心者にとっては直感的に分かりやすいプログラミング言語ですが、実際にコードを書くようになると、汎用スクリプト言語として普及しているPythonの方がすっきりしていて、コードを書きやすく、可読性も高いです。
また、データ分析を連続的にシステム上で回したい、といったような場合は、R言語では非常に苦しいですが、Pythonであれば容易に実現できます。
プログラミングという面で、R言語の最大の弱みは、メモリを多く使ってしまうということです。大容量のデータを扱ったとき、R言語ではメモリ不足で止まってしまうが、Pythonでは問題なく解析できてしまう、ということがあります。
②予測を目的とする機械学習はPythonの方が使いやすい
データで何かを説明したいときは、R言語は優秀な言語ですが、予測を目的とした機械学習は、Pythonの方が優れていると言えます。
Pythonの方が優れているのは、scikit-learnなど機械学習用のパッケージが豊富、最先端の手法はPythonで先に実装がされることが多い、Pythonの方が、機械学習の世界において存在感がとても強い、といった理由でしょうか。
機械学習の動向を追っていると、必然的にPythonに触れることになります。
③R言語にはディープラーニングのパッケージがほとんどない
ディープラーニングと言えば、Pythonの独壇場と言えます。Pythonにはパッケージが豊富にあり、新しい方法もPythonで実装されます。R言語にもディープラーニングのパッケージはありますが、Pythonでしか使えないフレームワークばかりというのが実情です。
現在のディープラーニングのフレームワークのデファクトスタンダードとも言える、TensorFlow/ PyTorch/ ChainerはすべてPython向けがメインで、基本的にRから呼び出すことはできません。
④システムへの実装には使えない
例えば、機械学習で予測モデルを作り、それを工場の設備に導入するという例を考えた場合、R言語を使うと、机上で予測モデルを作ることはできますが、その予測モデルを設備に実装しようと思うと、別の言語で実装用に新たにプログラミングするが必要となります。つまり、別の言語を覚えないといけないということです。
一方、Pythonであれば、機械学習によるモデル作りから、設備への実装まですべてできてしまいます。したがって、Pythonのみが使えればよいので、学習の負荷を抑えることができます。
3. まとめ
R言語の特徴を見てきました。
R言語にもPythonに対して強みはあり、R言語を採用している有名企業ももちろんあります
AirbnbのデータサイエンティストはなぜRが好きなのか?
https://qiita.com/KanNishida/items/8c80934d20a4981f73c1
Airbnbは宿泊施設・民宿を貸し出す人向けのウェブサイトを提供しており、データ解析でも非常に有名な企業です。
UIの改善や、不動産マッチングプラットホームとして様々なデータを解析しています。
そのAirbnbはR言語を選択しています。
しかし、求人数全体のマーケットを見れば、Pythonが圧勝なのは間違いありません。したがって、これからデータサイエンスを仕事にしていきたい方は、Pythonを選択しておけば間違いはないと言えます。
R言語の魅力に捕われてしまう前に、このメディアの読者の方はPythonを選択して頂けますと幸いです。
piponではエンジニアの皆様に業務委託や副業でAI・データサイエンスの案件をご紹介しています!
piponの案件にご興味がある方は以下のフォームにご登録ください。案件をご案内します。 https://share.hsforms.com/1qk0uPA_lSu-nUFIvih16CQegfgt