日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

支付宝营销策略效果分析 A/Btest

發(fā)布時(shí)間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 支付宝营销策略效果分析 A/Btest 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 一、項(xiàng)目背景
    • A/B test的流程
  • 二、分析過程
    • 2.1 數(shù)據(jù)預(yù)處理
    • 2.2 計(jì)算樣本量是否滿足最小樣本數(shù)
    • 2.3 實(shí)驗(yàn)評(píng)估-假設(shè)檢驗(yàn)
      • 方案2的點(diǎn)擊率是否顯著提升
  • 三、結(jié)論

一、項(xiàng)目背景

A/B test在評(píng)估不同項(xiàng)目的效果和優(yōu)劣時(shí)由非常大的作用,在目前的互聯(lián)網(wǎng)領(lǐng)域得到了廣泛的應(yīng)用,本分析以支付寶某次營(yíng)銷活動(dòng)為例,分別統(tǒng)計(jì)兩組營(yíng)銷方案的點(diǎn)擊率,通過A/B測(cè)試計(jì)算比較兩種策略的投放效果。

數(shù)據(jù)來(lái)源于阿里云天池
Audience Expansion Dataset
在本次分析中,我們只使用到effect_tb.csv文件,它包含了用戶參與的營(yíng)銷方案及點(diǎn)擊情況,數(shù)據(jù)介紹如下:

特征描述
dmp_id營(yíng)銷方案編號(hào),1:對(duì)照組,2:營(yíng)銷方案1;3:營(yíng)銷方案2
user_id支付寶用戶ID
label用戶當(dāng)天是否點(diǎn)擊營(yíng)銷活動(dòng),0:未點(diǎn)擊,1:點(diǎn)擊

A/B test的流程

  • 1 明確目的(eg.提高gmv,增加轉(zhuǎn)化率,降低用戶取消率…),確認(rèn)是否有進(jìn)行A/B test的必要性,確定A/B 版本;
  • 2 選取指標(biāo),1,2,3級(jí)指標(biāo);如dd:人均呼叫,司機(jī)/乘客取消率,司機(jī)接單數(shù)…
  • 3 確定實(shí)驗(yàn)分組方式:尾號(hào)分桶&取模分桶,并進(jìn)行流量分配;
  • 4 計(jì)算最小樣本量;
  • 5 AB灰度測(cè)試:在abtest正式上線之前進(jìn)行小規(guī)模的測(cè)試,再放量至覆蓋所有用戶,根據(jù)數(shù)據(jù)進(jìn)行反饋測(cè)試,以便及時(shí)發(fā)現(xiàn)問題并修改;
  • 6 ABtest 上線;
  • 7 回收數(shù)據(jù),實(shí)驗(yàn)評(píng)估:計(jì)算均值及方差,計(jì)算z-stat,計(jì)算p-value,與a比較,得出是否有顯著意義。

本次分析主要是回收數(shù)據(jù)后的假設(shè)檢驗(yàn)。

二、分析過程

2.1 數(shù)據(jù)預(yù)處理

讀取數(shù)據(jù)

import pandas as pd import numpy as npeffect = pd.read_csv('effect_tb.csv',header=None,names=['dt','user_id','label','dmp_id']) effect.head() # 刪除無(wú)用列 effect = effect.drop(columns='dt') effect.head() user_id label dmp_id 0 1 0 1 1 1000004 0 1 2 1000004 0 2 3 1000006 0 1 4 1000006 0 3

查看數(shù)據(jù)信息

print(effect.info()) print('總用戶數(shù):',effect['user_id'].unique().size) print('______________________') print('是否存在空值:') print(effect.isnull().sum()) print('______________________') print('是否存在重復(fù)值') print(effect[effect.duplicated()])

