breezeで始めるデータ分析

46
Scala breezeで 始めるデータ分析 鈴木雄登

Upload: yuto-suzuki

Post on 15-Apr-2017

785 views

Category:

Engineering


0 download

TRANSCRIPT

Scala breezeで 始めるデータ分析

鈴木雄登

自己紹介

• 鈴木雄登

• @moc_yuto

• Python歴3年くらい

• Scala歴1年くらい

今日話すこと

• breezeってなに?

• breezeの使い方

• breezeでの成果物

breezeってなに?

こいつです。

そよ風っぽい

breezeってなに?

breezeってなに?

行列計算をやりやすくしたライブラリ

行列計算って何に使うの?

機械学習では、たくさんの行列計算を行います。

なので、機械学習を実装する上で 行列計算は避けて通れないのです。

用途が近いライブラリを 見てみましょう

breezeに用途が似たライブラリ(or 言語)

breezeはその中でもnumpyに影響を受けて作られています。

numpyに影響受けているところ

行列の計算が直感的

numpyに影響受けているところ

行列の変形も直感的

breezeというライブラリは、 ScalaNLPというライブラリ群の一つになっています。

breezeというライブラリは、 ScalaNLPというライブラリ群の一つになっています。

ScalaNLPのNLPってなんだ?

Natural Language Processing

N L P

NLP=自然言語処理

自然言語処理とは、 人間が扱う日本語や英語を機械で処理する研究分野です。

例)自動翻訳、自動要約、情報抽出

自然言語処理のために作られたライブラリなんです。

ほかのScalaNLPのライブラリを見てみましょう。

breeze周りのエコシステム

epic

puck

nak

breeze-viz

scalaplotJunto

breeze-viz

計算したデータを可視化するライブラリです。現在は、開発が止まってbreeze本体に吸収されています。

nak

・k-means ・教師ありロジスティック回帰 ・SVM ・local sensitive hashing

以下の機械学習モデルが実装されています。

Epicは形態素解析器です。

epic

MeCabやNLTKのTokenizerのようなものです。

僕はScalaが大好きです。 僕 名詞,代名詞,一般,*,*,*,僕,ボク,ボク は 助詞,係助詞,*,*,*,*,は,ハ,ワ Scala 名詞,固有名詞,組織,*,*,*,* が 助詞,格助詞,一般,*,*,*,が,ガ,ガ 大好き 名詞,形容動詞語幹,*,*,*,*,大好き,ダイスキ,ダイスキ です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス 。 記号,句点,*,*,*,*,。,。,。 EOS

【MeCabの出力結果】

puck

GPUで計算ができるので、高速に計算できる。(らしい)

秒間4000文を解析できて、Berkley Parserと同じ文法で出力

puckはEpicと同じ形態素解析器。

実際にbreezeを使ってみましょう

行列の作成

行列の切り出し

行列の四則演算

行列全体に適用

乱数分布

breeze

行列操作が直感的にできる 周辺ライブラリが少ない

重回帰のライブラリが

ない!

breezeを使ったライブラリを作ってみた

重回帰分析を計算するライブラリ

https://github.com/moc-yuto/regression

回帰分析犯罪率 街灯数 人口 学校数

0.05 123 20000 23

0.09 24 3024 5

0.01 132 15325 12

0.10 32 8525 2

こんなデータがあります。

ここから犯罪率が街灯数などから影響があるか知りたい

回帰分析犯罪率 街灯数 人口 学校数

0.05 123 20000 23

0.09 24 3024 5

0.01 132 15325 12

0.10 32 8525 2

犯罪率=街灯数×a + 人口×b + 学校数×c + d

こう置けると仮定します

回帰分析犯罪率 街灯数 人口 学校数

0.05 123 20000 23

0.09 24 3024 5

0.01 132 15325 12

0.10 32 8525 2

上のようなデータをたくさん集め、a, b, c, dを求める

犯罪率=街灯数×a + 人口×b + 学校数×c + d

regressionライブラリの導入はこんな感じ

regressionライブラリでは、以下のようにできます。

さっきの表をCSVにして…

今後もうちょっとドキュメント周りを充実させます。

ただ最近は、Sparkが台頭?

ジー

ありがとうございました。