訓練集山準確率高測試集上準確率很低_推薦算法改版前的AB測試

編輯導語:所謂推薦算法就是利用用戶的一些行為,通過一些數學算法,推測出用戶可能喜歡的東西;如今很多軟件都有這樣的操作,對于此系統的設計也會進行測試;本文作者分享了關于推薦算法改版前的AB測試,我們一起來看一下。

80975f0fff81889fab9e046ed03fa0e0.png

一、實驗背景及目的

1. 實驗背景

某商城,搭建了以個性化推薦系統為核心的“猜你喜歡”功能;功能上線后,發現推薦的準確率(用戶進入物品詳情頁定義為判斷真正的正樣本)較低;對此,數據分析師優化了推薦模型。

2. 實驗目的

在新的推薦模型上線前,進行AB測試,以此判斷新模型是否能夠顯著提升推薦的準確率。

二、AB測試說明及測試流程

1. AB測試定義

AB測試是為明確某個問題,制作兩個(A/B)或多個(A/B/n)版本,在同一時間維度,分別讓組成成分相同(相似)的訪客群組(目標人群)隨機的訪問這些版本,收集各群組的用戶體驗數據和業務數據;最后分析、評估出最好版本,正式采用。

2. AB測試的特點

  • 先驗性: A/B測試能夠先于上線,得出結論;不再需要先將版本發布,再通過數據驗證效果,從而一定程度上減少改版帶來的風險。
  • 并行性: A/B測試是將兩個或以上的方案同時在線試驗,這樣做的好處在于保證了每個版本對應的時間環境、數據環境保持一致,便于更加科學客觀地對比優劣。
  • 科學性: 如果能保證流量分配的科學性,將相似特征的用戶均勻的分配到試驗組中,就可以避免出現數據偏差,使得試驗的結果更有代表性。

3. 應用場景

1)產品UI

不同行業的產品需要不同的風格,同時還要與企業的品牌相得益彰。利用A/B 測試優化UI能給用戶帶來更好的交互體驗和視覺感受。

2)文案內容

顧名思義是指用戶閱讀到的文字內容——小到圖片配文和按鈕文字,大到文章標題甚至版塊主題;這些部分都可以嘗試變換文案內容,測試不同方案的數據效果。

3)頁面布局

有些時候,可能根本不需要對產品的UI或是文案內容作出調整,只是在布局排版上的改變,就可以出現增長的效果。

4)產品功能

想給產品增加一個新功能,可是很難確定是否能達到用戶的預期,如果盲目上線,可能會造成一些損失;使用A/B 測試,對你的用戶真正負責;例如,社交類產品在付費查看照片的新功能正式上線前,需要進行A/B 測試,以驗證功能的使用情況和效果。

5)算法/算法

包括基于內容的推薦算法(根據用戶的歷史記錄推薦相似內容)、基于協同過濾的推薦算法(根據有相似興趣用戶的行為推薦相關內容)、基于關聯規則的推薦算法(根據商品/內容本身的相關性給用戶推薦);算法優化迭代前,需要真實的數據進行測試。

4. 實驗流程

9f17810f24f395da45b7662a5eb42df9.png

三、實驗設計

1. 假設檢驗的基本概念

統計假設:是對總體參數(包括總體均值μ等)的具體數值所作的陳述。

原假設:是試驗者想收集證據予以反對的假設 ,又稱“零假設”,記為 H0。

備擇假設:也稱“研究假設”,是試驗者想收集證據予以支持的假設,記為 H1。

雙側檢驗與單側檢驗:如果備擇假設沒有特定的方向性,并含有符號“=”,這樣的稱為雙側檢驗;如果備擇假設具有特定的方向性,并含有符號 “>” 或 “

臨界值:是指在原假設為真的條件下,樣本數據拒絕原假設這樣一個事件發生的概率。

第 I 類錯誤(棄真錯誤):原假設為真時拒絕原假設;第 I 類錯誤的概率記為 α(alpha)。

第 II 類錯誤(取偽錯誤):原假設為假時未拒絕原假設。第 II 類錯誤的概率記為 β(Beta)。

2. 實驗原理說明

先認定原假設成立,然后在事先給定的顯著性水平下,構造一個小概率事件,根據抽樣結果觀察小概率事件是否發生;若小概率事件發生,則拒絕原假設,否則接受原假設。

3. 實驗流程設計

1) 提出假設

本次AB測試,目的是希望提升猜你喜歡功能的推薦效果。所以選取推薦系統的準確率,作為優化指標。

準確率表示預測為正的樣本中,真正的正樣本的比例。公式如下:

R(u)是根據用戶在訓練集上的行為給用戶作出的推薦列表,而T(u)是用戶在測試集上的行為列表。

