paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

Pythonが機械学習やディープラーニングに使われがちな5つの理由

f:id:paiza:20180606170455j:plain
Photo by thekirbster
秋山です。

皆さんPythonは好きですか?私はPythonのブロックインデントや条件文の構文などが好きで、趣味や仕事で6・7年ぐらいPythonを使ってきました。むか~しはR言語などを勉強してみたりもしましたが、自分はちょっとR言語が苦手なので、今はデータ分析とかもPythonでやってます。

最近は機械学習やディープラーニングのためにPythonを勉強し始める人が増えてきましたが、機械学習初心者で「始めてみたいな~」という人の中には、そもそも何で「機械学習イコールPython必須」みたいな感じなのか、疑問な人もいるかと思います。

というわけで今回は、Pythonがなぜ機械学習やディープラーニングなどに使われがちなのか…についてちょこっと書いてみます。

Pythonは初期から行列計算ライブラリなどが整備されていた

Pythonが何で機械学習で使われているかって、数学やデータ分析系の強力なライブラリが充実しているからと言ってしまえばそれまでなんですが…。

Python自体は1991年に開発されて、1994年に1.0がリリースされています。

そして、もはや機械学習するなら使うのが当たり前みたいになっているPythonの計算ライブラリNumpyは、リリースされたのが1995年ごろです。(いつリリースされたのかはちょっとあいまいですが、もともとNumericとNumArrayという2つのライブラリが統合されてNumpyができたそうです)

意外と古いですよね。R言語は1995年にβ版がリリースなので、歴史としてはNumpyと近いですね。

Pythonは最近人気が出てきたので新しい言語と思っていた人もいるかもしれませんが、実は歴史が長く、そのぶんライブラリが充実しているという長所があります。

NumPy — NumPy

Pythonもライブラリもドキュメントが充実していてわかりやすい

Python自体の公式ドキュメントはもちろん、NumpyとかTensorFlowとかKerasとか……ライブラリのドキュメントも非常にわかりやすくまとまっています。

Pythonの公式チュートリアルなんかは非常に読みやすく、プログラミング初心者にもちょうどいいと思うので、これからPythonを始める人はぜひやってみてください。

Python チュートリアル — Python 3.6.5 ドキュメント

言語によってはそこまでドキュメントがやさしくない場合もあるので、(個人的にはR言語のドキュメントとか読んでてつらい…)これはPythonのよいところですね。

教育向きの言語としても使われ、学術目的での利用が広がっている

アメリカでは、Pythonは大学のコンピューターサイエンスの授業で最初に教える言語として広がっているようです。

Python Is Now the Most Popular Introductory Teaching Language at Top U.s. Universities | blog@CACM | Communications of the ACM

MITの教科書などは和訳して出版もされていますよね。こういったよい教科書もたくさん出ていますし、前述のとおりドキュメントも充実しているので、学術利用や研究目的での利用がしやすくはなっています。

世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーション

世界標準MIT教科書 Python言語によるプログラミングイントロダクション第2版: データサイエンスとアプリケーション

CやC++のメソッドを呼び出しやすい

Python自体は、お世辞にも速い言語とは言えません。

公式のチュートリアルの冒頭『1. やる気を高めよう』でも、こんな記述があります。

Python には 拡張性 があります: C 言語でプログラムを書く方法を知っているなら、簡単に新たな組み込み関数やモジュールを、簡単にインタプリタに追加できます。これによって、処理速度を決定的に左右する操作を最大速度で動作するように実現したり、(ベンダ特有のグラフィクスライブラリのように) バイナリ形式でしか手に入らないライブラリを Python にリンクしたりできます。

『処理速度を決定的に左右する操作を最大速度で動作するように実現したり』したいのであればC言語のような速い言語を使ってプログラムを書くべし…ということですね。

この公式の見解通り、NumpyなどのPythonライブラリは、動作を速くするために中身はCやC++で書かれているため、素早く動いてくれます。

Python3系で型ヒントが使えるようになった

まだ暫定的な導入ではありますが、3系では型のチェックなどをしてくれるようになっています。

26.1. typing — 型ヒントのサポート — Python 3.6.5 ドキュメント

mypy というライブラリを使えば、型の間違いなどもいい感じに検出してくれます。

mypy-lang.org

型ヒントを使えば、たとえばデータ分析で整数値を扱っていたのが勝手に浮動小数になっておかしな結果になってしまった…みたいなことを防げます。

まとめ

というわけで、Pythonがなぜ機械学習やディープラーニングに使われるのかについて書いてみました。

このほかにも、よくPythonはコードがシンプルでわかりやすく書きやすい…と言われていますよね。Pythonの作者も、Pythonの目標を「平易な英語のようなわかりやすいコード」としています。(グイド・ヴァンロッサム - Wikipedia

ただ、ブロックインデントなどがわかりやすいかどうかは賛否両論ですよね。(私はとても好きですが…)Pythonがあまり好きではない人からしてみると、endで終了が明示されてほしいとか、{}でくくられてないと不安…とかいう気持ちもわかります。


ほかにもPythonや機械学習などに関する記事をいろいろ書いているので、興味のある方は見てみてください。
paiza.hatenablog.com
paiza.hatenablog.com


「プログラミング自体が初心者なので、まずはPythonを使えるようになりたい!」という方は、プログラミングが動画で学べる「paizaラーニング」の「Python入門編」(今年から全編無料になりました)から始めてみてください。
paizaラーニング

 


 

paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。

詳しくはこちら

paizaラーニング

そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。

スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。

詳しくはこちら

paizaのスキルチェック