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.

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

4,779 views

Published on

  • Be the first to comment

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

  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

×