日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何進行A/B測試,你學會了嗎?

什么是 A/B 測試?

A/B 測試,也稱為拆分測試,是一種營銷實驗,可以在其中拆分受眾以測試廣告系列的多個變體并確定哪個效果更好。換句話說,可以向一半觀眾展示內容/功能/行為的版本 A,而向另一半觀眾展示版本 B。

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站建設、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元益陽做網(wǎng)站,已為上家服務,為益陽各地企業(yè)和個人服務,聯(lián)系電話:18980820575

為什么不使用第三方服務?

確實將第 3 方 X 用于 A/B。

對于 X,觀察到以下問題:

  • 由于服務器端標記的高延遲
  • 特征復雜度
  • 分割部分的跟蹤和影響測量。
  • 成本高

它提供什么?

該服務(作為微服務實現(xiàn))將使客戶能夠進行 A/B 測試??梢詫Χ鄠€特征(返回值)進行任意數(shù)量的實驗。

設計時要牢記可擴展性和進一步增強功能。

常用功能包括:

  • 能夠在受限的基礎上控制功能上線(特定用戶)
  • 為隨機 (%) 用戶啟用任何功能
  • 根據(jù)具有復雜邏輯的用戶配置文件/特定參數(shù)評估功能
  • 能夠在受限的基礎上控制前端功能(UI 元素)
  • 在任何實驗中添加/編輯特征
  • 使段相互排斥的能力
  • 能夠找出哪個用戶屬于特定細分
  • 此類實驗可能產生的所有其他分析

技術棧:

Springboot

Java 8

Maven

Mysql

Groovy

架構設計:

這是上面實體保存的內容的簡短描述。所有實體都擴展 BasEntity 以獲取所有實體的公共列。

  • 實驗:所有實驗都將保存在這里,并帶有唯一名稱和可選描述。
  • Feature:一個實驗可以有多個特征,這些特征將保存在這個表中,具有唯一的名稱,可選的描述和 experiment_id 作為實驗表的外鍵。 值是該功能將以 json 格式返回給客戶端的內容。 Whitelisted_users 將包含 user_id 列表作為逗號分隔列表,它將告訴哪些用戶分配給此功能。
  • 邏輯:由于每個實驗都可以有一定的條件來劃分用戶段,所以這個條件會保存在邏輯表的條件欄中。(我們稍后會來實現(xiàn))
  • User_Feature_Mapping:因為我們可能希望一旦用戶被分配到某個功能,它將在未來的 api 調用中保持相同的功能。換句話說,我們可能希望保持一致性而不是每次都評估邏輯(條件)。

流程設計:

現(xiàn)在將了解以上 2 個流程的含義:

usePreCalculated標志在這里很重要,因為它意味著我們是要重用 User_Feature_Mapping 表中包含的值還是再次評估邏輯表中的條件。

  • 如果為假,將檢查實驗的每個特征的 whitelisted_list。如果退出則返回值,否則將評估邏輯然后相應地返回特征值;
  • 如果為真,將首先檢查 user_feature_mapping 表是否存在 user_id 和 experiment_id。如果是,那么返回該值。如果沒有,那么將按照上面的步驟(步驟 1)

注意:每次評估邏輯時,都會將結果保存在user_feature_mapping表中

如何評估條件?

將常規(guī)代碼存儲在邏輯表的條件列中。以下只是一個示例:

import groovy.lang.GroovyShell;

public class GroovyDemo {
    public static void main(String[] args) {
        System.out.println("This represents some random code");

        String groovyScript = "println 'first line of Groovy output'\n" +
                "println 'second line of Groovy output'";

        GroovyShell groovyShell = new GroovyShell();

        // instead of passing a String you could pass a
        // URI, a File, a Reader, etc... See GroovyShell javadocs
        groovyShell.evaluate(groovyScript);

        System.out.println("This represents some more random code");
    }
}

選擇 groovy shell 是因為它具有絕對的靈活性。可以執(zhí)行復雜的功能,甚至可以使用存儲為文本的代碼調用外部方法和 api。當用例很復雜時,這很有用,例如想根據(jù)某些只能由第三方 api 實現(xiàn)的用戶屬性或參數(shù)來分配用戶段。

例如,如果想將A/B分成90:10,可以對user_id進行模10運算,并將結果0分配給B段,剩下的分配給A段??梢远啻胃谋壤踔吝壿嫙o需重新部署。

API列表:

  • /experiment POST -> 創(chuàng)建一個實驗
  • /experiment/{experiment_name} PUT -> 編輯實驗
  • /experiment/{experiment_name} GET -> 獲取實驗的詳細信息
  • /experiment/{experiment_id}/feature POST -> 向實驗添加特征
  • /feature/{feature_id} PUT -> 編輯特征
  • /feature/{feature_id}/whitelist PUT -> 編輯特定功能的白名單用戶列表
  • /experiment/evaluate/{experiment_name} POST -> 主要 api。評估實驗并返回 json 格式的響應

當前標題:如何進行A/B測試,你學會了嗎?
URL標題:http://www.dlmjj.cn/article/dpdshdo.html