關(guān)于蘑菇街算法數(shù)據(jù)流(ACM)實(shí)現(xiàn)方案

在介紹之前陈莽,首先感謝組內(nèi)小伙伴提供的資料,讓我有機(jī)會(huì)學(xué)習(xí)虽抄,得到自己的理解走搁,如果有理解不對(duì)的地方或者有更好的解決方案以及想法,歡迎一起交流迈窟,感激不盡

ACM介紹

"ACM"是蘑菇街算法數(shù)據(jù)流的總稱私植,主要包含四個(gè)模塊:埋點(diǎn)模塊、ab實(shí)驗(yàn)?zāi)K车酣、數(shù)據(jù)清洗模塊曲稼、數(shù)據(jù)聚合模塊索绪,通過(guò)這四個(gè)模塊解決蘑菇街搜索(廣告與自然)、反作弊算法組同學(xué)的對(duì)各種數(shù)據(jù)收集贫悄、分析需求瑞驱,幫助算法同學(xué)迭代算法模型,提升算法效果的目的

Tips:ACM的名稱窄坦,參考了淘寶的打點(diǎn)參數(shù)SCM唤反;同時(shí)由于與ACM競(jìng)賽同名,也蘊(yùn)含了"算法"的意義鸭津。

ACM的發(fā)展史

2016.03      TOPN層改造彤侍,為每個(gè)商品增加ACM字段覆蓋所有圖墻(包括自然與廣告的類目、搜索)相關(guān)業(yè)務(wù)
|
2016.05      團(tuán)購(gòu)逆趋、推薦+麥田達(dá)爾文系統(tǒng)增加ACM字段覆蓋猜你喜歡等相關(guān)推薦業(yè)務(wù)盏阶,資源位相關(guān)業(yè)務(wù)
|
2016.07      蘑菇街PC店鋪內(nèi)圖墻、美麗說(shuō)闻书、淘世界經(jīng)過(guò)整合后與蘑菇街保持一致名斟,使用ACM打點(diǎn)方式,覆蓋到淘世界圖墻惠窄、美麗說(shuō)圖墻
|
2016.09      蘑菇街app店鋪內(nèi)圖墻蒸眠、快搶等業(yè)務(wù)加入ACM打點(diǎn)邏輯,同時(shí)蘑菇街魔方數(shù)據(jù)接入ACM打點(diǎn)數(shù)據(jù)杆融,ACM開(kāi)始進(jìn)入全站打點(diǎn)行列
|
......

ACM出現(xiàn)的背景

背景

對(duì)于算法策略組的同學(xué)經(jīng)常需要收集用戶的行為數(shù)據(jù)進(jìn)行算法模型的回歸楞卡,不斷的通過(guò)樣本數(shù)據(jù)來(lái)調(diào)參使得算法模型預(yù)測(cè)更加準(zhǔn)確,但是不同業(yè)務(wù)場(chǎng)景的算法模型需要篩選相關(guān)的樣本數(shù)據(jù)才會(huì)使得模型效果更佳脾歇,對(duì)于樣本數(shù)據(jù)的篩選過(guò)程對(duì)應(yīng)到日常流程大體需要經(jīng)過(guò)三個(gè)系統(tǒng)模塊:后端服務(wù)鏈路蒋腮、用戶行為追蹤鏈路、行為數(shù)據(jù)采集以及清洗鏈路藕各。后端服務(wù)鏈路,目前大部分的業(yè)務(wù)場(chǎng)景是3,4層:業(yè)務(wù)層,投放層,引擎層, 每個(gè)層涉及到的業(yè)務(wù)系統(tǒng)較分別對(duì)應(yīng)到很多不同的小團(tuán)隊(duì),每層鏈路之間要協(xié)商如何將數(shù)據(jù)進(jìn)行標(biāo)記和定義池摧。用戶行為追蹤鏈路也同樣涉及到很多業(yè)務(wù)團(tuán)隊(duì),如何約定規(guī)則以及對(duì)應(yīng)后端標(biāo)記數(shù)據(jù)傳遞到曝光、點(diǎn)擊激况、交易行為鏈路, 其中曝光行為的收集還存在一定的狀態(tài)作彤。后端采集鏈路需要大量的清洗工作、風(fēng)控環(huán)節(jié)乌逐、系統(tǒng)的高可用竭讳、實(shí)時(shí)性等這些之后從而完成算法訓(xùn)練階段的行為樣本數(shù)據(jù)的篩選。

