Slide 1

Slide 1 text

情報処理学会・ソフトウェアジャパン2018 ITフォーラムセッション・ビッグデータ活用実務フォーラム データ分析・機械学習OSSの 新潮流とその活用 2018年2月2日(金) LINE株式会社DataLabs 高柳慎一

Slide 2

Slide 2 text

•自己紹介 •機械学習OSSの新潮流とその活用 •TensorFlow/Stan/scikit-learn •Prophet •Lime •まとめ Agenda

Slide 3

Slide 3 text

自己紹介

Slide 4

Slide 4 text

自己紹介 •氏名:高柳慎一(タカヤナギ シンイチ) •所属:LINE株式会社・DataLabs •興味:統計科学・プログラミング •Twitter: @_stakaya 4

Slide 5

Slide 5 text

データ分析・機械学習OSSの 新潮流とその活用

Slide 6

Slide 6 text

TensorFlow/Stan/scikit-learn

Slide 7

Slide 7 text

TensorFlow •Dataflow Graph(DFG)による機械学習ライブラリ •Dataflowグラフを作って、その後計算(Define and Run) • 即時実行(eager execution)の機能も…(v1.5~) •TensorFlowの上に載っているライブラリが、逆に TensorFlowから叩ける方向に • Edward(確率的プログラミング) https://discourse.edwardlib.org/t/edward-is-officially-moving-into-tensorflow/387 • Keras(Deep Learning)

Slide 8

Slide 8 text

TensorFlow •コードが計算グラフと対応付けられる TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems、Figure1, 2 より

Slide 9

Slide 9 text

TensorFlow •KerasはTensorFlowの中から叩ける •tf.kerasのコード例(あまりみないので) • 所謂、深層学習超入門なコード •まずMNISTのデータを用意&簡単な前処理

Slide 10

Slide 10 text

TensorFlow •適当なモデル構築 •当てはめ&評価(97%くらいの正解率)

Slide 11

Slide 11 text

Stan •確率的プログラミング言語 • データに確率モデルを当てはめる • Domain Specific Language (ドメイン特化言語) •HMCベースの推定 • Hamiltonian Monte Carlo ※その中でもNo-U-Turn Samplerを使用 •事後分布からのモデルパラ メータのサンプリングが可能 •ビジネスに必要な統計モデリ ングを行える 単回帰モデルの例

Slide 12

Slide 12 text

Stan パラメータの事後分布 自己相関のチェック

Slide 13

Slide 13 text

scikit-learn • (皆大好き)Pythonの機械学習ライブラリ • 私は2013年頃に使ってその後Rに完全に転向 • 久しぶりに調べたら強力な機能が多数追加されていた… • sklearn.pipeline:2011年頃から機能は存在 • sklearn.model_selection: v0.18(2016年9月~) • 元々あったcross_validation, grid_search等を統合

Slide 14

Slide 14 text

scikit-learn •複数モデル のハイパー パラメータ 探索がとて も楽に •前処理も組 み込める (pipeline)

Slide 15

Slide 15 text

Prophet

Slide 16

Slide 16 text

Prophet •時系列予測ツール • 統計知識不要(規定のモデルが存在) • ドメイン知識をファクターとして追加可能 • 精度評価で品質保証 ・0.3が目下開発中で、いろんな時系列評価指標が導入予定 •予測を”誰でもできる”という意味でスケール化 •(言わずもがな)ビジネス活用としては、時系列系の予 測にガンガン使える ※詳しくは https://research.fb.com/publications/forecasting-at-scale/ を参照

Slide 17

Slide 17 text

Prophet •テストデータに対する予測モデル構築 •prophet()にデータを食わせるだけ > tail(df) # A tibble: 6 x 2 ds y 1 2014-05-22 60.52 2 2014-05-23 61.35 3 2014-05-27 63.48 4 2014-05-28 63.51 5 2014-05-29 63.83 6 2014-05-30 63.30

Slide 18

Slide 18 text

Prophet •予測&その結果の可視 化もとても簡単

Slide 19

Slide 19 text

Prophet •トレンドや週・月次レ ベルでの周期成分の推 定も自動で実行 • 直観的なのでビジネ スへの応用も簡単

Slide 20

Slide 20 text

