【目次】
・アトリビューションモデルとは
・アトリビューションモデルにおける評価の種類
・均等配分モデルと数理モデル
・ChannelAttributionパッケージについて
・Rでの実行
・実行結果
・参考文献
アトリビューションモデルとは
コンバージョンに至った広告の貢献度を、コンバージョンした経路のタッチポイントにどのように割り振るかを決めるルール。直接コンバージョンに至らなかったが、コンバージョンに繋がる働きをした広告の評価ができるモデルです。
アトリビューションモデルにおける評価の種類
Googleアナリティクスに載っていたアトリビューションモデルの種類です。一例なので、これが全てだとは言えないです。
コンバージョンに繋がった最後の経路を評価
コンバージョンに至る経路の直前の経路を評価
最初に関わった経路を評価
コンバージョンに至るまでに関わった経路を均等に評価
コンバージョンした際に、時間的に最も近いものを評価
起点と終点それぞれに40%ずつ評価、残りの20%は中間点に対して均等に評価
均等配分モデルと数理モデル
コンバージョンに至るまでに関わった経路を均等に評価。数学に明るくなくても実行でき、集計が比較的簡単かつ解釈から施策までが容易とされる。一方で、恣意的な判断が入り込みやすかったり、各広告が独立であるという過程があるため、任意の広告のIMPが変化したときに他の広告への影響が加味できないなど欠点も多い。他の評価方法との比較のためのベンチマークとして用いられる。
マルコフ連鎖モデル
ユーザーの2点間の行動のみに基づいて分析を行う。
例えば、広告の経路が10通りある場合、広告1を踏んだユーザーは確率p11で広告1を次に触れる、確率p12で広告2を次に触れるというような確率で広告の接触確率が決まるモデルとなる。確率から接触したページの価値を計算することで、評価が可能となる。複雑怪奇なユーザー行動を2点間のデータに落とし込むことで、分析する際の情報量を制限することができる。
ChannelAttributionパッケージについて
Package ‘ChannelAttribution’
※Rのバージョンが古いとインストールできません。3.2以上にしましょう。
今回はRのChannelAttributionパッケージを用いて、マルコフ連鎖モデルを実践してみます。
このChannelAttributionパッケージにはデータセットがついているため、その用意されたデータを用います。
内訳としては以下の通りです。
・コンバージョンに至ったパス
・コンバージョン数
・コンバージョン価値(価値に関してはサイトによって異なってくると思います。)
・コンバージョンに至らなかったパスの数(計算上使っていないようです。除外しても結果が変わらなかったので。)
Rでの実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#ライブラリとデータを読み込む library(ChannelAttribution) library(reshape2) library(ggplot2) data(PathData) #ヒューリスティックモデルを推定 H=heuristic_models(Data,'path','total_conversions',var_value='total_conversion_value') #マルコフ連鎖モデルを推定 M=markov_model(Data, 'path', 'total_conversions', var_value='total_conversion_value') #合計コンバージョンをプロット R=merge(H,M,by='channel_name') R1=R[,(colnames(R)%in%c("channel_name","first_touch_conversions","last_touch_conversions" ,"linear_touch_conversions","total_conversion"))] colnames(R1)=c('channel_name','first_touch','last_touch','linear_touch','markov_model') R1=melt(R1,id="channel_name") ggplot(R1, aes(channel_name, value, fill = variable)) + geom_bar(stat="identity", position = "dodge") + ggtitle("TOTAL CONVERSIONS")+ theme(axis.title.x = element_text(vjust=-2))+ theme(axis.title.y = element_text(vjust=+2))+ theme(title = element_text(vjust=2))+ theme(text = element_text(size=16)) + theme(plot.title=element_text(size=20)) + ylab("") #合計価値をプロット R2=R[,(colnames(R)%in%c("channel_name","first_touch_value","last_touch_value","linear_tou ch_value","total_conversion_value"))] colnames(R2)=c('channel_name','first_touch','last_touch','linear_touch','markov_model') R2=melt(R2,id="channel_name") ggplot(R2, aes(channel_name, value, fill = variable)) + geom_bar(stat="identity", position = "dodge") + ggtitle("TOTAL VALUE")+ theme(axis.title.x = element_text(vjust=-2))+ theme(axis.title.y = element_text(vjust=+2))+ theme(title = element_text(vjust=2))+ theme(text = element_text(size=16)) + theme(plot.title=element_text(size=20)) + ylab("") |
実行結果
ぱっと見ですが、alphaやtheta以外では均等配分モデルとマルコフ連鎖モデルに大きな差はなさそうです。データにもよるとは思いますが。自社のデータで実行して、違いがあるか見てみたいですね。
参考文献
Markov model for the online multichannel attribution problem