スーツ姿のプロダクトマネージャー

ITで新しいプロダクトを生み出したいすべての人を応援するブログです。

機械学習のための「道具」

このブログでは、AIや機械学習の話題も積極的に取り上げますが、これから機械学習をやってみよう!と思うSEの方向けの情報を投稿していきます。

自分自身、SE職から研究所でデータアナリティクスの研究をすることになり、相当苦労した経験があったので、何とか情報を残したいという思いもあります。

f:id:ku2t:20180228172716j:plain

 

最近は社内のSE職の方と話すことが多いのですが、「機械学習をやりたいのだけど、どんなツールを使えばいいのですか?」という相談を受けることが多くなってきました。

 

最近だと、Pythonでnumpy, scipy, pandas, sciket-learnを使ってみるのが良いのではないでしょうか…ということが多くなってきました。ちょっと前はRかPythonと言っていたのですが、自社内でもPythonの利用者が増えているような気がします。

特に、アプリケーションを具体的に作ろうとしている方には、処理のフローがわかりやすく、前処理からモデリング~モデル実行を統一的な言語で処理できるPythonの方がとっつきやすいようです。

最近は、Python機械学習チュートリアル的に学べる参考書が爆発的に増えてきて、入門しやすい環境が整ってきました。それから、開発環境の構築もAnacondaを使ってインストールすることで、比較的簡単にできるので、そのあたりも手を出しやすいのだと思います。

 

さて、自分自身はどうか?といえば、次のような感じで道具を変えてきました。

  1. 始めて機械学習を学んだ頃:前処理 Perl, Rubyモデリング R, SVMの実行バイナリ
  2. 慣れてきた頃:前処理 Pythonモデリング R
  3. 最近:前処理 Pythonモデリング Python, R

大きく3つの経過を書きましたが、ざっとここ6年ほどの経過です*1。統計モデルをじっくり考えたいときは、今でもRを使います。でも、AI関連のプロジェクトなどで、機械学習のモデルを部品として使いたいときには、初めからPythonで組むことが多いです。

Deep Learningの話が増えてきたというのも、少なからず影響があると考えています。特に、若いメンバーはDeep Learningが大好きですし、ほとんどPython + Jupyter notebookで仕事をしている感じです。私は、R の統合環境であるR Studioもbashのコンソールも捨てがたいのですが、プロジェクトの環境の標準化は重要ですので、なるべく合わせるようにしています*2

 

機械学習の考え方や入門書について、情報をアップしていく予定です。それに加えて、自分自身の勉強のために、最近の話題もウォッチして整理していきます。

*1:最も、最近はチームマネジメントの仕事の方が多く、手を動かす機会がどんどん減っているのが残念ですが。

*2:研究所に在籍していたときは、皆さんかなりフリーダムでした。Perl, Ruby, C/C++, MatLab, Python, R, Go, AWK…。プロジェクトメンバーによって使う道具が違うので、そのたびに末端研究員だった私はいろいろ覚える羽目になったのでした。それはそれでよかったと思いますが。