Rubyと機械学習
kawasaki.rb #006 (2013/11/27)
@chezou
Who?

twitter:@chezou
github:chezou
自然言語処理とかデータ分析とか
機械学習とは
過去のデータに基づいて機械が判断できるようになる

!
予測:株価予測…
分類:spam検出、優先フォルダ…
推薦:商品レコメンド
音声認識、機械翻訳…
…
機械学習の流れ

{‘今日’: 2, ‘天気’:3, …}
ニュースカテゴリ
今日の話
話します
なんでRubyで機械学習が流行らないのか
話しません
Rubyでお手軽機械学習入門
結論
Why?
Rubyが遅い?
数値計算向けライブラリが…
ActiveRecordとの相性が…
Rubyが遅い?
C拡張を作ればいいじゃない
“メモリアロケーションからみた拡張ライブ
ラリに大切なこと” by taru
http:/
/www.slideshare.net/tarui/
ss-23517958
ライブラリないの?
Python vs Ruby

機械学習

Scikit-learn

ai4r

数値計算

Numpy/Scipy

NArray

(言語)

Python

Ruby
数値計算ライブラリ
Pythonでは
Numpy/Scipyがデファクト
数値計算を抽象化したまま書ける
Cを使ってゴリゴリ計算してくれる
Numpyの魅力
#PHI=N*M次元の特徴行列
#t=N次のベクトル(正解データ)

“数式をnumpyに落としこむコツ” by @shuyo

http:/
/www.slideshare.net/shuyo/numpy-9704562
数値計算ライブラリ
Rubyでは
多次元数値配列を扱うNArrayがある
http:/
/www.slideshare.net/
masa16tanaka/narray-pwrake
NArrayでやるには

簡単な式は同じ感じで計算できる
(最新の開発版ではNMatrix, NVectorなくなるとか…)
“Numpyは互換性をScipyは新機能を重視して
いる”
– http:/
/www.scipy.org/scipylib/faq.html#numpy-vs-scipyvs-other-packages
Numpy/Scipyをベースと
したエコシステム
Scikit-learn
機械学習の基本的なライブラリ
NLTK
自然言語処理のためのライブラリ
Rubyで機械学習?
classifierやai4r等のシンプルなgemを使う
Liblinear等のCで書かれたもののbindingを
使う
後者は速いけどRubyらしく書きづらい…
Railsに使いやすい

ライブラリがあれば…!
ActiveRecordとの相性
大抵の分類問題の場合、特徴と値の辞書を持つ
特にテキストはkeyが増える(例:単語)
学習や予測時には、大量のランダムアクセス
DBで保持するのが良いのか?
結局ハッシュなどでメモリに載せる
まとめ
どうしても、Rubyで機械学習をしたいなら

ai4rからはじめるのが良いかも
Railsで気軽に機械学習が扱えるライブラリ
の、継続的な開発が重要
エコシステムの繁栄には数値計算ライブラリ重
要
補足
補足
エンジニアが機械学習に入門するのには
オライリー「入門機械学習」
gihyo.jpの連載「機械学習 はじめよう」
http:/
/gihyo.jp/dev/serial/01/
machine-learning
その他
Julia : 科学計算向け言語
http:/
/julialang.org/
http:/
/yohshiy.blog.fc2.com/blogentry-246.html
Rubyで学術系ライブラリとかどうなってるの?
http:/
/togetter.com/li/511414

Rubyと機械学習の現状