99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代A/B測試:數(shù)據(jù)科學面試中的7個常見問題和答案,第2部分
A/B測試:數(shù)據(jù)科學面試中的7個常見問題和答案,第2部分
2022-02-28
收藏


注意:這是本文的第二部分。你可以在這里閱讀第一部分。

分析測試結(jié)果


新穎性和首位效應


當產(chǎn)品發(fā)生變化時,人們對它的反應會有所不同。有些人習慣于產(chǎn)品的工作方式,不愿意改變。這被稱為首要效應或改變厭惡。其他人可能會歡迎變化,一個新功能吸引他們更多地使用產(chǎn)品。這被稱為新奇效應。然而,這兩種影響都不會持續(xù)很長時間,因為人們的行為在一定時間后會穩(wěn)定下來。如果a/B測試有較大或較小的初始效應,這可能是由于新的或首要效應。這是實踐中常見的問題,很多面試問題都是關(guān)于這個話題的。一個面試樣本問題是:


我們在一個新特性上運行了一個a/B測試,測試成功了,所以我們向所有用戶啟動了這個更改。然而,在推出該特性一周后,我們發(fā)現(xiàn)治療效果迅速下降。怎么回事?


答案是新奇效應。隨著時間的推移,隨著新鮮感的消退,重復使用會減少,所以我們觀察到治療效果下降。

現(xiàn)在您理解了新奇和首要效應,我們?nèi)绾谓鉀Q潛在的問題?這是面試中典型的跟進問題。

處理這種影響的一個方法是完全排除那些影響的可能性。我們可以只對首次用戶運行測試,因為新奇效應和首要效應顯然不會影響這類用戶。如果我們已經(jīng)進行了測試,并且我們想要分析是否有新穎性或首要效應,我們可以(1)將控制組新用戶的結(jié)果與治療組的結(jié)果進行比較,以評估新穎性效應(2)將第一次用戶的結(jié)果與治療組現(xiàn)有用戶的結(jié)果進行比較,以獲得新穎性或首要效應影響的實際估計。

多重測試問題


在A/B試驗的最簡單形式中,有兩種變體:對照(A)和治療(B)。有時,我們運行一個測試與多個變體,看看哪一個是最好的所有功能。當我們要測試一個按鈕的多種顏色或測試不同的主頁時,可能會發(fā)生這種情況。然后我們會有不止一個治療組。在這種情況下,我們不應該簡單地使用0.05的相同顯著性水平來決定檢驗是否顯著,因為我們處理的是2個以上的變異體,錯誤發(fā)現(xiàn)的概率增加。例如,如果我們有3個治療組與對照組進行比較,觀察到至少1個假陽性的機會是多少(假設(shè)我們的顯著性水平是0.05)?

我們可以得到?jīng)]有假陽性的概率(假設(shè)組是獨立的),


PR(FP=0)=0.95*0.95*0.95=0.857

然后獲得至少有1個假陽性的概率


Pr(FP>=1)=1-Pr(FP=0)=0.143

只有3個治療組(4個變異),假陽性(或I型錯誤)的概率超過14%。這稱為“多重測試”問題。一個面試問題是


我們正在運行一個測試與10個變體,嘗試我們的登陸頁面的不同版本。1個處理獲勝,P值小于0.05。你能改變嗎?


答案是否定的,因為多重測試問題。有幾種方法來接近它。一種常用的方法是Bonferroni校正。它將顯著性水平0.05除以試驗次數(shù)。對于面試問題,既然我們測量了10個測試,那么測試的顯著性水平應該是0.05除以10等于0.005。基本上,只有當檢驗的p值小于0.005時,我們才聲稱檢驗是顯著的。Bonferroni校正的缺點是它往往過于保守。

另一種方法是控制錯誤發(fā)現(xiàn)率(FDR):


fdr=e[#假陽性/#拒絕]

它度量了所有對零假設(shè)的拒絕,即所有你聲明有統(tǒng)計上顯著差異的度量。他們中有多少人有真正的差異,而有多少人是假陽性。只有當您有大量的度量,比如數(shù)百個時,這才有意義。假設(shè)我們有200個指標,并將FDR上限設(shè)為0.05。這意味著我們可以看到5次假陽性。我們每次都會在那200個指標中觀察到至少10個假陽性。

做決定


理想情況下,我們看到了實際的顯著治療結(jié)果,我們可以考慮向所有用戶推出該功能。但有時,我們會看到相互矛盾的結(jié)果,例如一個指標上升而另一個下降,因此我們需要做出輸贏的權(quán)衡。一個面試樣本問題是:


運行測試后,您會看到所需的指標,例如點擊率在上升,而印象數(shù)在下降。你會怎么做決定?


在現(xiàn)實中,產(chǎn)品推出決策可能涉及到很多因素,如實施的復雜性、項目管理的努力、客戶支持成本、維護成本、機會成本等。

在采訪中,我們可以提供解決方案的簡化版本,重點放在實驗的當前目標上。它是為了最大限度地參與,保留,收入,還是其他什么?此外,我們希望量化負面影響,即非目標度量中的負面變化,以幫助我們做出決定。例如,如果收入是目標,我們可以選擇它,而不是最大限度地參與,假設(shè)負面影響是可以接受的。

資源


最后,我想向您推薦兩個參考資料,讓您更多地了解A/B測試。

  • Udacity的免費A/B測試課程涵蓋了A/B測試的所有基礎(chǔ)知識。
  • 值得信賴的在線控制實驗-A/B測試的實用指南,作者:羅恩·科哈維,黛安·唐,和雅·許。它對如何在工業(yè)中運行A/B測試、潛在的陷阱和解決方案有深入的知識。它包含了很多有用的東西,所以我實際上計劃寫一篇文章來總結(jié)這本書的內(nèi)容。如果你感興趣,請繼續(xù)關(guān)注!


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }