アクションマイニングを用いた最適なアクションの導出

4,106 views
3,952 views

Published on

0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,106
On SlideShare
0
From Embeds
0
Number of Embeds
1,540
Actions
Shares
0
Downloads
22
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

アクションマイニングを用いた最適なアクションの導出

  1. 1. アクションマイニングを⽤いた 最適アクションの導出 2013年10⽉12⽇ 第34回Tokyo.R @sfchaos
  2. 2. ⾃⼰紹介 � TwitterID:@sfchaos � お仕事:⾦融⼯学→データマイニング � Rを使わなくても良い勉強会があると聞き, ⾶んできました! 1
  3. 3. 1. イントロダクション 2
  4. 4. 真夏⽇ですが, 秋ですね! 3
  5. 5. 出典:http://markezine.jp/article/detail/18435 2013年秋 今をときめく データサイエンティストたち 出典:佐藤洋⾏他,データサイエンティスト養成読本,    Software Design Plus, 技術評論社, 2013年. 4
  6. 6. データサイエンティストに憧れて・・・ 機械学習を使って予測精度を上げれば 業務に使ってもらえる 5
  7. 7. そんな⾵に思っていた時期が ありました 6
  8. 8. ところが,世の中はそんなには ⽢くない(場合がある)らしい 頑張って 予測精度を 上げたのに 業務に合わず 使ってもらえず わずかでも 精度を上げて 胸張るが 売上コスト 説明できず 予測力 端から見れば テストの点 数点アップも 劣等生 7
  9. 9. 予測に限らずパターン発⾒でも 得られた知⾒をアクションに 結びつけることが重要 8
  10. 10. 例えば退会者の分析 (churn analysis) 「誰が退会するか」だけではなく, 「どうすれば退会を阻⽌できるか」が 実務的には重要 9
  11. 11. そんなある⽇⾒つけた アクションマイニングという キーワード 10
  12. 12. というわけで, 今⽇はアクションマイニングの サワリについてお話します 11
  13. 13. 2. アクションマイニング 12
  14. 14. アクションマイニングとは, アクション可能な知識発⾒の⼀分野 (Actionable Knoledge Discovery, AKD) 13
  15. 15. 従来の予測・パターン発⾒ 従来の予測・パターン発⾒では, 説明変数を原因, 結果変数を結果として考える. 説明変数 結果変数 14
  16. 16. 決定⽊ サービス レベル Low High Middle 性別 ⼥性 0.2 Low 男性 0.9 レート 0.1 0.9 High 0.2 顧客の満⾜度 15
  17. 17. アソシエーション分析 以下が起きているときに,チーズを無料にすれば ワインを購⼊する⼈は増えるか? � 多くの消費者がパンを購⼊する � あまり多くの消費者はチーズを購⼊しない パンとチーズを 購⼊ ワインを 購⼊する 16
  18. 18. アクションマイニング 結果変数を⽬標値にするために, 説明変数をどのように変えればよいか 説明変数 現状の状態 変更後の 状態 結果変数 何を どのように 変えれば よいか? 現状値 ⽬標値 17
  19. 19. 3. 因果ネットワーク 18
  20. 20. 因果ネットワークとは, 変数の間の(因果)関係をあらわした ⾮循環有向グラフ (asyclic directed graph) 19
  21. 21. 季節 スプリン クラー ⾬ 湿り 滑り やすさ 20
  22. 22. 必要なパッケージのインストール � Rgraphvizパッケージ > source("http://bioconductor.org/biocLite.R") > biocLite("Rgraphviz") � bnlearnパッケージ > install.packages("bnlearn") 21
  23. 23. Alarmデータセット � 患者の診断項⽬とアラームのデータセット > library(bnlearn) > alarm[1:2, ] CVP PCWP HIST TPR BP CO HRBP HREK HRSA PAP SAO2 FIO2 1 NORMAL NORMAL FALSE LOW NORMAL HIGH HIGH HIGH HIGH NORMAL NORMAL LOW 2 NORMAL NORMAL FALSE NORMAL LOW LOW HIGH HIGH HIGH NORMAL LOW NORMAL PRSS ECO2 MINV MVS HYP LVF APL ANES PMB INT KINK DISC 1 HIGH ZERO HIGH NORMAL FALSE FALSE FALSE FALSE FALSE NORMAL FALSE TRUE 2 HIGH ZERO ZERO NORMAL FALSE FALSE FALSE FALSE FALSE NORMAL FALSE FALSE LVV STKV CCHL ERLO HR ERCA SHNT PVS ACO2 VALV VLNG VTUB 1 NORMAL NORMAL HIGH FALSE HIGH FALSE NORMAL NORMAL NORMAL HIGH LOW ZERO 2 NORMAL LOW HIGH FALSE HIGH FALSE NORMAL LOW LOW ZERO ZERO LOW VMCH 1 NORMAL 2 NORMAL 22
  24. 24. Alarmデータセット � 診断項⽬(変数)間の関係を可視化 > library(bnlearn) > res = empty.graph(names(alarm)) > modelstring(res) <paste("[HIST|LVF][CVP|LVV][PCWP|LVV][HYP][LVV|HYP:LVF]", + "[LVF][STKV|HYP:LVF][ERLO][HRBP|ERLO:HR][HREK|ERCA:HR][ERCA]", + "[HRSA|ERCA:HR][ANES][APL][TPR|APL][ECO2|ACO2:VLNG][KINK]", + "[MINV|INT:VLNG][FIO2][PVS|FIO2:VALV][SAO2|PVS:SHNT][PAP|PMB][PMB]", + "[SHNT|INT:PMB][INT][PRSS|INT:KINK:VTUB][DISC][MVS][VMCH|MVS]", + "[VTUB|DISC:VMCH][VLNG|INT:KINK:VTUB][VALV|INT:VLNG][ACO2|VALV]", + "[CCHL|ACO2:ANES:SAO2:TPR][HR|CCHL][CO|HR:STKV][BP|CO:TPR]", sep = "") > graphviz.plot(res) 23
  25. 25. MVS DISC PMB INT PA P V MCH KINK VLNG SHNT VTUB PRSS 複雑な,あまりに複雑な FIO2 APL MINV VALV PVS TPR A NES ACO2 SAO2 ECO2 HY P LVF CCHL LVV STKV HIST ERLO HR ERCA PCWP CV P CO HRBP HRSA HREK BP Blood Pressure 24
  26. 26. 4. 因果ネットワークを⽤いた アクションマイニング 25
  27. 27. 今回は次の論⽂で提案された ⼿法を紹介 P.Shamsinejadbabak, M.Sarace, and H.Blockeel, Causality-based costeffective action mining, 2013. 26
  28. 28. CREAMアルゴリズム 27
  29. 29. 滑りやすさを 説明変数(要因)の状態を 変えたときに, 結果変数が⽬標値になる 条件付確率を算出し, 期待効果を推定 Step.1 因果ネットワークが与えられた前提で, 以下の値を外製的に設定 § スプリンクラーをOffからOnに変えるコスト § 滑りやすさが変更されたときに得られる利益 季節 Step.3 スプリンクラーをOffからOnにしたときに, ⽬標とする滑りやすさが実現する 条件付確率を算出 スプリン クラー ⾬ 湿り 滑り やすさ Step.2 ⽬標とする滑りやすさを設定 Step.4 Step.1で設定した利益とStep.3で求めた条件 付確率から,利益upの期待値を算出 Step.5 スプリンクラーをOffからOnにする期待効果 = Step.4で算出した利益upの期待値 Step.1で設定したコスト 28
  30. 30. こんな感じでアクションが出てくる � 業務では,このような分析結果をもとに,変数を変えるため の施策を考える活⽤イメージ(?) アク ショ ン ID 001 結果 効果 (=利益 - コスト) CVP=HIGH => NORMAL BP=HIGH ⇒ NORMAL 300,000円 002 ・・・ (⾎圧が「⾼」から 「正常」に) ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 29
  31. 31. Rでの実装 cream.main <- function(target="BP", n=173328) { # CREAM CREAMアルゴリズムを実⾏する関数 # @param target: target attribute(character) # @param n: number of record of observational data library(bnlearn) ( ) # 観測データ(アラームデータセット) data(alarm) # CREAM CREAMアルゴリズムの実⾏ cost <- 1.0 profit <- 1.0 cn <- hc(alarm) cream(alarm, target, "NORMAL", cost, profit, cn) プログラムは 後⽇公開予定 } 30
  32. 32. Rでの実装 cream <- function(x, target, target.value, cost, profit, cn) { # The CREAM algorithm # for learning cost-effective action sets from causal networks # # # # # # # @param x: object data(data frame or matrix) @param target: target attribute(character) @param target.value: target value @param cost: cost data(numeric) @param profit: profit(numeric) @param cn: underlying causal network @return library(foreach) library(doSNOW) プログラムは 後⽇公開予定 var.list <- colnames(x) to.str <- paste0("(", target, "=='", target.value, "')") result <- vector("list", nrow(x)) fitted <- bn.fit(cn, x) ...  ... } 31
  33. 33. CREAMをさらに進化させて 因果ネットワークも内部で推定する ICE-CREAM(アイスクリーム) という⼿法もある 32
  34. 34. 5. まとめ 33
  35. 35. � アクションマイニングは,⽬的とする状態にするた めに,どのような要因を変化させると効果的かに ついて⽰唆. � ぶっちゃけ,当初の⽬的からすると,ややスケー ルダウンな感じも・・・ � が,うまく使えば「何をどう変えれば収益をupさ せられるか」が分かるかも!? 34
  36. 36. そんなこんなで, 気がついたら Rを使ってしまっていた・・・ 35
  37. 37. やはり便利ですね,Rは! 36
  38. 38. 参考⽂献 ⽂献名 著者 出版社等 Incorporating Hendrik Blockeel COSTS causal reasoning workshop @ ICDM 2012 in cost-effective コメ ント 下記の論⽂を要訳し たスライドであり,分 かりやすい. action mining Causality-based Cost-effective Action Mining Action Rules Mining Pirooz Shamsinejadbab aki, Mohamad Saraee, and Hendrik  Agnieszka Dardzinska 因果ネットワークを⽤ いたCREAM, ICECREAMという2つのア クションマイニングのア ルゴリズムを提唱. Springer 未読.この分野を専 ⾨的に扱った本. 37

×