# 刪除重復(fù)值 effect.drop_duplicates(inplace=True) effect[effect.duplicated()] # 是否存在異常值 主要關(guān)注label和dmp_id有沒有異常值 print('label的值:') print(effect['label'].value_counts()) print('dmp_id的值:') print(effect['dmp_id'].value_counts()) label的值: 0 2594479 1 38496 Name: label, dtype: int64 dmp_id的值: 1 1905663 2 411107 3 316205 Name: dmp_id, dtype: int64

2.2 計(jì)算樣本量是否滿足最小樣本數(shù)

由之前的數(shù)據(jù)統(tǒng)計(jì)可知,樣本數(shù)遠(yuǎn)遠(yuǎn)大于30,可以利用中心極限定理認(rèn)為用戶點(diǎn)擊率的均值符合正態(tài)分布,本次分析中可以使用Z檢驗(yàn),同時(shí)我們希望比較哪個(gè)方案更好,因此是單尾檢驗(yàn)。

最小樣本量是根據(jù)統(tǒng)計(jì)功效來(lái)計(jì)算的,主要是為了規(guī)避第二類錯(cuò)誤。最小樣本量也跟顯著性水平、指標(biāo)歷史均值、指標(biāo)提升的絕對(duì)值有關(guān)。在本次分析中,我們選擇的指標(biāo)是點(diǎn)擊率,這是一個(gè)比率類指標(biāo),因此,最小樣本的計(jì)算公式為:

樣本量 n=2σ2(Z1?α2+Z1?β)2Δ2n=\frac{2 \sigma^{2}\left(Z_{1-\frac{\alpha}{2}}+Z_{1-\beta}\right)^{2}}{\Delta^{2}}n=Δ22σ2(Z1?2α??+Z1?β?)2?

  • σ2\sigma^{2}σ2 是歷史數(shù)據(jù)的方差, σ2=p(1?p)\sigma^{2} = p(1-p)σ2=p(1?p) ,p是歷史效果指標(biāo)均值
  • Δ2\Delta^{2}Δ2 是我們希望提升的效果指標(biāo)與指標(biāo)基線差值的絕對(duì)值
  • α\alphaα 代表顯著性水平, 1?β1-\beta1?β 代表規(guī)避第二類錯(cuò)誤的功效

計(jì)算過程:

  • 由于缺少歷史數(shù)據(jù),我們將對(duì)照組的點(diǎn)擊率均值作為指標(biāo)基線值,計(jì)算得 p=0.0126,σ2=p(1?p)=0.0124p = 0.0126, \sigma^{2} = p(1-p) = 0.0124p=0.0126,σ2=p(1?p)=0.0124
  • 我們希望能至少提升30%的點(diǎn)擊率,計(jì)算得Δ=0.0126?0.3=0.00378,Δ2=0.000014288\Delta= 0.0126 * 0.3 = 0.00378,\Delta^{2} = 0.000014288Δ=0.0126?0.3=0.00378Δ2=0.000014288
  • 給定α=0.05,1?β=0.80\alpha=0.05,1-\beta=0.80α=0.051?β=0.80Z1?α2=1.959964,Z1?β=0.8416212Z_{1-\frac{\alpha}{2}} = 1.959964, Z_{1-\beta} = 0.8416212Z1?2α??=1.959964,Z1?β?=0.8416212
  • 計(jì)算得n = 13669

python計(jì)算過程如下:

# 計(jì)算最小樣本量 p = 0.0126 #歷史均值 delta = 0.3 #希望提升的百分比 sigma = p * (1-p) #方差 alpha = 0.05 #顯著性水平 beta = 0.20 #第二類錯(cuò)誤 z1 = norm.ppf(1 - alpha/2) z2 = norm.ppf(1-beta)n = 2 *sigma*((z1+z2)**2)/((p*delta)**2) print('最小樣本量為:',n) 最小樣本量為: 13668.401851316208

也可以使用網(wǎng)站計(jì)算:evan’s sample-size

