<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          數(shù)據(jù)分析之AB testing實戰(zhàn)(附Python代碼)

          共 9793字,需瀏覽 20分鐘

           ·

          2020-08-31 00:36

          作者 | Huang supreme
          編輯 | JackTian
          微信公眾號 | 杰哥的IT之旅(ID:Jake_Internet)

          作者介紹:


          大家可以叫我黃同學(博客名:Huang Supreme),一個應(yīng)用統(tǒng)計碩士,愛好寫一些技術(shù)博客,志在用通俗易懂的寫作風格,幫助大家學到知識,學好知識!

          目錄

          后臺回復(fù):AB testing實戰(zhàn),獲取完整代碼

          1、增長黑客

          1)前言
          說到 AB testing,就不得不說到增長黑客,這個詞大約在 2015 年就引入到中國了,但是在 2018 年開始火熱起來。那么互聯(lián)網(wǎng)公司想要增加活躍用戶、增加收入,現(xiàn)在的產(chǎn)品運營還是采用增長黑客這樣一種運營方式,并不是產(chǎn)品經(jīng)理一拍腦袋就可以想到,或者老板直接拍板決定就可以做到的。
          大家現(xiàn)在的玩兒法都是“數(shù)據(jù)驅(qū)動”,使用數(shù)據(jù)驅(qū)動方式來幫助運營更好的產(chǎn)品。
          那什么是“增長黑客”呢?通俗的說就是“樹挪死,人挪活”,互聯(lián)網(wǎng)公司想要成長,想要變成一個巨頭,也需要挪一挪、變一變,不斷變換自己的產(chǎn)品,升級自己的產(chǎn)品,否則將會在這樣一個弱肉強食、競爭激烈的生態(tài)中,被干掉。
          我們有時候會覺得互聯(lián)網(wǎng)公司就是【融資、燒錢、拉新、融資、燒錢、拉新…上市(倒閉)】這樣一個流程,運氣好的話就上市了,運氣不好的話就倒閉了。但其實很多互聯(lián)網(wǎng)公司內(nèi)部,即使是燒錢,燒錢的方式也是有很多講究的,并不是老板、產(chǎn)品經(jīng)理或某個總監(jiān)拍頭決策的。
          2)運用分析指標框架,驅(qū)動互聯(lián)網(wǎng)產(chǎn)品和運營
          具體可以看看,增長黑客,怎么運用分析指標框架,驅(qū)動互聯(lián)網(wǎng)產(chǎn)品和運營?

          現(xiàn)在分享一個鏈接,供大家了解:

          http://www.woshipm.com/data-analysis/439849.html

          整個互聯(lián)網(wǎng)內(nèi)部,無論是產(chǎn)品、營銷、銷售等,現(xiàn)在基本都是采用“數(shù)據(jù)驅(qū)動”這樣一個方式來進行運作的,這也就是“數(shù)據(jù)分析行業(yè)”在最近幾年為什么這么火熱的原因。“增長黑客”很多人用 AARRR 去總結(jié)了一下,如上圖所示,下面我們來對上圖做一個文字說明。
          首選是“獲取用戶”(Acquisition),怎么樣使用一種比較高效的方式(APP、網(wǎng)站、百度或淘寶買一些廣告、)來獲取到用戶,增加用戶數(shù)。接著是“增加活躍”(Activation),對于獲取到的用戶,怎么去激活他們,使得他們變得活躍。
          然后是“提高留存”(Retention),我好不容易通過各種渠道,將用戶拉到我的產(chǎn)品中,怎么讓他們成為我們這個產(chǎn)品的忠實用戶。再接著就是“實現(xiàn)收益”(Revenue),公司運營需要生存,就必須要賺錢獲取收益,那么怎么樣獲取更多的收益?是訂閱更多的VIP用戶,還是賣給用戶更多的產(chǎn)品或者廣告來獲取收益?
          最后一個是“裂變傳播”(Referral),如果我們前面的過程做的好的話,用戶是不是會幫助我們做裂變傳播,他們自己會口口相傳(微信、朋友圈等),幫助我們做宣傳,幫助我們拓展更多的用戶。

          這樣上述幾個部分就形成了一個良好的閉環(huán),不斷地去良性的發(fā)展。

          3)增長黑客大致分為如下幾個步驟
          首先是“分析現(xiàn)狀”,分析現(xiàn)在的產(chǎn)品有哪些問題?在哪方面可以提高?
          然后是“設(shè)置目標”,你想干什么?像愛奇藝、騰訊視頻等,就是想增加VIP的數(shù)量;像淘寶的話,如何更多地增加廣告收入;像抖音的話,如何增加日活,怎么樣讓用戶每天不停地去刷抖音,這樣我會有更多的廣告,更多的活躍用戶數(shù),更多的收入。
          接著是“提出改進方案”,提出方案后,是不是你的方案就是最優(yōu)的呢?其實并不是,這就是下面所說的需要進行“小規(guī)模測試”。
          再接著是“開始小規(guī)模測試”,拿出一部分測試用戶,讓他們?nèi)タ词欠駶M意,是不是反饋的比較好。怎么知道反饋的好不好呢?就是下面要說的采集分析。
          再接著是“采集分析”,對測試用戶得到的數(shù)據(jù)進行數(shù)據(jù)分析,如果反饋效果好,就調(diào)整流量,不斷擴大規(guī)模去測試。如果反饋效果不好,就停止或者是修改方案(回到前面的步驟),這是一個反復(fù)迭代的過程,這個過程也就是“AB testing”。
          “AB testing”就是來幫助我們,通過數(shù)據(jù)分析的方式,來優(yōu)化增長黑客這樣一個流程,使用數(shù)據(jù)驅(qū)動的方式,來幫助分析我們的產(chǎn)品,分析我們的用戶反饋。

          2、AB testing介紹

          1)AB testing對比方案圖示展示

          圖示一:天貓兩個網(wǎng)頁的改版

          圖示二:微信兩個版本的改版

          產(chǎn)品經(jīng)理改了一個新的版本,那它到底好不好呢?可不可以一拍腦袋說,覺得哪個好就用哪個呢?萬一反饋不是很好,萬一下降了活躍用戶數(shù)量,減少了用戶收入,其實對于大公司來說,都是巨大的損失,誰都承擔不起。所以需要使用像 AB testing 這樣數(shù)據(jù)分析的方式,去把這個風險降到最低。
          還有一個例子就是 Facebook,他們有一個級別非常高的高管,推動他們的產(chǎn)品,覺得某個產(chǎn)品這么好、那么好,所有 Facebook 產(chǎn)品的發(fā)布和版本的迭代都需要使用 AB testing,小范圍用戶測試的時候,如果發(fā)現(xiàn)用戶反饋不好,變得不怎么活躍了,覺得非常難用了,即使這個高管再推動呢,也是不行的,必須使用數(shù)據(jù)說話,這個產(chǎn)品不好,就放棄這個版本,去研發(fā)下一個版本或者尋找另外的突破口。
          這個東西在國內(nèi)的好多公司基本都是這么玩兒的,比如說上述微信 1.0 版本和微信 2.0 版本,也不是說隨隨便便拍拍腦袋就發(fā)給大家使用的,其實也是運用 AB testing,很多時候讓大家看到不同的頁面,找到一部分小流量用戶,幫助我們?nèi)y試,看看他們的反饋。
          2)什么是反饋呢?
          上面很多次我們都提到了“用戶反饋”,那么什么是“反饋”呢?
          其實就是這部分用戶的使用時長呀,產(chǎn)生的收益呀,像百度這樣的廣告(他有沒有點廣告呀),像愛奇藝這樣的付費網(wǎng)站(他有沒有從一個普通用戶變?yōu)橐粋€ VIP 用戶呀),這些指標等都可以驗證你新的版本是不是好。
          3)如何選取這樣一批小流量用戶呢?
          最重的就是隨機性。我們不能僅僅選擇深圳市的某個地方的一些用戶,作為測試用戶。我們也不能僅僅選擇年齡在 25-30 這樣的限定范圍的一些用戶,作為測試用戶。應(yīng)該是在你的用戶中隨機抽取比如說 1% 的用戶,作為小流量用戶去進行版本測試,看看他們的反饋。
          如果反饋好,我們考慮擴大流量用戶,抽取 2%、5%、10%、20%、50% 甚至是 100%。
          如果反饋不好,我們選擇是終止此次實驗,尋找新的突破口,還是選擇改進自己的版本。
          4)到底什么是AB testing?
          簡單地說:確定兩個元素或版本( A 和 B )哪個版本更好!
          5)如何做AB testing?
          在產(chǎn)品正式迭代發(fā)版之前,為同一個目標制定兩個(或以上)方案;
          • 提出想法,設(shè)定假設(shè);

          • 預(yù)估成本,設(shè)定優(yōu)先級;

          • 設(shè)計方案;

          日常中我們總在說 AB testing,做的是兩個版本的對比,其實也可以是 ABCD testing,四個版本的對比,只不過實際中我們做得更多的就是 AB testing。再有一個,就是預(yù)估成本,這個是很有必要的,如果你切了 50% 的流量(或者更大的流量),將你的新版本上線跑了一周,假如情況非常糟糕,對于大公司來說,可能損失幾個億,或者是幾十個億,因此再進行實驗之前,一定要好好預(yù)算一下,你究竟可以承擔多大的風險,最后在設(shè)定你的方案。
          將用戶流量對應(yīng)分成幾組,在保證每組用戶特征相同的前提下,讓用戶分別看到不同的方案設(shè)計;
          注意幾個術(shù)語,這個在后面的實戰(zhàn)代碼中有用。在做 AB testing 的時候,一般分為 control 組和 treatment 組,其中 control 組看到的是老頁面(old page),treatment 組看到的是新頁面(new page)。

          根據(jù)幾組用戶的真實數(shù)據(jù)反饋,科學的幫助產(chǎn)品進行決策;

          通過分析用戶使用的日志數(shù)據(jù),來決定是擴大實驗,還是繼續(xù)修改方案,重新迭代。如果判定實驗成功,則擴大實驗范圍。如果判定實驗失敗,終止本次實驗,繼續(xù)修改方案。

          3、AB testing 實戰(zhàn)

          1)AB testing 的統(tǒng)計學基礎(chǔ)(獨立雙樣本的假設(shè)檢驗)
          關(guān)于假設(shè)檢驗這個知識點,我在前面的文章中已經(jīng)詳細介紹過,這里就不一一說明,截取了幾張圖片供大家參考。

          大家如果感興趣,可以看一下這篇文章:https://blog.csdn.net/weixin_41261833/article/details/104623377




          2)AB testing 演示的 python 代碼
          在進行代碼演示之前,我們先對每個字段做一個說明:user_id 是用戶的 id;timestamp 是用戶訪問頁面的時間;group 表示把新的落地頁分到 treatment 組、把舊的落地頁分到了 control 組;landing_page 表示的是落地頁;converted 表示的是否轉(zhuǎn)化,1 表示轉(zhuǎn)化(通俗的說:拿愛奇藝會員來說,普通用戶是否轉(zhuǎn)換為了 VIP 用戶,1 表示轉(zhuǎn)換了,0 表示未轉(zhuǎn)換);
          import pandas as pd
          ---------------------------------------------------------
          # 讀取數(shù)據(jù),查看前5行
          df = pd.read_csv("ab_test.csv")
          df.head()
          ---------------------------------------------------------
          # 數(shù)據(jù)預(yù)覽,查看數(shù)據(jù)有多少行、多少列
          df.shape
          ---------------------------------------------------------
          # 查看數(shù)據(jù)中是否有空值
          df.isnull().any()
          df.info()
          ---------------------------------------------------------
          # 查看數(shù)據(jù)中的錯誤行
          print((True) != (True))
          print((True) != (False))
          print((False) != (True))
          print((False) != (False))
          """
          true  != true   fasle    treatment  new_page
          true  != false  true     treatment  old_page
          false != true   true     control    new_page
          false != false  false    control    old_page
          """

          # 下面這句代碼,展示的就是group=treatment且landing_page=old_page和group=control且landing_page=new_page,這樣的錯誤行;
          num_error = df[((df.group == "treatment")!=(df.landing_page == "new_page"))].shape[0]
          num_error
          ---------------------------------------------------------
          # 去掉錯誤行后,再次查看是否還存在錯誤行
          print("沒有刪除錯誤行之前的記錄數(shù):", df.shape[0])
          df2 = df[~((df.landing_page == "new_page")&(df.group == "control"))]
          df3 = df2[~((df2.landing_page == "old_page")&(df2.group == "treatment"))]
          print("刪除錯誤行之后的記錄數(shù):", df3.shape[0])
          print("錯誤行共有",str(df.shape[0]-df3.shape[0]),"條記錄")
          num_error2 = df3[((df3.group == "treatment")!=(df3.landing_page == "new_page"))].shape[0]
          num_error2
          ---------------------------------------------------------
          # 查看是否有重復(fù)行
          print("數(shù)據(jù)的記錄數(shù)為:", df3.user_id.shape[0])
          print("將user_id去重計數(shù)后的記錄數(shù)為:", df3.user_id.nunique())
          """
          通過上述分析,可以看出:user_id中有一條記錄數(shù)是重復(fù)的。接下來,我們可以找出這條重復(fù)的記錄,并去重。
          """

          ---------------------------------------------------------
          # 查看重復(fù)的行
          df3[df3.user_id.duplicated(keep=False)]
          #  去除重復(fù)的行
          df4 = df3.drop_duplicates(subset=["user_id"],keep="first")
          df4.shape[0]
          ---------------------------------------------------------
          # 我們來看一下control組的轉(zhuǎn)化率
          control_converted = df4.query('group=="control"').converted.mean()
          control_converted
          # 再來看一下treatment組的轉(zhuǎn)化率
          treatment_converted = df4.query('group=="treatment"').converted.mean()
          treatment_converted
          """
          自己下去思考一下:根據(jù)上述結(jié)果,老頁面的轉(zhuǎn)化率比新頁面的轉(zhuǎn)換率好,是不是就可以說明老頁面好呢?
          """

          ---------------------------------------------------------
          # 進行獨立兩樣本的假設(shè)檢驗
          import statsmodels.stats.proportion as ssp

          converted_old = df4[df4.landing_page == "old_page"].converted.sum()
          converted_new = df4[df4.landing_page == "new_page"].converted.sum()
          n_old = len(df4[df4.landing_page == "old_page"])
          n_new = len(df4[df4.landing_page == "new_page"])
          data = pd.DataFrame({"converted":[converted_old, converted_new],
                               "total":[n_old ,n_new]})
          display(data)
          z_score, p_value = ssp.proportions_ztest(count=data.converted, nobs=data.total, alternative="smaller")
          print("Z值為:", z_score)
          print("P值為:", p_value)
          ---------------------------------------------------------

          結(jié)果如下:

          結(jié)果分析:

          通過上述的結(jié)果發(fā)現(xiàn),P 值為 0.9,遠大于 0.05,也就是說,我們沒有理由拒絕原假設(shè),即只能接受原假設(shè),也就是新老版本之間沒有太大的差別。我們接下來要做的就是終止這次試驗,繼續(xù)優(yōu)化自身的方案。
          3)AB testing 拓展
          關(guān)于 AB testing 的相關(guān)知識,我們就簡單說到這里。
          下面再次提供幾個鏈接供大家參考學習:

          Reference

          http://www.woshipm.com/data-analysis/439849.html
          https://blog.csdn.net/weixin_41261833/article/details/104623377
          http://m.blog.itpub.net/31555699/viewspace-2653832/
          https://www.jianshu.com/p/61e6c34d0704


          本公眾號全部博文已整理成一個目錄,請在公眾號后臺回復(fù)「m」獲取!
              
          作者往期精彩文章:
          1、精心整理的 52 頁 Python 操作 excel、word、pdf 文件【附獲取方式】
          2、520情人節(jié),不懂送女朋友什么牌子的口紅?沒關(guān)系!Python 數(shù)據(jù)分析告訴你。
          3、“羅永浩抖音首秀”銷售數(shù)據(jù)的可視化大屏是怎么做出來的呢?
          4、利用 Python 進行多 Sheet 表合并、多工作簿合并、一表按列拆分
          5、Python 自動化辦公之"你還在手動操作“文件”或“文件夾”嗎?"
          關(guān)注微信公眾號『杰哥的IT之旅』,后臺回復(fù)“1024”查看更多內(nèi)容,回復(fù)“微信”添加我微信。

          好文和朋友一起看~
          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本中文字幕在线播放 | av先锋成人网站 h片免费在线观看 | 亲亲艺术一区二区 | 日本一道本高清在线一区二区 | 国产精品国产三级国产专区51 |