SlideShare a Scribd company logo
1 of 46
Download to read offline
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
scalaplot
Junto
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が台頭?
ジー
ありがとうございました。

More Related Content

More from Yuto Suzuki

5xx解消への道のり
5xx解消への道のり5xx解消への道のり
5xx解消への道のりYuto Suzuki
 
MySQLのインデックス入門
MySQLのインデックス入門MySQLのインデックス入門
MySQLのインデックス入門Yuto Suzuki
 
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Yuto Suzuki
 
Aerospike基本のき
Aerospike基本のきAerospike基本のき
Aerospike基本のきYuto Suzuki
 
いまさらAkkaStream
いまさらAkkaStreamいまさらAkkaStream
いまさらAkkaStreamYuto Suzuki
 
Introduction of View Through Tracking
Introduction of View Through TrackingIntroduction of View Through Tracking
Introduction of View Through TrackingYuto Suzuki
 
エンジニアのためのマーケティング
エンジニアのためのマーケティングエンジニアのためのマーケティング
エンジニアのためのマーケティングYuto Suzuki
 
How to Build a Team
How to Build a TeamHow to Build a Team
How to Build a TeamYuto Suzuki
 
プロダクトにおけるScala
プロダクトにおけるScalaプロダクトにおけるScala
プロダクトにおけるScalaYuto Suzuki
 
Do you like scala
Do you like scalaDo you like scala
Do you like scalaYuto Suzuki
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOpsYuto Suzuki
 
大学の時の研究の話
大学の時の研究の話大学の時の研究の話
大学の時の研究の話Yuto Suzuki
 
F.O.Xを支える技術
F.O.Xを支える技術F.O.Xを支える技術
F.O.Xを支える技術Yuto Suzuki
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせYuto Suzuki
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.jsYuto Suzuki
 

More from Yuto Suzuki (20)

5xx解消への道のり
5xx解消への道のり5xx解消への道のり
5xx解消への道のり
 
MySQLのインデックス入門
MySQLのインデックス入門MySQLのインデックス入門
MySQLのインデックス入門
 
Ad vol.2
Ad vol.2Ad vol.2
Ad vol.2
 
広告勉強会
広告勉強会広告勉強会
広告勉強会
 
Mastering Bitcoin ~network~
Mastering Bitcoin ~network~ Mastering Bitcoin ~network~
Mastering Bitcoin ~network~
 
Aerospike基本のき
Aerospike基本のきAerospike基本のき
Aerospike基本のき
 
いまさらAkkaStream
いまさらAkkaStreamいまさらAkkaStream
いまさらAkkaStream
 
Introduction of View Through Tracking
Introduction of View Through TrackingIntroduction of View Through Tracking
Introduction of View Through Tracking
 
エンジニアのためのマーケティング
エンジニアのためのマーケティングエンジニアのためのマーケティング
エンジニアのためのマーケティング
 
How to Build a Team
How to Build a TeamHow to Build a Team
How to Build a Team
 
プロダクトにおけるScala
プロダクトにおけるScalaプロダクトにおけるScala
プロダクトにおけるScala
 
Do you like scala
Do you like scalaDo you like scala
Do you like scala
 
Re invent
Re inventRe invent
Re invent
 
Slackから始めるChatOps
Slackから始めるChatOpsSlackから始めるChatOps
Slackから始めるChatOps
 
大学の時の研究の話
大学の時の研究の話大学の時の研究の話
大学の時の研究の話
 
F.O.Xを支える技術
F.O.Xを支える技術F.O.Xを支える技術
F.O.Xを支える技術
 
Scala戦士を増やせ
Scala戦士を増やせScala戦士を増やせ
Scala戦士を増やせ
 
Recommend scala
Recommend scalaRecommend scala
Recommend scala
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 

Breezeで始めるデータ分析