R語言使用馬爾可夫鏈對營銷中的渠道歸因建模

原文連接:http://tecdat.cn/?p=5383

=網絡

介紹

在這篇文章中,咱們看看什麼是渠道歸因,以及它如何與馬爾可夫鏈的概念聯繫起來。咱們還將經過一個電子商務公司的案例研究來理解這個概念如何在理論上和實踐上運做(使用R)。ide

什麼是渠道歸因?

Google Analytics爲歸因建模提供了一套標準規則。根據Google的說法,「歸因模型是決定銷售和轉化如何分配給轉化路徑中的接觸點的規則或一組規則。例如,Google Analytics中的最後一次互動模型會爲緊接銷售或轉化以前的最終接觸點(即,點擊次數)分配100%的功勞。相比之下,第一個互動模型爲啓動轉化路徑的接觸點分配100%的功勞。「網站

咱們將在本文後面看到最後一個交互模型和第一個交互模型。在此以前,讓咱們舉一個小例子,進一步瞭解渠道歸因。假設咱們有一個轉換圖,以下所示:spa

在上述狀況下,客戶能夠經過渠道'C1'或渠道'C2'開始他們的旅程。以C1或C2開始的機率爲50%(或0.5)。咱們首先計算轉換的整體機率,而後進一步查看每一個渠道的影響。code

P(轉換)= P(C1→C2→C3→轉換)+ P(C2→C3→轉換)blog

= 0.5 0.5 1 0.6 + 0.5 1 * 0.6圖片

= 0.15 + 0.3element

= 0.45rem

馬爾可夫鏈

馬爾可夫鏈是一個過程,它映射活動並給出機率分佈,從一個狀態轉移到另外一個狀態。馬爾可夫鏈由三個屬性定義:get

狀態空間 - 處理可能存在的全部狀態的集合

轉換操做 - 從一個狀態轉移到另外一個狀態的機率

當前狀態機率分佈 - 在過程開始時處於任何一個狀態的機率分佈

咱們知道咱們能夠經過的階段,從每條路徑移動的機率以及咱們知道當前狀態的可能性。這看起來與馬爾可夫鏈類似。

事實上,這是一個馬爾可夫鏈的應用。若是咱們要弄清楚渠道1在咱們的客戶從始至終轉換的過程當中的貢獻,咱們將使用去除效果的原則。去除效果原則說,若是咱們想要在客戶過程當中找到每一個渠道的貢獻,咱們能夠經過刪除每一個渠道並查看在沒有該渠道的狀況下發生了多少次轉化。

例如,咱們假設咱們必須計算通道C1的貢獻。咱們將從模型中刪除通道C1,並查看圖片中沒有C1的狀況下發生了多少次轉換,即全部渠道無缺無損時的總轉換次數。咱們計算渠道C1:

P(去除C1後的轉換)= P(C2→C3→轉換)

= 0.5 1 0.6

= 0.3

30%的客戶互動能夠在沒有C1渠道的狀況下進行轉換; 而C1無缺無損,45%的互動能夠轉換。因此,C1的去除效果是

0.3 / 0.45 = 0.666。

C2和C3的去除效果爲1(您能夠嘗試計算,但直覺地認爲,若是咱們要刪除或者C2或C3,咱們將可以完成任何轉換?)。

這是馬爾可夫鏈的一個很是有用的應用。在上述狀況下,全部渠道--C1,C2,C3(在不一樣階段)被稱爲轉換狀態 ; 而從一個渠道移動到另外一個渠道的機率稱爲轉移機率。

客戶旅程是一系列渠道,能夠看做是一個有向馬爾可夫圖中的一個鏈,其中每一個頂點都是一個狀態(渠道/接觸點),每條邊表示從一個狀態移動到另外一個狀態的轉移機率。因爲到達狀態的機率僅取決於以前的狀態,所以能夠將其視爲無記憶馬爾可夫鏈。

電子商務公司案例研究

讓咱們進行真實案例研究,看看咱們如何實施渠道歸因建模。

一家電子商務公司進行了一項調查並收集了客戶的數據。這能夠被認爲是具備表明性的人羣。在調查中,公司收集了有關客戶訪問各類觸點的數據,最終在其網站上購買該產品。

總共有19個渠道,客戶能夠遇到產品或產品廣告。在19個渠道以後,還有三種狀況:

#20 - 客戶決定購買哪一種設備;

#21 - 客戶已經作出最終購買;

#22 - 客戶還沒有決定。

渠道的整體分類以下:

類別

渠道

網站(1,2,3)

公司的網站或競爭對手的網站

研究報告(4,5,6,7,8)

行業諮詢研究報告

在線/評論(9,10)

天然搜索,論壇

價格比較(11)

聚合渠道

朋友(12,13)

社交網絡

專家(14)

在線或離線專家

零售店(15,16,17)

實體店