算法數(shù)據(jù)流

從背景中我們了解到浙踢,數(shù)據(jù)大致會(huì)經(jīng)過(guò)三個(gè)系統(tǒng)模塊绢慢,這三個(gè)大的系統(tǒng)模塊中又包含了很多子服務(wù)層,下面我以服務(wù)層來(lái)描述一個(gè)完整的數(shù)據(jù)流轉(zhuǎn)圖洛波,如下:
圖1胰舆、數(shù)據(jù)流轉(zhuǎn)流圖

在數(shù)據(jù)流轉(zhuǎn)圖中骚露,在左邊的每一個(gè)層級(jí)都包含諸多子服務(wù),每個(gè)子服務(wù)在線上都會(huì)存在數(shù)據(jù)打點(diǎn)需求缚窿,比如對(duì)于“投放推薦層"來(lái)說(shuō)棘幸,主要有搜索和推薦兩條線,每條線都需要進(jìn)行數(shù)據(jù)源信息打點(diǎn)滨攻、算法同學(xué)的算法實(shí)驗(yàn)信息打點(diǎn)够话;“業(yè)務(wù)層”有針對(duì)各種業(yè)務(wù)信息的打點(diǎn);“前端”有一些針對(duì)UI策略AB的打點(diǎn)光绕。這些打點(diǎn)數(shù)據(jù)最終都會(huì)在前端進(jìn)行收集女嘲,然后通過(guò)統(tǒng)一的日志服務(wù)器收集后進(jìn)行各自的數(shù)據(jù)清洗和分析,這意味著在右邊的每一個(gè)層級(jí)诞帐,都會(huì)存在與左邊服務(wù)相對(duì)應(yīng)的清洗服務(wù)欣尼。

存在的問(wèn)題

從背景以及算法數(shù)據(jù)流中可以看出,數(shù)據(jù)的一次完整流轉(zhuǎn)流程停蕉,涉及到每一個(gè)環(huán)節(jié)的數(shù)據(jù)打點(diǎn)愕鼓,最終透出到頁(yè)面端,通過(guò)頁(yè)面端進(jìn)行數(shù)據(jù)收集慧起。而在缺乏ACM的情況下會(huì)存在以下問(wèn)題:

  • 各個(gè)系統(tǒng)之間的打點(diǎn)方案不一致菇晃,導(dǎo)致后續(xù)對(duì)數(shù)據(jù)進(jìn)行清洗時(shí)存在多個(gè)邏輯
  • 系統(tǒng)涉及透?jìng)麈溌吩介L(zhǎng),可靠性越差(特別是底層算法同學(xué)的打點(diǎn)數(shù)據(jù))
  • 出現(xiàn)透?jìng)鲉?wèn)題時(shí)蚓挤,排查困難
  • 相似工作在多個(gè)團(tuán)隊(duì)之間存在重復(fù)
舉個(gè)數(shù)據(jù)打點(diǎn)例子
打點(diǎn)需求1:
        算法組的小q同學(xué)想要在數(shù)據(jù)流中增加一個(gè)打點(diǎn)參數(shù)A(位于投放推薦層)
        做法:小q通知上游的業(yè)務(wù)層(投放層磺送、圖墻業(yè)務(wù)層、前端層)同學(xué)灿意,我要增加打點(diǎn)參數(shù)A估灿,你們處理數(shù)據(jù)的時(shí)候記得幫我透?jìng)饕幌?        實(shí)現(xiàn):業(yè)務(wù)層(投放層、圖墻業(yè)務(wù)層缤剧、前端層)同學(xué)吭吭哧哧改透?jìng)鬟壿嫶a