最簡單的例子:例如推薦系統給用戶推薦了10件物品,用戶進入物品詳情頁定義為判斷真正的正樣本的行為,用戶進入了其中3件物品的詳情頁,則此時準確率=3/10=30%。

假設我們認為,如果新的推薦算法,比原推薦算法,顯著高于5%以上,則可將新推薦算法發布至生產環境。

此時我們可以得到假設:

原假設H0:π2-π1≤5%

備擇假設H1:π2-π1>5%

2)確定顯著性水平α

本次實驗中,α 值設定 0.05(5%),這是假設檢驗中最常用的小概率標準值;表示原假設為真時,拒絕原假設的概率。

3)確定臨界值

臨界值是顯著性水平對應的標準正態分布的分位數,顯著性水平0.05的情況下,單側檢驗對應的標準正態分布的分位數是1.645,雙側檢驗的標準正態分布的分位數為1.96。

4)收集實驗數據,得出結論

由樣本值求得檢驗統計量的優化指標的數值。若觀察值在拒絕域內,則拒絕原假設H0,否則接受原假設H1。

四、開始測試并分析數據

定義新推薦算法的準確率為π1,新推薦算法的準確率為π2。

Ho:π1-π2≤5%

H1:π1-π2>5%

實驗目標人群:從進入商城,且使用了“為你推薦”功能的用戶流量(UV)中,隨機抽取5%,作為實驗目標人群;其中的50%為實驗組,50%為對照組。

實驗時間:1周

假設檢驗方式:

0adf406be98d8eda5dfbbf109d724192.png

不同的AB測試場景,適用于不同的檢驗方式,如上圖所示。

本次AB測試,由于兩個推薦系統版本是獨立的,且樣本數足夠大,認為滿足正態分布。

根據HO、H1的假設,可判斷本次檢驗為兩個獨立樣本的總體均值的單側檢驗,且總體方差未知,需要用樣本方差代替總體方差。

此時計算統計量公式為:

c79f248de94b534bc8c9fa7f1a702d13.png

顯著性水平:0.05。

臨界值:在顯著性水平為0.05時,單側檢驗的臨界值Zα為1.645。

實驗數據(為方便計算):實驗一周后,有10000用戶,使用新推薦算法,準確率的平均值為41%,標準差為20%;有10000用戶,使用原推薦算法,準確率的平均值為35%,標準差為10%。此時新算法的準確率定義為x,則x的平均值=41%,原算法的推薦率定義為y,則y的平均值=35%。

計算檢驗統計量:

ea75ff6bc853e94f89a0f1034f122731.png

檢驗結果:統計量Z=4.4722,臨界值Zα=1.645.由于統計量的值大于臨界值而落入拒絕域內,所以拒絕原假設H0,認為新推薦算法的準確率,比原推薦算法顯著高出5%,新版本算法可發布至生產環境。

本文由 @16哥 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自 unsplash,基于 CC0 協議

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260499.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260499.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260499.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#實現漸變顏色的Windows窗體控件

C#實現漸變顏色的Windows窗體控件! 1,定義一個BaseFormGradient,繼承于System.Windows.Forms.Form2,定義三個變量: privateColor _Color1 Color.Gainsboro; privateColor _Color2 Color.White; privatefloat_ColorAngle 0f;3,重載OnPaintBackground方法 protecte…

ios7開發學習筆記-包括c oc 和ios介紹

請查看我的新浪資料分享 http://iask.sina.com.cn/u/2430843520 轉載于:https://www.cnblogs.com/langtianya/p/3708298.html

Windows下 jupyter notebook 運行multiprocessing 報錯的問題與解決方法

文章目錄測試用的代碼錯誤解決方法測試用的代碼 下面每一個對應一個jupyter notebook的單元格 import time from multiprocessing import Process, Queuedef generator():c 0while True:time.sleep(1.0) # read somethingyield cc 1%%timeds generator() for i in range(3…

如何將javaweb項目部署到linux下

