Edited at

python以外で機械学習に使える言語

More than 1 year has passed since last update.

こんにちは。ぐりです。

この記事は呉高専エンジニア勉強会 Advent Calendar 2017の21日目の記事です。

え? 投稿日時と合ってないって?

……君のような勘のいいガキは嫌いだよ

はい。

今回はpython以外の機械学習に使える言語を調べます。


理由

呉高専では5年から研究が始まるんですが、実は4年生の後期から事前準備ということで研究室に配属されるんですね。その配属された研究室が人工知能系だったわけです。

そんなわけで今はPython機械学習プログラミング 達人データサイエンティストによる理論と実践を読んでいます。

で、思ったわけですよ。 pythonは書きたくないな と。

だって、今って猫も杓子もpythonじゃないですか。

その中でpython書いても全然面白くないですよね。


Google先生に聞いてみる

「OK, Google. 機械学習したいんだけど。」

"機械学習 言語"で検索して上位5件を見てみました。

以下は各リンクのまとめです。


なぜ機械学習にPythonが選ばれるのか

ライブラリが充実してるし現在も活発に開発が続いてるからpythonがいい

昔はRと比べてライブラリが充実してなかったけど最近は差が縮まってる


Pythonや機械学習、そして言語の競争について – 極めて主観的な見地から

個人的にはpythonがいいと思う(機械学習に限らず)

結論としては自分のニーズに合った言語を選ぶといい


MATLAB

もともと線形代数を扱うことを念頭に置いて設計されてるので自然ではある

ただしライセンス料が高い

また、関数呼び出しや文字列解析、ソートなどの速度を他の言語と比べた場合、そんなに早いわけでもない(もちろん行列の計算では早い)



(引用: https://julialang.org/)


Julia

言語自体は素晴らしいし好きだが、この先人気が出るかが定かではないから確信を持って薦めることはできない。

プログラミング言語の人気が重要な理由は以下の通り。



  1. 世の中にはたくさんの(ほとんどが無料の)ライブラリが存在するからです。ですから、あなたは自分の時間を有効活用でき、わざわざライブラリを初めから作る必要はありません。

  2. オンライン上で役に立つ情報や、やり方、例を探すのはとても簡単だからです。

  3. 言語は改良され、アップデートされて、”さらに良く”するために頻繁に修正が行われるからです。

  4. 協力し合ったほうがいいですし、チームで一緒に取り組むほうが容易だからです。

  5. 多くの人が、あなたの考えたコードを活用することができるからです(例えば、GitHubでコードをシェアしたりすれば)。



R

pythonと比べて何か問題があるわけではないし、データ科学では有能で人気のある言語


Perl

Perl は死んだ。Perl万歳!


機械学習で使われるプログラミング言語トップ8


  1. Python

  2. Java

  3. R

  4. C++

  5. C

  6. JavaScript

  7. Scala

  8. Julia


機械学習でPythonが主流になっている必然的な理由とは


C++とPython

pythonはインタプリタ型の言語であり、トライアンドエラーがしやすい

また、実行速度の早いライブラリ(NumpyやScipy)などライブラリが充実しているためpythonの弱点であった実行速度を気にしなくて良い


R言語とPython

そもそもデータサイエンティストのための言語であったが、機械学習がプログラマによって行われるようになり、より馴染みのあるpythonでできるならその方がいいということでpythonの人気が出てきた


Python、それともR?機械学習実装の一歩を踏み出すためのスタートガイド


Pythonのメリット

数値計算・機械学習関連のライブラリが充実

グラフィックス用のパッケージが用意されているため、結果の図示が容易


Rのメリット

統計分析に特化されておりライブラリが充実

グラフィックス用のパッケージが用意されているため、結果の図示が容易

分類器、回帰など、パッケージ毎に機能が分かれているため、必要なパッケージを探しやすい


まとめ

結果としてはpython一強な感がすごかったです。

それ以外の言語は以下の通りでした。(説明があった言語だけ載せます)


  • MATLAB

    高い

    時代遅れ感

  • Julia

    新しい

    いい感じだけど人気が少ない


  • R

    老舗

    データサイエンティスト以外にはpythonの下位互換なイメージ


  • C++

    早い


新しもの好きの僕としてはJuliaを使っていきたいなって感じです。

調べたらPyCallっていうを使えばpythonのライブラリを呼び出せるらしいですしこれはなかなかいいのでは。