數(shù)據(jù)是機(jī)器學(xué)習(xí)的前提讼渊,前面 使用Python爬蟲抓取數(shù)據(jù) 篇介紹了通過爬蟲抓取網(wǎng)頁的方式采集數(shù)據(jù)锦秒。對于新產(chǎn)品幅狮,最重要的事項(xiàng)是獲取用戶贰您,參看前面互聯(lián)網(wǎng)產(chǎn)品怎么發(fā)掘種子用戶和意見領(lǐng)袖?這篇。
在產(chǎn)品上線之后叶沛,最重要的工作就是數(shù)據(jù)分析瘪弓,產(chǎn)品和運(yùn)營人員關(guān)心使用產(chǎn)品的用戶的行為乓旗、使用習(xí)慣集索、人口統(tǒng)計(jì)信息及運(yùn)營指標(biāo)等,這些都依賴于數(shù)據(jù)妆距。埋點(diǎn)是采集數(shù)據(jù)的重要途徑函匕。
數(shù)據(jù)埋點(diǎn)不是新名詞,在電腦網(wǎng)站出來之后就有統(tǒng)計(jì)工具中剩,站長們很熟悉的谷歌、百度統(tǒng)計(jì)等工具结啼,通過在HTML頁面中嵌入它們提供的js代碼實(shí)現(xiàn)數(shù)據(jù)采集。
多說幾句朴译,無論谷歌属铁、百度還是其它的web頁面統(tǒng)計(jì)工具,技術(shù)實(shí)現(xiàn)原理都是由Web服務(wù)器端通過代碼的方式向?yàn)g覽器返回一張1*1像素的透明圖片(在網(wǎng)頁上人眼看不到這張圖片)澜公,圖片的過期時(shí)間設(shè)置成立即過期喇肋,這樣每次打開頁面瀏覽器都會去請求這張圖片,服務(wù)器端就可以記錄下請求數(shù)據(jù)甚侣。明白了原理间学,自己也可以寫一個(gè)簡單的統(tǒng)計(jì)工具。
在設(shè)計(jì)埋點(diǎn)方案之前需要確定收集哪些數(shù)據(jù)详羡,將這些需求匯總,產(chǎn)品实柠、運(yùn)營善涨、技術(shù)一起確定埋點(diǎn)方案。
從埋點(diǎn)位置劃分蟹漓,可以分為:前端埋點(diǎn)源内,后端埋點(diǎn)。
前端埋點(diǎn)
顧名思義就是在用戶可見的那端(APP嗽交、網(wǎng)頁、PC客戶端)嵌入數(shù)據(jù)采集代碼腔寡,像一些第三方的統(tǒng)計(jì)工具掌唾,比如友盟等,前端嵌入它們的SDK糯彬,調(diào)用SDK提供的接口采集數(shù)據(jù)。
前端埋點(diǎn)能收集到用戶在界面上的操作軌跡似扔,這些數(shù)據(jù)后端沒法收集搓谆,比如用戶點(diǎn)擊了哪個(gè)按鈕,打開了哪些頁面黔寇,頁面之間的跳轉(zhuǎn)次序等斩萌。
后端埋點(diǎn)
后端埋點(diǎn)就是在服務(wù)端嵌入代碼,收集數(shù)據(jù)憋飞,由于是在服務(wù)端采集數(shù)據(jù)姆吭,可以避免前端埋點(diǎn)的以下一些問題:
客戶端采集數(shù)據(jù),為了盡量減少對用戶體驗(yàn)的影響瘤睹,需要對采集的數(shù)據(jù)壓縮答倡、暫存驴党,為減少移動(dòng)端的數(shù)據(jù)流量,一般只在網(wǎng)絡(luò)狀況良好的情況下向服務(wù)器發(fā)送數(shù)據(jù)倔既,因此數(shù)據(jù)會有延遲,丟數(shù)據(jù)等弊端佩谣。而在服務(wù)端采集數(shù)據(jù)实蓬,數(shù)據(jù)在內(nèi)網(wǎng)傳輸,數(shù)據(jù)傳輸?shù)募磿r(shí)性強(qiáng)调鬓,丟失數(shù)據(jù)的風(fēng)險(xiǎn)小酌伊。
客戶端采集數(shù)據(jù),如果要增加采集點(diǎn)或變更采集方案虹脯,需要修改客戶端代碼奏候,這就需要發(fā)布新版本,受發(fā)布周期的影響暇榴,而且通常很多用戶并不會及時(shí)更新版本蕉世,將導(dǎo)致新方案不能覆蓋所有用戶。在服務(wù)端采集數(shù)據(jù)則沒有這些問題狠轻。
通過以上比較,實(shí)施時(shí)盡量采用后端埋點(diǎn)查吊,除非后端沒法采集到所需要的數(shù)據(jù)湖蜕。
前端埋點(diǎn)技術(shù)
目前常見的前端埋點(diǎn)技術(shù),有下面三類:
1评也、代碼埋點(diǎn)
谷歌統(tǒng)計(jì)、百度統(tǒng)計(jì)盗迟、友盟等都是代碼埋點(diǎn)的例子。在前端代碼里嵌入數(shù)據(jù)采集代碼艇纺,比如在APP啟動(dòng)時(shí)嵌入邮弹,在按鈕點(diǎn)擊事件里嵌入等。
代碼埋點(diǎn)的優(yōu)點(diǎn)是控制精準(zhǔn)员帮,采集的數(shù)據(jù)項(xiàng)精確导饲。缺點(diǎn):首先是需要開發(fā)人員到處添加采集代碼,添加和修改的工作量大渣锦;其次變更采集策略,需要發(fā)布新版本型檀,代價(jià)巨大听盖;此外對于APP來說還有耗電、消耗數(shù)據(jù)流量仓坞、丟失數(shù)據(jù)的風(fēng)險(xiǎn)腰吟。
2、可視化埋點(diǎn)
從上面可知嫉称,代碼埋點(diǎn)的缺點(diǎn)很多灵疮,最大的缺點(diǎn)是變更需要開發(fā)人員修改代碼,不靈活始藕。為了改善氮趋,有的公司開發(fā)出了可視化埋點(diǎn)技術(shù)江耀,產(chǎn)品與運(yùn)營人員通過GUI界面祥国,鼠標(biāo)點(diǎn)擊的方式隨時(shí)調(diào)整埋點(diǎn)位置晾腔,增加、取消埋點(diǎn)壁查,再也不需要開發(fā)人員的介入剔应,而且不用發(fā)布新版本。
最早提供這種方案的是 Mixpanel 公司峻贮,Github上有該公司發(fā)布的SDK代碼,https://github.com/mixpanel挂捻。國內(nèi)提供可視化埋點(diǎn)技術(shù)的公司大都是在它的基礎(chǔ)上進(jìn)行二次開發(fā)而成船万。
技術(shù)實(shí)現(xiàn)原理
基本原理就是將埋點(diǎn)位置信息做成可配置的資源,通過在后臺管理端上操作生成這些配置声怔,客戶端啟動(dòng)或者定時(shí)從服務(wù)器端獲取這些配置碎节,客戶端根據(jù)最新的配置采集數(shù)據(jù),發(fā)送給服務(wù)端胎撇。
具體實(shí)現(xiàn)是SDK定時(shí)做界面截圖殖氏,在截圖的同時(shí)從界面UI的根對象開始遍歷所有的可視化子對象,得到其層級關(guān)系爵憎。根據(jù)截圖和UI元素的可視化信息重新渲染頁面,識別可埋點(diǎn)的控件宝鼓。當(dāng)產(chǎn)品人員在后臺管理端的截屏畫面上點(diǎn)擊可埋點(diǎn)控件,設(shè)置事件關(guān)聯(lián)方面的配置蛉签,服務(wù)器保存這些配置,客戶端在獲取到這些配置信息以后沥寥,按照新配置采集數(shù)據(jù)。
3片橡、無埋點(diǎn)
原理跟可視化埋點(diǎn)幾乎一樣淮野,唯一的不同就是,無埋點(diǎn)是先把所有控件的操作數(shù)據(jù)采集下來鳄厌,發(fā)給服務(wù)器妈踊,數(shù)據(jù)分析人員在后臺管理端設(shè)置對哪些數(shù)據(jù)進(jìn)行分析。由此可知歪泳,這個(gè)方案收集的數(shù)據(jù)量巨大露筒,增加了網(wǎng)絡(luò)傳輸和服務(wù)器存儲負(fù)擔(dān)。
無埋點(diǎn)比可視化方案優(yōu)勢的地方是收集的歷史數(shù)據(jù)齊全慎式,可以回溯分析過往數(shù)據(jù)伶氢。
工具選擇
國內(nèi)不少數(shù)據(jù)服務(wù)公司提供了數(shù)據(jù)采集癣防、分析工具掌眠,初創(chuàng)公司可以選擇使用它們的服務(wù),不過最好選擇可以獨(dú)立部署的提供方级遭,方便控制,防止數(shù)據(jù)泄漏挫鸽。
總結(jié)一下,數(shù)據(jù)埋點(diǎn)需要根據(jù)需求而定像云,靈活使用以上方案锌雀,揚(yáng)長避短。