得到的結(jié)果比較相似,證明我們的計(jì)算過程沒有問題。每個(gè)實(shí)驗(yàn)組最少需要14260人,1組的數(shù)據(jù)有1905663條,2組有411107條,3組有316205條,均超過最小樣本量,可以認(rèn)為本次數(shù)據(jù)有意義,可以進(jìn)行假設(shè)檢驗(yàn)。

2.3 實(shí)驗(yàn)評(píng)估-假設(shè)檢驗(yàn)

先計(jì)算每組的平均點(diǎn)擊率,再計(jì)算每組提升的點(diǎn)擊率

effect.groupby(['dmp_id'])['label'].mean()# dmp_id # 1 0.012551 # 2 0.015315 # 3 0.026192 # Name: label, dtype: float64print('方案1提升',effect[effect['dmp_id']==2]['label'].mean()-effect[effect['dmp_id']==1]['label'].mean()) print('方案2提升',effect[effect['dmp_id']==3]['label'].mean()-effect[effect['dmp_id']==1]['label'].mean()) 方案1提升 0.0027637353122772403 方案2提升 0.0136408567689845

可以發(fā)現(xiàn)方案1并沒有滿足我們希望提高的點(diǎn)擊率要求,而方案2滿足了,我們可以認(rèn)為方案1達(dá)不到我們的預(yù)計(jì)效果,只對(duì)方案2的數(shù)據(jù)進(jìn)行假設(shè)檢驗(yàn)。

