SlideShare a Scribd company logo
1 of 38
Download to read offline
アクションマイニングを⽤いた
最適アクションの導出
2013年10⽉12⽇
第34回Tokyo.R
@sfchaos
⾃⼰紹介

� TwitterID:@sfchaos
� お仕事:⾦融⼯学→データマイニング
� Rを使わなくても良い勉強会があると聞き,
⾶んできました!
1
1. イントロダクション

2
真夏⽇ですが,
秋ですね!
3
出典:http://markezine.jp/article/detail/18435

2013年秋
今をときめく
データサイエンティストたち
出典:佐藤洋⾏他,データサイエンティスト養成読本,
   Software Design Plus, 技術評論社, 2013年.

4
データサイエンティストに憧れて・・・
機械学習を使って予測精度を上げれば
業務に使ってもらえる

5
そんな⾵に思っていた時期が
ありました

6
ところが,世の中はそんなには
⽢くない(場合がある)らしい
頑張って 予測精度を 上げたのに
業務に合わず 使ってもらえず
わずかでも 精度を上げて 胸張るが
売上コスト 説明できず
予測力

端から見れば テストの点
数点アップも 劣等生
7
予測に限らずパターン発⾒でも
得られた知⾒をアクションに
結びつけることが重要

8
例えば退会者の分析
(churn analysis)

「誰が退会するか」だけではなく,
「どうすれば退会を阻⽌できるか」が
実務的には重要
9
そんなある⽇⾒つけた
アクションマイニングという
キーワード

10
というわけで,
今⽇はアクションマイニングの
サワリについてお話します

11
2. アクションマイニング

12
アクションマイニングとは,
アクション可能な知識発⾒の⼀分野
(Actionable Knoledge Discovery, AKD)

13
従来の予測・パターン発⾒
従来の予測・パターン発⾒では,
説明変数を原因,
結果変数を結果として考える.
説明変数

結果変数

14
決定⽊
サービス
レベル

Low

High

Middle

性別
⼥性

0.2

Low

男性

0.9

レート

0.1

0.9

High

0.2

顧客の満⾜度
15
アソシエーション分析
以下が起きているときに,チーズを無料にすれば
ワインを購⼊する⼈は増えるか?
� 多くの消費者がパンを購⼊する
� あまり多くの消費者はチーズを購⼊しない

パンとチーズを
購⼊

ワインを
購⼊する

16
アクションマイニング
結果変数を⽬標値にするために,
説明変数をどのように変えればよいか

説明変数
現状の状態
変更後の
状態

結果変数
何を
どのように
変えれば
よいか?

現状値

⽬標値
17
3. 因果ネットワーク

18
因果ネットワークとは,
変数の間の(因果)関係をあらわした
⾮循環有向グラフ
(asyclic directed graph)
19
季節

スプリン
クラー

⾬

湿り

滑り
やすさ
20
必要なパッケージのインストール
� Rgraphvizパッケージ
> source("http://bioconductor.org/biocLite.R")
> biocLite("Rgraphviz")

� bnlearnパッケージ
> install.packages("bnlearn")

21
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
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
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
4. 因果ネットワークを⽤いた
アクションマイニング

25
今回は次の論⽂で提案された
⼿法を紹介
P.Shamsinejadbabak, M.Sarace, and
H.Blockeel, Causality-based costeffective action mining, 2013.
26
CREAMアルゴリズム

27
滑りやすさを

説明変数(要因)の状態を
変えたときに,
結果変数が⽬標値になる
条件付確率を算出し,
期待効果を推定

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
こんな感じでアクションが出てくる
� 業務では,このような分析結果をもとに,変数を変えるため
の施策を考える活⽤イメージ(?)
アク ショ ン

ID
001

結果

効果
(=利益 - コスト)

CVP=HIGH =>
NORMAL

BP=HIGH ⇒
NORMAL

300,000円

002

・・・

(⾎圧が「⾼」から
「正常」に)
・・・

・・・

・・・

・・・

・・・

・・・

29
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
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
CREAMをさらに進化させて
因果ネットワークも内部で推定する
ICE-CREAM(アイスクリーム)
という⼿法もある

32
5. まとめ

33
� アクションマイニングは,⽬的とする状態にするた
めに,どのような要因を変化させると効果的かに
ついて⽰唆.

� ぶっちゃけ,当初の⽬的からすると,ややスケー
ルダウンな感じも・・・

� が,うまく使えば「何をどう変えれば収益をupさ
せられるか」が分かるかも!?
34
そんなこんなで,
気がついたら
Rを使ってしまっていた・・・

35
やはり便利ですね,Rは!

36
参考⽂献
⽂献名

著者

出版社等

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

More Related Content

What's hot

RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
Atsushi Hayakawa
 
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
tetsuro ito
 

What's hot (16)

Leaflet for Rで好きなLeaflet JSプラグインを使おう
Leaflet for Rで好きなLeaflet JSプラグインを使おうLeaflet for Rで好きなLeaflet JSプラグインを使おう
Leaflet for Rで好きなLeaflet JSプラグインを使おう
 
みんな何使ってるの(Japan.R 2015 LT)
みんな何使ってるの(Japan.R 2015 LT)みんな何使ってるの(Japan.R 2015 LT)
みんな何使ってるの(Japan.R 2015 LT)
 
てかLINEやってる? (Japan.R 2016 LT) #JapanR
てかLINEやってる? (Japan.R 2016 LT) #JapanRてかLINEやってる? (Japan.R 2016 LT) #JapanR
てかLINEやってる? (Japan.R 2016 LT) #JapanR
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016データ分析スクリプトのツール化入門 - PyConJP 2016
データ分析スクリプトのツール化入門 - PyConJP 2016
 