其餘 (18,19)

其餘,例如在各地的促銷活動

如今,咱們須要幫助電子商務公司肯定投資營銷渠道的正確策略。應該關注哪些渠道?公司應該投資哪些渠道?咱們將在下一節中使用R來解決這個問題。

使用R的實現

咱們讀取數據,嘗試在R中實現並檢查結果。

> head(channel)

輸出:

R05A.01    R05A.02    R05A.03    R05A.04    …..    R05A.18    R05A.19    R05A.20
16    4    3    5        NA    NA    NA
2    1    9    10        NA    NA    NA
9    13    20    16        NA    NA    NA
8    15    20    21        NA    NA    NA
16    9    13    20        NA    NA    NA
1    11    8    4        NA    NA    NA

咱們將進行一些數據處理,將其帶入一個階段,咱們能夠將其用做模型中的輸入。而後,咱們將肯定哪些客戶已進行最終轉換。

建立一個特定格式的變量'路徑',能夠做爲模型的輸入。另外,咱們將使用「dplyr」包找出每條路徑的總髮生次數。

路徑轉變

路徑

轉換

1 > 1 > 1 > 20

1

1 > 1 > 12 > 12

1

1 > 1 > 14 > 13 > 12 > 20

1

1 > 1 > 3 > 13 > 3 > 20

1

1 > 1 > 3 > 17 > 17

1

1 > 6 > 1 > 12 > 20 > 12

1

> channel_fin = ddply(channel_fin,~path,summarise, conversion= sum(convert))
> head(channel_fin)

輸出:

路徑轉變

路徑

轉換

1 > 1 > 1 > 20

1

1 > 1 > 12 > 12

1

1 > 1 > 14 > 13 > 12 > 20

1

1 > 1 > 3 > 13 > 3 > 20

1

1 > 1 > 3 > 17 > 17

1

1 > 1 > 6 > 1 > 12 > 20 > 12

1

如今,咱們將建立一個啓發式模型和一個馬爾科夫模型,將二者結合起來,而後檢查最終結果。

輸出:

Output:

渠道名稱

首次接觸轉換

…..

線性接觸轉換

線性接觸值

1

130

73.773661

73.773661

20

0

473.998171

473.998171

12

75

76.127863

76.127863

14

34

56.335744

56.335744

13

320

204.039552

204.039552

3

168

117.609677

117.609677

17

31

76.583847

76.583847

6

50

54.707124

54.707124

8

56

53.677862

53.677862

10

547

211.822393

211.822393

11

66

107.109048

107.109048

16

111

156.049086

156.049086

2

199

94.111668

94.111668

4

231

250.784033

250.784033

7

26

33.435991

33.435991

5

62

74.900402

74.900402

9

250

194.07169

194.07169

15

22

65.159225

65.159225

18

4

5.026587

5.026587

19

10

12.676375

12.676375

輸出:

:

渠道名稱

整體轉換

整體轉換值

1

82.482961

82.482961

20

432.40615

432.40615

12

83.942587

83.942587

14

63.08676

63.08676

13

195.751556

195.751556

3

122.973752

122.973752

17

83.866724

83.866724

6

63.280828

63.280828

8

61.016115

61.016115

10

209.035208

209.035208

11

118.563707

118.563707

16

158.692238

158.692238

2

98.067199

98.067199

4

223.709091

223.709091

7

41.919248

41.919248

5

81.865473

81.865473

9

179.483376

179.483376

15

70.360777

70.360777

18

5.950827

5.950827

19

15.545424

15.545424

在進一步討論以前,咱們先來了解一下咱們上面看到的一些術語的含義。

第一次接觸轉換:當該渠道是客戶的第一個觸點時,經過渠道進行的轉換。第一個觸點得到100%的功勞。

上次接觸轉換:當該渠道是客戶的最後一個接觸點時,經過渠道發生的轉化。100%功勞給予最後的接觸點。

回到R代碼,讓咱們合併這兩個模型,並以可視化方式表示輸出。

# 繪製總轉換
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(size = 16)) +

從上圖中能夠清楚地看到結果。從第一次接觸轉換角度來看,渠道10,渠道13,渠道2,渠道4和渠道9很是重要; 而從最後接觸的角度來看,第20渠道是最重要的(由於在咱們的例子中客戶決定購買哪一種產品)。就線性接觸轉換而言,渠道20、渠道4和渠道9是重要的。從總轉換角度來看,渠道10,13,20,4和9很是重要。

結束

在上面的圖表中,咱們已經可以找出哪些是咱們關注的重要渠道,哪些能夠被忽略或忽視。這種狀況使咱們對客戶分析領域馬爾可夫鏈模型的應用有了很好的瞭解。電子商務公司如今能夠更準確地建立他們的營銷策略,並使用數據驅動的看法分配他們的營銷預算。

相關文章
相關標籤/搜索