打點(diǎn)需求2:
        投放組的小w同學(xué)想要在數(shù)據(jù)流中增加一個(gè)打點(diǎn)參數(shù)B
        做法:小w通知下游的業(yè)務(wù)組馅袁、前端組同學(xué):我要增加打點(diǎn)參數(shù)B了,你們處理數(shù)據(jù)的時(shí)候記得幫我透?jìng)饕幌?        實(shí)現(xiàn):業(yè)務(wù)組荒辕、前端組的同學(xué)吭吭哧哧改透?jìng)鬟壿嫶a
打點(diǎn)需求XXX
       汗销、、抵窒、弛针、

前端同學(xué):停!誰(shuí)再提打點(diǎn)的事我就從天臺(tái)跳下去估脆!
眾人:行行行钦奋,高處風(fēng)大座云,你先下來(lái)疙赠,都好說(shuō).....

ACM的目標(biāo)

初期目標(biāo)

主要解決算法訓(xùn)練數(shù)據(jù)的篩選以及統(tǒng)計(jì)困難問(wèn)題(服務(wù)算法策略同學(xué))

最終目標(biāo)(全站標(biāo)準(zhǔn)化)

  • 承擔(dān)全站曝光打點(diǎn)的使命付材,通過(guò)統(tǒng)一數(shù)據(jù)鏈路來(lái)保障數(shù)據(jù)口徑一致
  • 提高打點(diǎn)的準(zhǔn)確性以及可維護(hù)性
  • 為算法策略&BI團(tuán)隊(duì)&數(shù)倉(cāng)提供可靠的數(shù)據(jù)鏈路
  • 通過(guò)監(jiān)控快速發(fā)現(xiàn)并定位埋點(diǎn)丟失問(wèn)題
  • 為整個(gè)數(shù)據(jù)鏈路提供相關(guān)通用服務(wù)(如算法數(shù)據(jù)源、ab報(bào)表圃阳、其他實(shí)時(shí)統(tǒng)計(jì)數(shù)據(jù))

ACM的實(shí)現(xiàn)方案

具體方案

在背景與目標(biāo)中厌衔,我們已經(jīng)了解到我們所面對(duì)的問(wèn)題以及我們需要達(dá)到的目標(biāo),所以具體的實(shí)現(xiàn)分為兩個(gè)階段:1捍岳、實(shí)現(xiàn)初期目標(biāo)富寿;2、在初期的基礎(chǔ)上锣夹,往全站標(biāo)準(zhǔn)化發(fā)展页徐。

一期主要完成一些基礎(chǔ)的功能模塊,以解決算法數(shù)據(jù)收集需求银萍。在ACM的介紹部分变勇,對(duì)各個(gè)模塊就有所提及,一共分為四大塊:acmSDK(埋點(diǎn))贴唇、ABTest(ab實(shí)驗(yàn)支持)搀绣、acmEtl(數(shù)據(jù)清洗)、acmAgg(數(shù)據(jù)聚合)戳气,按照各個(gè)模塊的性質(zhì)總的又分為兩個(gè)方面:1链患、在線部分(acmSDK、ABTest)瓶您;2麻捻、離線部分(acmEtl、acmAgg)

模塊分布圖:
圖2览闰、ACM模塊分布圖
各部分解決的問(wèn)題(系統(tǒng)實(shí)現(xiàn)以后有機(jī)會(huì)補(bǔ)上)
acmSDK

1芯肤、提供統(tǒng)一的打點(diǎn)API,提供到各個(gè)有打點(diǎn)需求的業(yè)務(wù)系統(tǒng)(統(tǒng)一打點(diǎn)口徑)
2压鉴、統(tǒng)一打點(diǎn)數(shù)據(jù)格式(增加acm字段崖咨,作為透?jìng)鞔螯c(diǎn)數(shù)據(jù)的載體)

acm字段格式定義

版本.業(yè)務(wù)域.站點(diǎn)_內(nèi)容類型_內(nèi)容.資源位.實(shí)驗(yàn).簽名.自定義值

acm字段舉例

3.mce.1_4_1kdf96m.39084.30655-30653.qtIkXqnaRktq3.p_11_615935107-mid_39084-lc_201
abTest

1、為算法同學(xué)提供靈活的ab配置
2油吭、提供統(tǒng)一的ab配置管理平臺(tái)