以下是對將javaweb項目部署到linux下的方法進行了詳細的分析介紹一般都在windows下開發的現在部署到linux下將項目達成war包(用eclipse項目右鍵>Export>選擇war file)將tomcat(用winSCP當然你也可以用secureCRT用securCRT需要建立sftp(即上傳文件的目錄)用put tomcat命令…

vc mysql_vc6.0連接mysql數據庫

一、MySQL的安裝Mysql的安裝去官網下載就可以。。。最新的是5.7版本。。二、VC6.0的設置(1)打開VC6.中選0 工具欄Tools菜單下的Options選項,在Directories的標簽頁中右邊的“Show directories for:”下拉列表中“Includefiles”,然后在中間列表框中添加你…

python class用法_python原類、類的創建過程與方法

【小宅按】今天為大家介紹一下python中與class 相關的知識……獲取對象的類名python是一門面向對象的語言,對于一切接對象的python來說,咱們有必要深入的學習與了解一些知識首先大家都知道,要獲取一個對象所對應的類,需要使用clas…

網易公開課

計算機科學及編程導論 http://v.163.com/special/opencourse/bianchengdaolun.html 抽象編程 http://v.163.com/special/opencourse/abstractions.html轉載于:https://www.cnblogs.com/anyboo/archive/2012/08/24/2653537.html

深度學習中的一些常見的激活函數集合(含公式與導數的推導)sigmoid, relu, leaky relu, elu, numpy實現

文章目錄Sigmoid(x)雙曲正切線性整流函數 rectified linear unit (ReLu)PReLU(Parametric Rectified Linear Unit) Leaky ReLu指數線性單元 Exponential Linear Units (ELU)感知機激活%matplotlib inline %config InlineBackend.f…

最牛X的GCC 內聯匯編

正如大家知道的,在C語言中插入匯編語言,其是Linux中使用的基本匯編程序語法。本文將講解 GCC 提供的內聯匯編特性的用途和用法。對于閱讀這篇文章,這里只有兩個前提要求,很明顯,就是 x86 匯編語言和 C 語言的基本認識。…

mysql的告警日志_MySQL Aborted connection告警日志的分析

前言:有時候,連接MySQL的會話經常會異常退出,錯誤日志里會看到"Got an error reading communication packets"類型的告警。本篇文章我們一起來討論下該錯誤可能的原因以及如何來規避。1.狀態變量Aborted_clients和Aborted_connects…

hosts多個ip對應一個主機名_一個簡單的Web應用程序,用作連接到ssh服務器的ssh客戶端...

WebSSH一個簡單的Web應用程序,用作連接到ssh服務器的ssh客戶端。它是用Python編寫的,基于tornado,paramiko和xterm.js。特征支持SSH密碼驗證,包括空密碼。支持SSH公鑰認證,包括DSA RSA ECDSA Ed25519密鑰。支持加密密鑰…

Yii框架中使用PHPExcel導出Excel文件

Yii框架中使用PHPExcel導出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html轉載于:https://www.cnblogs.com/flying-tx/p/3714530.html

Shell Notes(1)

> vi復制粘貼 光標移動到要復制的部分的開頭,Esc退出插入模式,按v進入Visual模式,用hjkl選中要復制的部分 按Y或者yy,復制 移動光標到目標位置,按p,粘貼 > echo –e 參數 –e 可以使echo解釋由反斜杠…

mysql多表查詢語句_mysql查詢語句 和 多表關聯查詢 以及 子查詢

1.查詢一張表:select * from 表名;2.查詢指定字段:select 字段1,字段2,字段3….from 表名;3.where條件查詢:select字段1,字段2,字段3 frome表名 where 條件表達式&#x…

Pytorch 自定義激活函數前向與反向傳播 sigmoid

文章目錄Sigmoid公式求導過程優點:缺點:自定義Sigmoid與Torch定義的比較可視化import matplotlib import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn import torch.nn.functional as F%matplotlib inlineplt.rcPa…

SVN錯誤:Attempted to lock an already-locked dir

出現這個問題后使用“清理”功能,如果還不行,就直接到上一級目錄,再執行“清理”,然后再“更新”。有時候如果看到某個包里面的文件夾沒有SVN的標志,直接用“CtrlDelete”手工刪除,然后“清理”&#xff0c…

js高級編程_這位設計師用Processing把創意編程玩到了極致!

Processing作為新媒體從業者的必備工具,近來卻越來越成為設計師們的新寵!今天小編將介紹以為用Processing把創意編程玩到極致的設計師Tim Rodenbrker。“我們的世界正在以驚人的速度變化。新技術為創作帶來了根本性的轉變。編程是我們這個時代最寶貴的技…

微軟.NET Framework 4.5.2 RTM正式版

今天,微軟.NET開發團隊發布.NET Framework 4.5.2 RTM正式版。新版框架繼續高度兼容現有的.NET Framework 4、4.5、4.5.1等版本,該版本框架與舊版的.NET Framework 3.5 SP1和早期版本采取不同的處理方式,但與.NET Framework 4、4.5相比&#x…

HDU 1042 N!(高精度計算階乘)

N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34687 Accepted Submission(s): 9711 Problem DescriptionGiven an integer N(0 ≤ N ≤ 10000), your task is to calculate N!InputOne N in one line, pr…

使用WebDriver遇到的那些坑

http://blog.csdn.net/oWuFeng1/article/category/2722111 在做web項目的自動化端到端測試時主要使用的是Selenium WebDriver來驅動瀏覽器。Selenium WebDriver的優點是支持的語言多,支持的瀏覽器多。主流的瀏覽器Chrome、Firefox、IE等都支持,手機上的瀏…