Prophet • version 0.2以降の新機能 • ここからが日本語情報として新しい • 時系列に対する予測精度検証機能の追加 • Simulated Historical Forecast/Cross Validation • version 0.3ではMAE等の指標計算も追加(現在開発中) # A tibble: 6 x 6 ds y yhat yhat_lower yhat_upper cutoff 1 2014-05-22 60.52 57.32036 53.94323 60.50448 2014-05-21 2 2014-05-23 61.35 57.38214 54.24548 60.61913 2014-05-22 3 2014-05-27 63.48 56.58093 53.35988 59.91789 2014-05-26 4 2014-05-28 63.51 57.19061 54.08438 60.61684 2014-05-27 5 2014-05-29 63.83 57.90791 54.37177 61.32794 2014-05-28 6 2014-05-30 63.30 58.28859 55.04133 61.55597 2014-05-29

Slide 21

Slide 21 text

LIME

Slide 22

Slide 22 text

LIME • KDD2016にて公表された以下の論文 • "Why Should I Trust You?": Explaining the Predictions of Any Classifier, Marco Tulio Ribeiro, Sameer Singh, Carlos Guestrin • Local Interpretable Model-agnostic Explanations • モデルフリーに局所的に(複雑な)モデルを解釈する手法 • LIMEにより各説明変数の寄与が読める・意思決定に資する http://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf より

Slide 23

Slide 23 text

LIME •(実際には非線形変換してようが高次元の空間に特徴量 を埋め込んでいようが)最終結果は人がわかる形にして くれる •アルゴリズムのコンセプト • πで決まる局所的な範囲で、解釈可能なモデル群 (G)の中で、もっとも(解釈しにくい)元のモデルfを 説明できる、正則化した(Ωの項)g∈Gを見つける http://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf より

Slide 24

Slide 24 text

LIME •2値クラス分類の例 • +付近のデータを使用 誤差を入れた&次元を削ったデータを生成 • 例だと線形モデルで近似 •R・Python実装がある • https://github.com/marcotcr/lime • https://github.com/thomasp85/lime http://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf より

Slide 25

Slide 25 text

LIME •まずはmlrパッケージで予測モデルを構築 • mlr: 次世代版の汎用Machine Learningパッケージ

Slide 26

Slide 26 text

LIME •lime()にデータとモデルを食わせる •explain()で指定したデータの局所解釈を作成 • glmnet(L1+L2なロジスティック回帰)で説明 case label feature feature_weight feature_desc data 1 116 virginica Sepal.Length 0.0095341177 5.8 < Sepal.Length <= 6.4 6.4, 3.2, 5.3, 2.3, 3.0 2 116 virginica Petal.Length 0.4583012101 5.10 < Petal.Length 6.4, 3.2, 5.3, 2.3, 3.0 3 36 setosa Species 0.0008123117 Species = setosa 5.0, 3.2, 1.2, 0.2, 1.0 4 36 setosa Petal.Length 0.4377915136 Petal.Length <= 1.60 5.0, 3.2, 1.2, 0.2, 1.0 5 4 setosa Sepal.Width -0.0010979380 3.0 < Sepal.Width <= 3.3 4.6, 3.1, 1.5, 0.2, 1.0 6 4 setosa Petal.Length 0.4591607286 Petal.Length <= 1.60 4.6, 3.1, 1.5, 0.2, 1.0 7 111 virginica Species 0.0042950996 Species = virginica 6.5, 3.2, 5.1, 2.0, 3.0 8 111 virginica Petal.Width 0.4008624393 1.8 < Petal.Width 6.5, 3.2, 5.1, 2.0, 3.0 9 37 setosa Sepal.Length 0.0097798516 5.1 < Sepal.Length <= 5.8 5.5, 3.5, 1.3, 0.2, 1.0 10 37 setosa Petal.Length 0.4625155191 Petal.Length <= 1.60 5.5, 3.5, 1.3, 0.2, 1.0

Slide 27

Slide 27 text

LIME

Slide 28

Slide 28 text

まとめ

Slide 29

Slide 29 text

まとめ •OSSの新潮流とその活用について簡単に紹介 • TensorFlow/Stan/scikit-learn • Prophet • Lime •道具(TOOL)は揃ってきている • これらを活用して何をやるかが重要 (…という話をパネルディスカッションするんだと思っています) 29

Slide 30

Slide 30 text

THANK YOU

Slide 31

Slide 31 text

その他(動向を見ておきたい) • Rust • サードパーティー製のライブラリがある程度 • https://github.com/AtheMathmo/rusty-machine • https://github.com/sebcrozet/nalgebra • Go • https://github.com/gonum/gonum • https://github.com/sjwhitworth/golearn • Facebook Research • https://github.com/facebookresearch • Facebook • https://github.com/facebook