Project Jupyter
機械学習は、
- データ分析
- AIの開発
などで使われます。
データから有用な情報を引き出すときに、プログラミング言語で機械学習のコードを書くのは有効な手段です。
ここで突然ですが、
Project Jupyter
というワードを聞いたことはあるでしょうか。
Jupyterは、ジュピターまたはジュパイターと読みます。
Project Jupyterは、オープンソースソフトウェアを開発しているNPO(非営利組織)です。
プログラミング言語を使って、インタラクティブにデータサイエンス、科学計算をできるようにすることを目的に活動している団体です。
簡単に言うと、
プログラミング言語を用いたコンピュータでの計算をしやすくする環境を作ってきた、
ということですね。
このProject Jupyterは、多くのプログラミング言語をカバーしているのですが、その名前の由来が、
Ju(lia) + pyt(hon) + er
それぞれ、プログラミング言語のJulia、Python、Rから来ているということです。
それほど、コンピュータを使ったデータ処理について、この3言語が期待されて来たということが分かると思います。
Jupyterのスペルは、Jupiter(木星)ではありませんが、ガリレオが木星の衛星について記録していたノートへのオマージュも込めているとされています。
Project Jupyterが生み出したJupyter Notebookはデータ分析や機械学習で今でも広く使われています。
少し話がそれましたが、今日は、機械学習でよく用いられるJulia、Python、Rというプログラミング言語について紹介します。
特徴の違うこの3言語は、様々な場面で使われています。
Python
Pythonのプログラミング言語としての人気は、近年増しています。
機械学習やAI開発の領域に留まらず、
- アプリケーション開発
- 初等教育でのプログラミング言語入門
などで、幅広く使われています。
世界には様々なプログラミング言語人気ランキングや使用ランキングがあります。
ランキングでこれまで、上位の定番だった
- Java
- JavaScript
- C/C++
に並び、Pythonはトップ3に入ることが多くなってきています。
今では、世界で最大のプログラミング言語の1つになっています。
Pythonがここまで人気になった理由には様々なものがありますが、主に
- シンプルなコード
- 充実したエコシステム
- 求人が多い
という点があります。
Pythonのコードはとても書きやすく、読みやすいです。
Pythonの哲学は、The Zen of Python (Pythonの禅)として知られています。その中に、
Simple is better than complex. (複雑より、シンプルな方がいい。)
があります。
この基本姿勢があるので、Python言語の開発やコードを書く人もその影響を受けます。
必然的にPythonで書かれたコードを読むときにも、シンプルで読みやすい、ということになります。
このコードのシンプルさから、プログラミングの入門言語として、初等教育から大学まで広く世界中の教育現場でも普及するようになりました。
充実したエコシステム、に関しては少し「鶏が先か卵が先か」という話にはなりますが、
- 使いやすいライブラリやフレームワーク
- Windows、Mac、Linuxなど多くのOSで簡単に使える環境
などが最近初めて整った、というわけではありません。
これほどまでに人気になる前から、ライブラリやフレームワークの多さ、様々な環境で使えるという特徴は、ある程度Pythonの強みでした。
まさに、冒頭に紹介したProject Jupyterは、この「使いやすい環境整備」に力を入れてきたという経緯があります。
求人が多い、という点も近年のPython人気に拍車をかけています。
求人数は、国や業界によって特徴があるのですが、アメリカでの、Pythonが使えるエンジニアの需要は近年高まっていると言われています。
そのことが、プログラミング言語としてのPythonの人気を支える一つの要因になっていると思います。
これらPythonが人気の理由は、そのままPythonの特徴です。
- シンプルなコードであるため、プログラミング学習に着手しやすい
- 豊富なライブラリ / フレームワーク、充実した環境が用意されているため、データ分析やアプリケーション開発が行いやすい
ということです。
R
次に、Rです。
Rは、
- 統計解析
- データの分析と可視化
- 機械学習
の領域で広く用いられています。
特徴は、
- 解析に特化した言語
- 豊富なグラフ機能
- ツールとしての利便性
が挙げられます。
Pythonが汎用的なプログラミング言語として、アプリケーション開発からデータ分析までできるのに対して、Rは、基本的に解析を目的とした言語です。
そのため、解析に便利なパッケージ(Pythonでのライブラリのようなもの)が充実しています。
研究開発で特殊な分析をする場合には、PythonよりもRを用いるというケースが見られます。
データ分析では、分析結果の視覚化が非常に重要です。その点、Rはグラフ描画に関するいくつものパッケージ(ライブラリ)を用意しています。この点もRの強みです。
さらに、データ分析を目的にプログラミング言語を選択する場合に、Rは非常に便利です。
とても使いやすいツールなのです。例えば、学習コストが顕著ですが、
RとPythonをともにゼロから学んでデータ分析をする、
という状況を考えた時に、一般的にはRを選んだ方が早く分析までたどり着きます。
この使い勝手の良さ、取り組みやすさもRの強みです。
- 学術分野
- 研究開発
などで、プログラミング言語自体の学習コストを下げつつ、複雑なデータ分析をする、という場合に、Rは有力な選択肢になります。
Julia
最後は、Juliaです。
比較的最近開発されたJuliaは、PythonやRに比べると知名度は劣ります。
ただ、前者2つとは異なる強みがあります。
一言でで言うと、
簡単に書けて、処理速度が早い
ということです。
簡単に書けて、という部分はPythonやRと共通するものがあります。
先に紹介したこれら2つのプログラミング言語のようにコード自体は、シンプルです。
そのため、書きやすく、読みやすいコードを実現できる可能性が高いです。
処理速度が早い、に関しては、特にJuliaの強みです。
Pythonとの比較が分かりやすいと思います。Pythonは、先に紹介した通り多くの利点を持っていますが、大きな弱みとして、
処理速度が遅い、という点があります。
これは、簡単に言うと、プログラミングでコードを書いて、それを実行した時に、実行結果が出てくるまでに時間がかかるという意味です。
この点、Juliaは、きちんとコードを書けば、処理速度をPythonよりもかなり早くすることができます。
この、処理速度が遅い / 早いというのは、計算量が多くなる、複雑な計算をするなど高度な処理をする時に気になってくるポイントです。
Pythonの処理速度が遅いといっても、通常それほど問題にはならない範囲で「遅い」ということなのですが、
- 科学技術での高度な計算が必要な場面、例えば学術研究の分野
- 繰り返し大量の計算を行う場合、例えば研究開発の分野
などでは、Juliaが選択肢の一つとなります。
PythonやRに比べるとまだまだ、ライブラリ(パッケージ)といった外部ツールの数は多くありません。
しかし2012年にリリースされたJuliaは発展過程であり、今後PythonやRのように広く使われていく可能性はあります。
すぐに試せるJupyter言語
ここまで見てきたように
Python、R、Julia
3つのプログラミング言語は、それぞれ特徴を持っています。
どの言語も、比較的取り組みやすいプログラミング言語だと思います。
機械学習やデータ分析に興味がある、
という人は、一度使ってみるのがお勧めです。
その時に、
- Pythonでデータ分析しようとしたが、難しく感じたためRを試す
- Juliaで機械学習したが、処理速度はそれほど気にならないのでPythonでライブラリをたくさん使ってみる
など、1つの言語である程度感覚がつかめたら、他の言語も試してみると、違いが分かりより自分に合ったものが見つかると思います。
Jupyter言語 (Julia + Python + R)
お勧めです!
(注:Jupyter言語 という呼び方は、あまり見かけません。私はここで、3つの言語を合わせてそう読んでいます。)
コメント