Perl で自然言語処理
Perl で自然言語処理Perl で自然言語処理
Perl で自然言語処理
 
Google cloudnext recap_DataAnalytics
Google cloudnext recap_DataAnalyticsGoogle cloudnext recap_DataAnalytics
Google cloudnext recap_DataAnalytics
 
PyConJP2018_LT_mahjong_180918
PyConJP2018_LT_mahjong_180918PyConJP2018_LT_mahjong_180918
PyConJP2018_LT_mahjong_180918
 
Spatial Computingの未来に思いを馳せて
Spatial Computingの未来に思いを馳せてSpatial Computingの未来に思いを馳せて
Spatial Computingの未来に思いを馳せて
 
Machine learning and_system_design
Machine learning and_system_designMachine learning and_system_design
Machine learning and_system_design
 
PypeRで実験と分析を一本化する
PypeRで実験と分析を一本化するPypeRで実験と分析を一本化する
PypeRで実験と分析を一本化する
 
rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!rsyncで差分バックアップしようぜ!
rsyncで差分バックアップしようぜ!
 
統計用言語Rの使い方(2014)
統計用言語Rの使い方(2014)統計用言語Rの使い方(2014)
統計用言語Rの使い方(2014)
 
APIを作ってみた
APIを作ってみたAPIを作ってみた
APIを作ってみた
 
僕の考える最強のビックデータエンジニア
僕の考える最強のビックデータエンジニア僕の考える最強のビックデータエンジニア
僕の考える最強のビックデータエンジニア
 
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
Japan.r 2013 「実ビジネスデータへのrの活用とその限界」
 

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

大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
Hisao Soyama
 
第31回TokyoR LT資料
第31回TokyoR LT資料第31回TokyoR LT資料
第31回TokyoR LT資料
tetsuro ito
 

Similar to アクションマイニングを用いた最適なアクションの導出 (20)

(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方
 
セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44セグメンテーションの考え方・使い方 - TokyoR #44
セグメンテーションの考え方・使い方 - TokyoR #44
 
アジャイル×パターン=ぼくたちの現場 イントロダクション
アジャイル×パターン=ぼくたちの現場 イントロダクションアジャイル×パターン=ぼくたちの現場 イントロダクション
アジャイル×パターン=ぼくたちの現場 イントロダクション
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
 
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
 
Go azure おばかIoT シンポジウム
Go azure おばかIoT シンポジウムGo azure おばかIoT シンポジウム
Go azure おばかIoT シンポジウム
 
Completely understand smart_speaker
Completely understand smart_speakerCompletely understand smart_speaker
Completely understand smart_speaker
 
TokyoR79 beginnerssession1
TokyoR79 beginnerssession1TokyoR79 beginnerssession1
TokyoR79 beginnerssession1
 
ビジネスの現場のデータ分析における理想と現実
ビジネスの現場のデータ分析における理想と現実ビジネスの現場のデータ分析における理想と現実
ビジネスの現場のデータ分析における理想と現実
 
Rapid PrototypingからRapid Manufacturingへ
Rapid PrototypingからRapid ManufacturingへRapid PrototypingからRapid Manufacturingへ
Rapid PrototypingからRapid Manufacturingへ
 
大きなチーム、大きな仕事 ~ 大規模アジャイル開発のいま
大きなチーム、大きな仕事 ~ 大規模アジャイル開発のいま大きなチーム、大きな仕事 ~ 大規模アジャイル開発のいま
大きなチーム、大きな仕事 ~ 大規模アジャイル開発のいま
 
Thinking datascientist itself
Thinking datascientist itselfThinking datascientist itself
Thinking datascientist itself
 
筑波大学 情報メディア創成 大学説明会 2019
筑波大学 情報メディア創成 大学説明会 2019筑波大学 情報メディア創成 大学説明会 2019
筑波大学 情報メディア創成 大学説明会 2019
 
第31回TokyoR LT資料
第31回TokyoR LT資料第31回TokyoR LT資料
第31回TokyoR LT資料
 
Rでを作る
Rでを作るRでを作る
Rでを作る
 
CTOやフリーランスのキャリアについて
CTOやフリーランスのキャリアについてCTOやフリーランスのキャリアについて
CTOやフリーランスのキャリアについて
 
CTOやフリーランスのキャリアについて
CTOやフリーランスのキャリアについてCTOやフリーランスのキャリアについて
CTOやフリーランスのキャリアについて
 
chatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdfchatGPTの驚くべき対話能力.pdf
chatGPTの驚くべき対話能力.pdf
 
GDG2018 vision kit mahjong
GDG2018 vision kit mahjongGDG2018 vision kit mahjong
GDG2018 vision kit mahjong
 
めぐろLT#10_なぜか本出した。そして起業することになった。結論:エンジニアコミュニティは大切
めぐろLT#10_なぜか本出した。そして起業することになった。結論:エンジニアコミュニティは大切めぐろLT#10_なぜか本出した。そして起業することになった。結論:エンジニアコミュニティは大切
めぐろLT#10_なぜか本出した。そして起業することになった。結論:エンジニアコミュニティは大切
 

More from Shintaro Fukushima

Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Shintaro Fukushima
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Shintaro Fukushima
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
Shintaro Fukushima
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理する
Shintaro Fukushima
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
Shintaro Fukushima
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Shintaro Fukushima
 

More from Shintaro Fukushima (20)

20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
 
Materials Informatics and Python
Materials Informatics and PythonMaterials Informatics and Python
Materials Informatics and Python
 
BPstudy sklearn 20180925
BPstudy sklearn 20180925BPstudy sklearn 20180925
BPstudy sklearn 20180925
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理する
 
R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
外れ値
外れ値外れ値
外れ値
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 

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