acmEtl

1击蹲、按照acm字段的格式定義對(duì)數(shù)據(jù)進(jìn)行解析
2、按照不同的維度產(chǎn)出不同的數(shù)據(jù)表

acmAgg

1婉宰、按照不同的指標(biāo)對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)
2歌豺、報(bào)表產(chǎn)出


ACM上線后帶來(lái)的收益

ACM引入以后:

  • 大幅度節(jié)省了算法組進(jìn)行數(shù)據(jù)分析時(shí),在打點(diǎn)心包、數(shù)據(jù)清洗工作上的投入
  • 降低打點(diǎn)協(xié)商的成本类咧,去掉打點(diǎn)導(dǎo)致的全流程代碼變更,提升了全站的開(kāi)發(fā)效率

后端同學(xué):打點(diǎn)變得方便可靠,不再因?yàn)樵黾右粋€(gè)打點(diǎn)參數(shù)痕惋,而需要一一通知上下游了区宇。

前端同學(xué):按照ACM定義規(guī)則進(jìn)行單次開(kāi)發(fā),就不用為打點(diǎn)規(guī)則變更而頻繁修改代碼啦值戳!

兩個(gè)成功的案例:

案例說(shuō)明:
    a.新品冷啟動(dòng)問(wèn)題(EE項(xiàng)目)
    b.廣告輪詢出造成的問(wèn)題
    
案例a
新商品往往只能與常規(guī)商品共同展示议谷。但由于排序分的缺少,排序靠后堕虹,無(wú)法與常規(guī)商品競(jìng)爭(zhēng)流量卧晓。EE項(xiàng)目在保障不對(duì)用戶有過(guò)多體驗(yàn)傷害的前提下,針對(duì)新品
給予一定的曝光機(jī)會(huì)。通過(guò)曝光期用戶對(duì)該新品的一些行為數(shù)據(jù)赴捞,確定他是否具有成為爆款或者是具有較好發(fā)展前景逼裆。如果能夠進(jìn)入下一個(gè)階段就會(huì)基于更多
的展現(xiàn)機(jī)會(huì),否則進(jìn)行淘汰赦政。經(jīng)過(guò)第二個(gè)階段的商品通常會(huì)已經(jīng)進(jìn)行了一段時(shí)間的曝光,排序分也有了一定的提升波附,可以正常的納入到常規(guī)排序模型。形式表現(xiàn)
在圖墻上面對(duì)一小部分用戶做a/b,讓其看到的部分商品中包含一定的新品數(shù)量昼钻。這個(gè)過(guò)程我們需要標(biāo)記哪些商品是新品,需要將標(biāo)記傳遞到各個(gè)行為,收集完成
針對(duì)性的訓(xùn)練掸屡。

案例b
在某些查詢條件下,廣告數(shù)量有限為了不影響廣告的收入,我們需要將展現(xiàn)過(guò)的商品重新展現(xiàn)然评。但是首次看到商品點(diǎn)擊意愿度和第二次看到點(diǎn)擊的意愿度是不一
樣的仅财,此時(shí)不能用相同的分析策略去處理兩類點(diǎn)擊行為。為了分析這種場(chǎng)景下的用戶行為碗淌,我們需要對(duì)廣告出現(xiàn)的次數(shù)進(jìn)行標(biāo)記盏求。

ACM需要注意的問(wèn)題

