Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CRAN Rパッケージ BNSLの概要

1,826 views

Published on

AMBN2017 サテライトワークショップ

Published in: Engineering
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

CRAN Rパッケージ BNSLの概要

  1. 1. RパッケージBNSLの概要 @ AMBN 2017 サテライトワークショップ 2017年9月19日 鈴木譲 (大阪大学)
  2. 2. 本日のお話の手順 • ベイジアンネットワークの構造学習 • 無向森の構造学習 (離散) • 無向森の構造学習 (連続) • 応用例 • よくある質問 • 他ツールとの比較 • まとめと今後の課題
  3. 3. ベイジアンネットワークの構造学習 Bayesian Network Structure Learning (BNSL) データフレーム 構造 p=3のとき
  4. 4. 森の構造学習 Forest Structure Learning (FSL) データフレーム 構造 p=3のとき
  5. 5. BNSLの基本的な使い方(1): 離散 BN library(BNSL) g=bnsl(asia) plot(g) ASIA (Lauritzen 1996) p=8 変数 意味 (Yes/No) Asia 最近アジアに行った Smoking 常習喫煙者 Tuberculosis 結核 Lung Cancer 肺がん Bronchitis 気管支炎 E T(結核)またはL(肺がん)の論理和 Chest X-ray 肺の X 線撮影での異常 Dyspnoea 呼吸困難
  6. 6. ベイジアンネットワーク (BN) 分布の因数分解を、有向非巡回グラフ(DAG)で表現したもの (同値)
  7. 7. 統計学: データから正しい構造を推定 • サンプル数 nが大きいときに、正しい構造を推定 BN=分布データ 推定 乱数発生
  8. 8. ベイズ統計学: データのもとでの事後確率最大化 P(構造|データ) = P(構造) 𝑃 データ 構造, パラメータ 𝑃(パラメータ|構造)𝑑パラメータ パラメータを周辺化した事後確率 構造 (1)-(11)のどれか パラメータ 各部分の条件付き確率 構造の事前確率 パラメータの事前確率 事前確率としては、標準的なもの
  9. 9. 変数の個数pとともに指数的な計算? Alarm p=37 最も知られたベンチマーク library(BNSL) g=bnsl(alarm) plot(g) PCで、1日かかる g=bnsl(alarm[,1:20]) など、変数の個数を限定する
  10. 10. BNSLの高速化の検討 アプローチ 現状 将来 (1年以内) 分枝限定法 (最適な構造) ICML-96、UAI-17 通常の方法より10倍速い PCで1時間以内に nを定数として、pの多項式時間 ヒューリスティック (近似) 親集合の個数を制限 構造の探索のしかたを制限 やり方は無数にある {D,X}は、 Eの親集合 BNではなく、事後確率を最大にする森を求める
  11. 11. 高速化のためにRcppを適用 • Rでプログラミングするより、50-100倍高速 • C++で関数を構築して、Rから呼び出す Rにはポインタがない。RcppではRの関数が使えない R, C++を知っていても、インターフェイスになれるのに 若干時間がかかる
  12. 12. alarmはBNで1日かかるが、森だと5秒で完了 pの2乗の時間 asia alarm
  13. 13. BNSLの基本的な使い方(2): 離散 森 library(BNSL) df=alarm mm=mi_matrix(df) edge.list=kruskal(mm) g=graph_from_edgelist(edge.list, directed=FALSE) V(g)$label <- colnames(df) plot(g,vertex.size=20.0) (デモだけやって、プログラムはあとで)
  14. 14. データ -> 相互情報量の推定値 -> 森 (Chow-Liu, Kruskal) 分布が森で表現されることを仮定 相互情報量の推定値大きいものから、 ループができない限り、辺を結んでいく
  15. 15. 相互情報量 独立であるとき だけ0になる 独立性を仮定した場合 とのK-L情報量
  16. 16. 相互情報量 を推定したい 離散 連続だと、かなりむずかしい
  17. 17. 独立性を検知できる推定量 (Suzuki 93) (負のときは0とする) Suzuki 93を用いると、事後確率最大の森が生成される
  18. 18. Rパッケージ BNSLの主な関数 関数名 機能 mi 相互情報量の推定 mi_matrix データフレームから相互情報量の推定量の行列を生成 cmi 条件付き相互情報量の推定 kruskal Chow-Liuアルゴリズムの実行で必要 parent_set ベイジアンネットワーク構築の親集合 bnsl ベイジアンネットワークの→の向き、変数の順序を決定 mi(x, y, proc=0) 等しい長さのベクトルx,yから、相互情報量を推定。 Jeffreys’ (proc=0), MDL (proc=1), 最尤 (proc=9), 連続を含む (proc=10)
  19. 19. BNSLの基本的な使い方(3): 連続 森 library(BNSL) df=read.csv("nikkei225-2.csv")[,1:30] m=nrow(df)-1 # 2015年の営業日数-1 differ=df[1:m,] for(i in 1:m)differ[i,]=df[i+1,]-df[i,] mm=mi_matrix(differ, proc=10) edge.list=kruskal(mm) g=graph_from_edgelist(edge.list, directed=FALSE) V(g)$label <- colnames(df) plot(g,vertex.size=10.0)
  20. 20. 日経225銘柄の前日との差分 • PCでの実行時間: 3時間 • 離散でも連続でもない (整数値だが、取りうる値が多い) 有限個とみるのも、連続値の正規分布とみるのも難しい
  21. 21. quantmodパッケージ (金融データ処理) Install.packages(“quantmod”)以外に、install.packages(“XML”)が必要 通常のAPIとは異なり、webで公開されているデータを獲得している (RFinanceYJ パッケージは、バグが多い) Wouter Thielen さん getSymbols.yahooj 担当者 (東京在住) Joshua Ulrich さん Quantmod パッケージ 責任者 (米国在住)
  22. 22. 時系列のクラスxtsのオブジェクトが得られる 始値 最高値 終値最安値 取引高 調整値
  23. 23. 同業8社の株価 (データサイエンス 新興企業)
  24. 24. 8社の株価の相関係数 • ある銘柄の取引で成功した場合、同様の成功が得られるのは、どの銘柄か • ある銘柄の変動を、他の銘柄から予測できないか。
  25. 25. 8社の株価の相互情報量 (連続な変量として処理)
  26. 26. 1: 2158 UBIC 2: 2389 オプト 3: 3622 ネットイヤー 4: 3655 ブレインパッド 5: 3680 ホットリンク 6: 3905 データセクション 7: 3906 ALBERT 8: 6031 サイジニア 8社の株値の関連性を森で表すと
  27. 27. 連続: 正規分布を仮定する場合 相関係数の推定に帰着 一般の場合は、どうするのか X,Yが正規分布でないとき Xが離散、Yが連続のとき
  28. 28. mi(x,y proc=10)の動作 (Suzuki,16) X, Y ともに等頻度の分割表ができる Xを等頻度に分割 Yを等頻度に分割 X,Yは離散でも連続でもよいが、区切って頻度を数える 相互情報量の推定量 𝐽 𝑛を計算 いろいろなサイズの分割表を生成して、 𝐽 𝑛の最大値を計算 連続値は、量子化される
  29. 29. メッシュに区切っていく (離散などで) 同じ値が境界にあるとき nが大きいと、メッシュを細かくしても、推定できる 連続値も離散値も 区別しない
  30. 30. データセット(連続) • 日経225銘柄 (2015年4月-2016年3月)の終値 (前日との差分をとったもの、年間データのない2社を除く) nikkei225-2.csv • 乳がん患者の遺伝子発現データ (p51遺伝子をもつサンプル192個、もたないサンプル58個) breastcancer.csv
  31. 31. ゲノム解析への応用 (1) Int. J. Approximate Reasoning, 2016 青: p値の大きな遺伝子 赤: 症例/対照 1000個の連続変量 1個の2値変量 乳がん患者の遺伝子発現データ (p51遺伝子をもつサンプル192個、 もたないサンプル58個)
  32. 32. 大規模なグラフの作図は igraphよりCytoscape 論文に投稿すると、査読者もイチコロ
  33. 33. ゲノム解析への応用 (2) Int. J. Approximate Reasoning, 2016 青: 遺伝子発現量 赤: SNP (3値)
  34. 34. マイクロアレイからRNA-seq へ ゲノム解析データが大量に取得できるが、確率的モデルが異なる 古い 主流になりつつある (産総研瀬々氏のスライド)
  35. 35. 多い質問(1): BNだと向きがわかるが、無向だとわからない BNの構造学習 因数分解して同じになる構造は 同じスコア(事後確率)になるので、方向は判定できない 3構造と1構造は区別される 区別されない 3構造間は 区別されない
  36. 36. 多い質問(2): スコアとして、BDeu, MDL, AICのどれがいいのですか どれが良いかは、データによる。ちまたにあふれたガセを信じべからず • MDLは、事後確率最大の近似解 • AICは、他のと比べると、過学習で枝が多くなる • BDeuは、デファクトに近い待遇をうけてきたが、 • 致命的な性質が証明された (Suzuki 2017) 少ないサンプルでも枝が多くなる。 使われなくなると予想。
  37. 37. 他ツールとの比較 (自己評価) bnlearn BayoLink BNSL 連続 △ ☓ ◯ 研究の最先端 ☓ ☓ ◎ 大規模な BNの構造学習 近似を許して、大規 模な処理を行う 近似を許して、大規 模な処理を行う 最適解が求まる場 合しか動かない ユーザ数 ◎ ◯ △ 価格 無料 (Rパッケージ) 有料 無料 (Rパッケージ) グラフィック △ ◎ ☓
  38. 38. まとめと今後の課題 RパッケージBNSLの使い方と、知っておくべき理論について説明 今後の課題 連続変数でも対応可能な、BNの構造学習 最適性を犠牲にしてでも、大規模なBNの構造学習を可能にする ベンチマーク alarmを1時間で処理できるレベルに グラフィックやマクロを整備して、商品価値を高める 学者が、論文を広めるためにつくったRパッケージという感が強い 民間で広く使っていただくことが重要

×