方案2的點(diǎn)擊率是否顯著提升

  • 設(shè)參照組的點(diǎn)擊率為p0,方案2的點(diǎn)擊率為p2
    • 原假設(shè):p0≥p2
    • 備擇假設(shè):p0<p2
  • 樣本大小大于>30,可以認(rèn)為符合正態(tài)分布,使用z檢驗(yàn),根據(jù)備擇假設(shè),為左側(cè)單尾檢驗(yàn)。

  • 計(jì)算z值

  • Z=p2?p1σ22n2+σ12n1=p2?p1p2?(1?p2)n2+p1?(1?p1)n1Z=\frac{p_{2}-p_{1}}{\sqrt{\frac{\sigma_{2}^{2}}{n_{2}}+\frac{\sigma_{1}^{2}}{n_{1}}}}=\frac{p_{2}-p_{1}}{\sqrt{\frac{p_{2} *\left(1-p_{2}\right)}{n_{2}}+\frac{p_{1} *\left(1-p_{1}\right)}{n_{1}}}}Z=n2?σ22??+n1?σ12???p2??p1??=n2?p2??(1?p2?)?+n1?p1??(1?p1?)??p2??p1??

  • 計(jì)算p-value,給定α=0.05\alpha=0.05α=0.05
  • # 分別統(tǒng)計(jì)人數(shù)和點(diǎn)擊率 # 對(duì)照組樣本數(shù)量 n_control = effect[effect.dmp_id==1].shape[0] # 營(yíng)銷活動(dòng)的樣本數(shù)量 n_test1 = effect[effect.dmp_id==2].shape[0] n_test2 = effect[effect.dmp_id==3].shape[0]c_control = effect[(effect.dmp_id==1) & (effect.label==1)].shape[0] c_test1 = effect[(effect.dmp_id==2) & (effect.label==1)].shape[0] c_test2 = effect[(effect.dmp_id==3) & (effect.label==1)].shape[0]# 對(duì)照組的廣告點(diǎn)擊率 r_control = c_control/n_control# 營(yíng)銷活動(dòng)樣本數(shù)量 r_test1 = c_test1/n_test1 r_test2 = c_test2/n_test2 print('對(duì)照組的人數(shù):',n_control,'對(duì)照組的點(diǎn)擊人數(shù)',c_control) print('方案2的人數(shù):',n_test2,'方案2的點(diǎn)擊人數(shù)',c_test2)from statsmodels.stats.proportion import proportions_ztestz_score,p = proportions_ztest([c_control,c_test2],[n_control,n_test2])print("檢驗(yàn)統(tǒng)計(jì)量z:",z_score,",p值:", p) 對(duì)照組的人數(shù): 1905663 對(duì)照組的點(diǎn)擊人數(shù) 23918 方案2的人數(shù): 316205 方案2的點(diǎn)擊人數(shù) 8282 檢驗(yàn)統(tǒng)計(jì)量z: -59.44168632985996 ,p值: 0.0

    p<αp< \alphap<α,拒絕原假設(shè),基于我們選取的樣本,我們有理由拒絕原假設(shè),策略二點(diǎn)擊率的提升在統(tǒng)計(jì)學(xué)上是顯著的。

    z_score_1,p_1 = proportions_ztest([c_control,c_test1],[n_control,n_test1])print("方案1檢驗(yàn)統(tǒng)計(jì)量z:",z_score_1,",p值:", p_1) 方案1檢驗(yàn)統(tǒng)計(jì)量z: -14.165873564308429 ,p值: 1.4900243485475164e-45

    不能拒絕原假設(shè),策略一的點(diǎn)擊率提升不顯著。

    三、結(jié)論

    • 總體描述:
      在支付寶的某次營(yíng)銷活動(dòng)中,為了檢驗(yàn)兩種營(yíng)銷方案的提升效果,設(shè)計(jì)了AB測(cè)試,將用戶分為對(duì)照組,方案一組,方案二組共三組,其中,
      對(duì)照組的人數(shù): 1905663 對(duì)照組的點(diǎn)擊人數(shù):23918
      方案1的人數(shù): 411107 方案2的點(diǎn)擊人數(shù):6296
      方案2的人數(shù): 316205 方案2的點(diǎn)擊人數(shù):8282

    • 假設(shè)檢驗(yàn):
      獨(dú)立雙樣本檢驗(yàn)(對(duì)照組與方案2組):
      單尾檢驗(yàn)(左尾),z: -59.44, p值: 0.0 (α = 0.05),p < α,拒絕原假設(shè),方案二點(diǎn)擊率的提升在統(tǒng)計(jì)上是顯著的。

      獨(dú)立雙樣本檢驗(yàn)(對(duì)照組與方案1組):
      屬單尾檢驗(yàn)(左尾),z: -14.17 ,p值: 7.45(α = 0.05),p > α,無(wú)法拒絕原假設(shè),策略一對(duì)廣告點(diǎn)擊率的提升效果不顯著。

    • 總結(jié):
      在兩種方案中,可以認(rèn)為方案2對(duì)點(diǎn)擊率有顯著提高,后續(xù)可以考慮成本、對(duì)其他轉(zhuǎn)化率的影響,再?zèng)Q定是否正式推廣使用。

    • 本次分析中可以補(bǔ)充的內(nèi)容:

      • 未進(jìn)行AA測(cè)試,AA測(cè)試可以進(jìn)一步保證用戶流量的隨機(jī)性,是用AB測(cè)試的方法檢驗(yàn)兩個(gè)完全一樣的版本,可以確定實(shí)驗(yàn)平臺(tái)或工具的結(jié)果是否是統(tǒng)計(jì)上的無(wú)差異性;
      • 在本次分析中,方案1的點(diǎn)擊率提升并沒有達(dá)到我們?cè)O(shè)定的MDE,因此在假設(shè)檢驗(yàn)中,我們只針對(duì)對(duì)照組和方案2進(jìn)行了假設(shè)檢驗(yàn),如果方案1的點(diǎn)擊率也滿足了我們的期望,那么應(yīng)該使用卡方檢驗(yàn),因?yàn)樵诙鄠€(gè)總體的情況下,兩兩之間的z檢驗(yàn)和t檢驗(yàn)要比較多次,可能會(huì)增加犯第一類錯(cuò)誤的原因,所以需要使用單因素方差分析,卡方檢驗(yàn)。可以參考:AB測(cè)試-方差分析與卡方檢驗(yàn)

    總結(jié)

    以上是生活随笔為你收集整理的支付宝营销策略效果分析 A/Btest的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。