1、acm格式的定義需要在擴(kuò)展性上有足夠的考慮亿眠。從整個(gè)方案中可以看出acm字段格式雖然由acmSDK統(tǒng)一管控碎罚,但是分布面很廣,因此升級(jí)acm字段的格式代價(jià)是很大的纳像,從在線部分的改動(dòng)升級(jí)荆烈,到線上多個(gè)版本共存離線部分處理的兼容,工作量都很大竟趾,稍不注意就會(huì)帶來(lái)大面積的ACM問(wèn)題
2憔购、ACM的穩(wěn)定性需要得到很好的保障,在ACM前期上線后岔帽,經(jīng)常出現(xiàn)數(shù)據(jù)問(wèn)題玫鸟,導(dǎo)致算法訓(xùn)練是數(shù)據(jù)不可用
3、自定義值的管控犀勒,一是ACM使用者眾多屎飘,缺少自定義值的管控是非常危險(xiǎn)的妥曲,很容易導(dǎo)致acm字段值的長(zhǎng)度暴增,二是各個(gè)層級(jí)之間的擴(kuò)展參數(shù)名可能會(huì)存在重復(fù)的情況钦购,不妥善管理則會(huì)存在覆蓋問(wèn)題逾一,導(dǎo)致字段值丟失
4、在線部分埋點(diǎn)需要進(jìn)行監(jiān)控肮雨,能及時(shí)發(fā)現(xiàn)以及定位問(wèn)題(對(duì)于跨多級(jí)的長(zhǎng)鏈路中,缺少必要信息的情況下查詢問(wèn)題是一件苦惱的事)
5箱玷、acm字段最好能記錄整個(gè)后端到前端所經(jīng)過(guò)的鏈路怨规,對(duì)后續(xù)問(wèn)題查詢很有幫助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锡足,隨后出現(xiàn)的幾起案子波丰,更是在濱河造成了極大的恐慌,老刑警劉巖舶得,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掰烟,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沐批,警方通過(guò)查閱死者的電腦和手機(jī)纫骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)九孩,“玉大人先馆,你說(shuō)我怎么就攤上這事√杀颍” “怎么了煤墙?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宪拥。 經(jīng)常有香客問(wèn)我仿野,道長(zhǎng),這世上最難降的妖魔是什么她君? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任脚作,我火速辦了婚禮,結(jié)果婚禮上缔刹,老公的妹妹穿的比我還像新娘鳖枕。我一直安慰自己,他們只是感情好桨螺,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布宾符。 她就那樣靜靜地躺著,像睡著了一般灭翔。 火紅的嫁衣襯著肌膚如雪魏烫。 梳的紋絲不亂的頭發(fā)上辣苏,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音哄褒,去河邊找鬼稀蟋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呐赡,可吹牛的內(nèi)容都是我干的退客。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼链嘀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼萌狂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怀泊,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茫藏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后霹琼,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體务傲,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年枣申,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了售葡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡忠藤,死狀恐怖天通,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情熄驼,我是刑警寧澤像寒,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站瓜贾,受9級(jí)特大地震影響诺祸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祭芦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一筷笨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧龟劲,春花似錦胃夏、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蚕愤,卻和暖如春答恶,著一層夾襖步出監(jiān)牢的瞬間饺蚊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工悬嗓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留污呼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓包竹,卻偏偏與公主長(zhǎng)得像燕酷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子周瞎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 數(shù)據(jù)鏈路層使用的信道有以下兩種類型: ①點(diǎn)對(duì)點(diǎn)信道苗缩,一對(duì)一的點(diǎn)對(duì)點(diǎn)通信方式 ②廣播信道,一對(duì)多的廣播通信方式堰氓,復(fù)雜...
    dmmy大印閱讀 3,245評(píng)論 0 3
  • 農(nóng)村與城市的區(qū)別很大,在中國(guó)尤甚苹享。我想問(wèn)一下双絮,在教育上,農(nóng)村的孩子真的比不過(guò)城市的孩子嗎得问?差距有多大囤攀?真的是農(nóng)村的...
    xhhbj閱讀 205評(píng)論 0 0
  • 地上大片大片的綠色,茂密的森林宫纬,翠綠翠綠焚挠,仿佛還能聽(tīng)到溪水的聲音。這樣的森林里漓骚,卻有一種沉沉的壓抑感蝌衔。林傾...
    我養(yǎng)了只黑狗呀閱讀 439評(píng)論 0 0
  • #include#define PI 3.14 double calculateVolume(int height...
    537e0bfb86d4閱讀 150評(píng)論 0 0
  • 一.這節(jié)課印象最深刻的三個(gè)點(diǎn): 1.今天知道知覺(jué)和感覺(jué)的區(qū)別。 2.看小視頻青春不悔蝌蹂,勇敢努力噩斟。 3.知道了一個(gè)定...
    紫沫青殤閱讀 212評(píng)論 5 0