徐 聖博
第3回メドレー読書会
1
自己紹介
2
経歴
• 2014/04 - 2015/06
• グリー株式会社
• 2015/07 -
• 株式会社メドレー
• 2014/04 -
• ターゲットスポーツ(※ダーツメーカー)
3
http://2013.rl-competition.org/results
保有資格
ダーツプロライセンス
ジグソーパズル検定1級
大学院時代の研究
人工知能(進化計算)
ICML RL Competition 1位
第2部
特集1:機械学習ソフトウェアの概観
• R, Python, Julia, Spark MLlib...
➡ 第1章 開発が進む機械学習ソフトウェア
➡ 第2章 機械学習のソフトウェアを用いた実行例
➡ 第3章 機械学習ソフトウェア選択の指針
本日のメニュー(徐担当分)
4
読書会スタート!
5
6
特集1
機械学習ソフトウェアの概観
R, Python, Julia, Spark MLlib...
7
第1章
開発が進む機械学習ソフトウェア
機械学習ソフトウェアをめぐる動向
8
機械学習のソフトウェアをめぐる動向
9
機械学習アルゴリズム向けに、多くのソフトウェアがある
R, Python, Julia, Weka, RapidMiner, KNIME,
Orange, ELKI, Shogun, Apache Mahout,
Spark MLlib, Hivemall, Jubatus, Vowpal
Wabbit, Accord.NET Machine Learning,
SAS, MATLAB, SPSS...
データ分析者が使用するツールのアンケート結果
10 © 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
本書で取り上げる機械学習ソフトウェアの概要
11
R
• データ解析の代表的なソフトウェア。基本的にオンメモリ処理なので、大
規模なデータを扱うのは難しい
Python
• 汎用的なスクリプト言語。Numpy, Scipy, scikit-learn, Pandasなどパッ
ケージ開発が進み、データ解析分野でも注目が集まっている
Julia
• 2012年に公開された科学計算のための新しい言語。期待が集まる
Apache Mahout
• Apache HadoopやApache Spark上で動作する機械学習ライブラリ。大
規模並列分散処理の草分け的存在
Spark MLlib
• Apache Spark上で動く機械学習ライブラリ。Sparkと共に、今後に注目
代表的なソフトウェアの概要
12
R
13
• 統計解析言語
• 統計解析、可視化、データ加工・変換など多岐に
わたる手法が即座に利用できる
⃝ 資料が最も潤沢にあるソフトウェア
☓ オンメモリで扱うため、大規模データに向かない
Python
14
• 汎用的なスクリプト言語
• package使用で機械学習アルゴリズムを実行可能
⃝ Webアプリケーションに機械学習を組込み易い
☓ Rほどパッケージが充実していない
Julia
15
• MITで開発されている計算機科学のソフトウェア
• 洗練された型システムと多重ディスパッチ
⃝ LLVMのjust-in-timeコンパイルによる高処理速度
⃝ 発展が期待される有望なプログラミング言語
☓ 発展途上のため、参考文献が少ない
Apache Mahout
16
• Apache HadoopやApache Spark上で動作する
機械学習ライブラリ
⃝ 大規模並列分散処理により機械学習を行える
☓ 反復処理に多大なコストが
Spark MLlib
17
• 分散処理エンジン(Apache Spark Core)を中心
に置き、ライブラリの充実させる方針
⃝ Sparkで利用できるライブラリも使える
☓ Scalaが辛い人は辛いかも(私見)
その他
18
Weka/RapidMiner/KNIME
• GUIによりデータ分析のフローを記述できる
Shogun
• 様々なカーネルのSVMを実装している
Hivemall
• Apache Hiveの関数で実装したライブラリ
クラウドサービス
• MicrosoftやAmazonのサービスが代表例
各ソフトウェアで実行可能なタスク
19
ソフトウェアがカバーする主要なタスク
20
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
21
第2章
機械学習のソフトウェアを
用いた実行例
予測モデルの構築・評価
22
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
予測モデルの構築・評価
23
混合行列:予測と実績のクラスレベルの組み合わせを集計した分割表
© 2015 技術評論社 データサイエンティスト養成読本 機械学習入門
予測モデルの構築・評価
24
正例
• 対象とするクラスに属するもの
負例
• 対象とするクラスに属さないもの
適合率 (Precision) = tp / (tp + fp)
• 正例と予測したもののうち、実際に正例の割合
予測モデルの構築・評価
25
再現率 (Recall) = tp / (tp + fn)
• 実際正例のうち、正例と予測したものの割合
F-値 (F value) = 2 / (1/適合率 + 1/再現率)
• 適合率と再現率の調和平均
正解率 (Accuracy) = (tp + tn) / (tp + fp + fn + tn)
• 正例と負例の両方で予測と実績が一致した割合
実際に動かして見よう!

https://github.com/shengbo-medley/
MiscForStudy/tree/master/20151201
26
27
第3章
機械学習ソフトウェア選択の指針
プログラミング経験が少ない場合はGUIツール
28
プログラミングの学習コストを低くしたい
• 機械学習やソフトウェアの学習と合わせると大変
GUIツールの積極的活用
• KNIMEやWekaなどはGUIがあり、便利(らしい)
プログラミングに抵抗がなければPythonかR
29
RやPythonはパッケージ/ライブラリ/マニュアルが豊富
• 高速化が必要な場合、Rは弱い
• Pythonの方が応用が広いイメージ
速度が求められるが、開発に時間が避けない場合はJulia
• 情報が少ないが、科学技術計算の高速化に向く
1台の計算機のメモリには収まらない規模の場合は
Spark MLlibやApache Mahout
• 最近はSparkが流行っているという印象がある
第2部特集1はここまで
30

第3回メドレー読書会前半