『壹』 移動應用如何埋點收集什麼數據以便於統計分析
要理解怎麼做的問題,依然還是要從認清是什麼開始:
一、什麼是數據埋點
數據埋點讓產品或運營等相關人員能按照具體的需求,定製性地統計較為復雜的用戶數據。例如想要追蹤用戶的行為,觀察頁面相關點擊數據,關鍵路徑轉化率,分析某個事件活動效果時,就需要事先進行數據埋點,APP上線後才能觀察到相應的數據,進行分析研究。
數據埋點可以在自己的後台進行收集和統計,也可以藉助第三方數據分析平台,這次主要講解如何利用第三方數據分析平台進行數據埋點。
經過以上步驟,一定能夠通過埋點收集到對分析有用的數據~
『貳』 數據分析入門 初識數據埋點
數據分析入門:初識數據埋點
計劃將實際工作中最高頻的與數據相關的一些工作經驗以及技巧與大家做一個交流溝通,初步計劃整體分6-8篇文章、每篇1-2周的頻率由外到里,由淺入深,並伴隨實際工作中案例系統性的分享。根據看官老爺的反應調整後面要寫的內容,以及更新文章的速度。
埋點概述
數據埋點是數據產品經理、數據運營以及數據分析師,基於業務需求(例如:CPC點擊付費廣告中統計每一個廣告位的點擊次數),產品需求(例如:推薦系統中推薦商品的曝光次數以及點擊的人數)對用戶行為的每一個事件對應的位置進行開發埋點,並通過SDK上報埋點的數據結果,記錄數據匯總後進行分析,推動產品優化或指導運營。
埋點分析,是網站分析的一種常用的數據採集方法。數據埋點分為初級、中級、高級三種方式。數據埋點主流部署的方式有:
私有化部署(即部署在自己公司的伺服器上,如果期望提高數據安全性,或者定製化的埋點方案較多,則適合私有部署,並開發一套針對自己公司定製化的數據後台查詢系統保證數據的安全性和精確性,缺點是成本較高)。
接入第三方服務,比如國內的某盟和國外的GA(Google Analytics)統計,在以後的文章中會單獨介紹,此處不再展開。(優點是成本較低,部分基礎服務免費,缺點是:數據會存在不安全的風險,另外一個就是只能進行通用的簡單分析,無法定製化埋點方案)
此處只展開初級:在產品、服務轉化關鍵點植入統計代碼,據其獨立ID確保數據採集不重復(如收藏按鈕點擊率);
主要的埋點事件分類:
點擊事件:
點擊事件,用戶點擊按鈕即算點擊事件,不管點擊後有無結果;如下圖紅框標注所示,點擊一次記一次。
曝光事件:
成功打開一次頁面記一次,刷新頁面一次記一次,載入下一頁新頁,載入一次記一次。home鍵切換到後台再進入頁面,曝光事件不記;
頁面停留時間事件:
表示一個用戶在X頁面的停留時長記為停留時長。例如:小明9:00訪問了X網站首頁,此時分析工具則開始為小明這個訪問者記錄1個Session(會話)。接著9:01小明又瀏覽了另外一個頁面列表頁,然後離開了網站(離開網站可以是通過關閉瀏覽器,或在地址欄鍵入一個不同的網址,或是點擊了你網站上鏈接到其他網站的鏈接……)為了簡單,我們把這個過程當做一個Session。
則最終小明在首頁的頁面停留時間:
(Time on Page,簡稱Tp)Tp(首頁) = 9:01 – 9:00 = 1 分鍾
When?什麼時間做?
產品經理的需求來源眾多,可能來自一線市場人員,可能來自身旁油膩的領導。可能來自用戶反饋的一條吐槽…無論需求來自哪裡,首先要搞清楚的就是這個需求涉及的問題:
在什麼樣的場景下?
面向哪些目標用戶?
解決了哪些問題?
帶來了什麼價值?
梳理清楚問題後,拆分問題:
哪些是主要問題?
哪些是次要問題?
重不重要?
緊不緊急?
將每個問題拆解後下一步就是帶著PRD文檔找親愛的數據分析師童鞋與產品經理汪一起溝通,解決以下問題:
每個問題應該怎麼量化?
量化指標是什麼?
怎麼通過數據定義每個問題以及整個需求的成功與否?
有哪些輔助指標?
定義好數據指標後,此時則需要數據產品或者數據分析師定義埋點。
How?怎麼定義埋點?
無規則不成方圓,良好的定義規范可以幫助埋點相關人員更好的維護,以及理解,極高的提升工作效率,降低推倒重來的風險,基於此分享一份埋點的定義規范幫助各位看官老爺以後維護自己產品的埋點。
使用此規范後,本汪一人就可以維護一個APP版本(包含點擊事件、曝光事件、停留事件)累計1500多個埋點,井然有序,完全不會亂。
(懷念那些加班維護埋點跑數的日日夜夜,讓我與看門大叔成了摯友,結下了深厚的友誼。咳咳,此處應該有掌聲…)
埋點分類概述:
首先從事件屬性這個維度上分為三份Excel(點擊事件表、曝光事件表、停留事件表)
其次每一個事件表中新建三份子表(Sheet),以點擊事件表為例拆分為:首頁事件集合、列表頁事件集合、詳情頁事件集合
每當APP發布新版本時,從上一個版本的埋點中做一份Copy,新版本中新增了哪些埋點,刪除了哪些埋點?都用不同的顏色,或者時間標記進行標注說明。
真實環境中分類更為復雜,僅以上面例子說明分類思路,各位看官老爺可以根據業務需求做針對自己產品更合適的分類。
欄位明細:
功能欄位:
用於說明當前埋點是在哪個頁面的哪個功能。例如:收藏功能,對應功能欄位名:自定義為我的收藏
中文名欄位:
用於描述X功能模塊內X位置,例如起名叫:收藏功能-文章收藏
事件類型欄位:
用於說明當前埋點是點擊事件還是曝光事件還是其他
事件ID欄位:
如果是自己公司開發的數據查詢系統,則每一個埋點都對應一個事件ID,上線後用於拿著事件ID去後台取數使用。事件ID的命名規范:事件英文簡寫_哪一端的產品_產品名稱簡寫_頁面名稱_模塊名稱_功能名稱。
例如:點擊事件_APP端_二手車_個人中心_收藏_文章收藏 對應事件ID== click_app_2sc_ Personal Center_ Collection_ Article Collection
如果是用的第三方統計工具:例如某盟,同理定義好事件ID,上線後去X盟後台,輸入事件ID查詢相應的數據。
Key欄位與value欄位:
當一個埋點對應不同類型的多種位置的埋點時,則需要命名當前埋點的key參數與value參數,一個key可以對應1個value或者多個value,但一個value不能對應多個key.只能對應唯一的一個key 例如:二手車信息網站有2個關鍵按鈕,一個是砍價按鈕,一個是撥打電話按鈕,但是在多個頻道中每個頻道都有多個砍價按鈕多個撥打電話按鈕,在這樣的場景下就可以設計2個KEY值:
key01=source用於標記當用戶點擊了一次按鈕後是在哪個頻道的頁面點擊的這個按鈕X value01=X1,value2=X2用於標記不同位置同屬性的按鈕。
Key02=type用於標記用戶是點的砍價還是點的撥打電話按鈕,例如:01value用於標記砍價按鈕,02value對應的撥打電話按鈕。
記錄規則欄位:
定義什麼情況下觸發埋點,例如:在列表頁點擊一次記錄一次
備註:
用於描述當前埋點什麼時間新增?什麼時間修改過?原因?什麼時間被刪除?誰刪除的?等信息記錄,此處好多看官可能以為寫不寫無所謂,但是為了信息的完整性和可追溯性最好每一次變動都要備注。
『叄』 數據埋點技巧
移動互聯網時代,無論是Android、iOS還是小程序,都有很多成熟的解決方案,無需花費很多的時間去處理埋點的事情,而且基於第三方提供的SDK進行埋點,在數據處理和分析上也有很大的優勢。
但是在之前的PC互聯網時代,除了網頁端有網路統計、谷歌分析等,客戶端的埋點似乎沒有一套能拿出來可供大家討論的解決方案,我就基於我的工作經驗和理解,給大家分享一下PC客戶端的埋點。
PC客戶端的埋點
首先,在PC上,我們得知道我們需要統計些什麼內容。
一個PC客戶端,無論是工具類的還是內容類的,我們都希望知道我們提供的服務的效果。那麼,我們從一個客戶端安裝、運行到最終被卸載來看看。
就拿產品使用較多的工具「Axure RP」來舉例吧。如果「Axure RP」是我們自己的軟體,首先我們需要知道被安裝了,之後,我們關注激活情況,也就是使用,到最後,被卸載了,這一整個環節,構成了一個生命周期。 重點來了,對於這個生命周期,所有你想知道的關於「Axure RP」的情況你都可以統計到。
1.軟體的安裝
在PC客戶端安裝的過程中,流程一般是這樣的:①運行安裝包②彈出安裝界面提供給用戶操作③執行安裝過程-寫注冊表、啟動項、計劃任務等④執行安裝過程-創建安裝的文件夾(③和④可以交換)。
在這個環節,我們一般需要知道:
安裝包被運行了
在安裝界面用戶做了哪些操作
我們的安裝過程是否正常執行
我們最終是否安裝成功
在PC上,只要我們的安裝包運行起來了,無論是彈出安裝界面、寫注冊表還是創建文件,這些都是安裝包可以控制的,所以我們能通過安裝包進程,將整個安裝環節的所有數據記錄下來發送到我們的後台並記錄下來 (這里要重點記住,由於安裝是一次性的動作,所以統計一定要發實時的) 。
2.軟體的使用
軟體的使用,包括啟動軟體、使用功能和退出軟體。
在PC上,軟體的啟動有很多種方式,例如開機自啟動、計劃任務、手動點擊快捷方式,我們繼續以「Axure RP」舉例,當我們裝上了「Axure RP」後,會在桌面、開始菜單中,創建快捷方式(有些程序會在任務欄上也創建),同時,會將後綴名為「rp」的文件默認打開方式調整為「Axure RP」。
對於啟動, 我們就有了三種方式:桌面快捷方式、開始菜單快捷方式和默認軟體打開,所以我們需要統計軟體是否被啟動了,是如何啟動的。
對於使用功能, 當軟體運行起來後,其進程就會啟動,這個時候就跟移動端的應用類似,我們需要統計一系列事件,每個功能的使用情況、功能狀態、付費、登錄等一系列信息(區別於移動端的是,在PC上一般這些統計都是做單點統計,例如統計彈窗的彈出、功能的點擊、某個狀態,對於相互關聯的一組事件統計是比較復雜的,需要定義結構體,在一條統計中包含很多組欄位信息,因為沒有成熟的SDK集成,所以基本都要自己定義埋點,復用性較差)。
這部分統計分為公共統計和專用統計。公共統計就是基本信息,常用的是用戶標識、用戶基本信息、計算機硬體信息和其他的可復用的;專用統計就是針對你的功能,你想了解哪些情況,針對性進行埋點統計。
對於軟體退出, 這就比較簡單了,是正常退出還是異常退出?軟體使用了多久退出?
3.軟體的卸載
軟體卸載的流程包括啟動卸載程序、用戶操作、刪除注冊表及文件等操作、完成卸載。
在這個過程中,我們主要關注兩方面的信息,一方面是用戶怎麼卸載的?是主動使用卸載程序,還是通過一些管理軟體進行卸載;另一方面是用戶為什麼要卸載,這個時候我們可以在卸載的界面中給用戶提供選擇,以獲取用戶的反饋。
該怎麼埋點
1.埋點的分類
(1)時效性
PC客戶端一般情況下都比較復雜,子功能很多,可統計的內容很多,為了節省帶寬,我們不可能每次都實時將數據傳輸回來,而且很多時效性不是很強的功能沒有必要實時上報。
實時統計
當功能觸發時或達到一定條件,立即將統計回傳,一般情況下用於時效性比較強的功能,例如活躍統計、營收類統計,我們需要實時分析並調整策略。
延時統計
統計不立即回傳,將統計積累,達到一定的條件或者一定的時間,統一將這部分統計回傳,一般情況用於時效性不強的功能,例如採集設備信息、獲取某些功能的狀態、常規功能的統計,這部分統計使用范圍比較廣,一般都是隔日發送,有一天的延遲,統計的信息晚一天不會對分析產生較大的影響。
(2)埋點的作用
常規的基礎統計
每次統計都需要發送,可以理解為公用統計,這部分統計是將幾乎所有的統計都需要的部分包括進來,封裝成一個統一的部分,每次發送統計都會帶上這些內容,方便管理,節省後續埋點時間。
功能統計
針對特定功能,當功能被使用或者生效的時候,我們需要統計效果或者狀態,可以理解為專用統計,不同於移動端,PC一般沒有第三方提供的SDK,需要每個專用統計自己埋點,維護大量的統計內容,不過在一個公司內部,可以統一設計規范,方便維護。
(3)數據類型
結構體
統計連貫的事件,各項信息之間的關聯很重要。
計數
統計某個行為發生的次數。
字元串
統計內容。
整形
統計數值,也可用來統計狀態。
布爾型
統計需要判斷的類型,一般使用場景較少,為了方便計算,大部分被整形和字元串替代。
2.數據埋點實例
(1)軟體安裝
場景:統計安裝過程中的信息
(2)軟體的使用
場景:軟體啟動後,用戶使用了分享功能,將自己做的原型分享到了雲端,最後用戶關閉了軟體。
要注意的是,軟體啟動和關閉,看需要是可以調整的,如果你只是想知道是不是啟動了,來判斷活躍,那麼僅僅需要啟動的時候發送個整型的值標識即可;如果想知道更詳細的信息,比如啟動方式、啟動時間等等,可以定義結構體,將這一刻更多的信息發送回來,可靈活定義。
(3)軟體卸載
卸載跟軟體安裝類似,這里就不贅述了。
在這里,如果希望收集用戶的卸載原因,可以定義一個字元串,將用戶填寫的內容上報,這種形式的數據如果太多,不太利於分析,所以看產品情況可靈活設置。
『肆』 掌握數據生命周期 初識數據埋點
作者 | 秦路
來源 | tracykanc
談到數據驅動業務,離不開數據是怎麼來的,數據收集是整個數據生命周期的初始環節。
數據生命周期的大體介紹,在過去的一篇文章中有提到。雖然文章的部分內容我准備重新構造,但是對於這部分的基礎環節,並沒有太多的變換。
文章會涉及到不少技術相關的知識,我會盡量減少這部分的細節。相信經過一系列的講解,你會明白埋點數據怎麼成為驅動業務的指標,文章也會提供網上的公開數據,幫助你實際上手操作。
需要收集的數據主要能劃分成四個主要類型:行為數據、網站日誌數據、業務數據、外部數據。
Web日誌數據
網日誌數據是Web時代的概念。
用戶瀏覽的每一個網頁,都會向伺服器發送請求,具體的技術細節不用關注。只要知道,當伺服器和用戶產生數據交互,伺服器就會把這次交互記錄下來,我們稱之為日誌。
127.0.0.1 - - [20/Jul/2017:22:04:08 +0800] "GET /news/index HTTP/1.1" 200 22262 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.66 Safari/537.36"
上圖就是一條伺服器日誌,它告訴了我們,什麼樣的用戶who在什麼時間段when進行了什麼操作what。
127.0.0.1是用戶IP,即什麼樣的用戶。不同用戶的IP並不一致,通過它能基本的區分並定位到人。 [20/Jul/2017:22:04:08 +0800] 是產生這條記錄的時間,可以理解為用戶訪問的時間戳。
"GET /news/index HTTP/1.1"是伺服器處理請求的動作,在這里,姑且認為是用戶請求訪問了某個網站路徑,/news/index。這里省略了域名,如果域名是www.aaa.com,那麼用戶訪問的完整地址就是www.aaa.com/news/index,從字面意思理解,是用戶瀏覽了新聞頁。也就是what。
who、when、what構成了用戶行為分析的基礎。Mozilla/5.0這個欄位是用戶瀏覽時用的瀏覽器,它的分析意義不如前三者。
如果我們基於who分析,可以得知網站每天的PVUV;基於when分析,可以得知平均瀏覽時長,每日訪問高峰;what則能得知什麼內容更吸引人、用戶訪問的頁面深度、轉化率等屬性。
上面的示例中,我們用IP數據指代用戶,但用戶的IP並不固定,這對數據口徑的統一和准確率不利。實際應用中還需要研發們通過cookie或token獲取到用戶ID,並且將用戶ID傳遞到日誌中。它的形式就會變成:
127.0.0.1 - 123456 [20/Jul/2017:22:04:08 +0800]…
123456就是用戶ID,通過它就能和後台的用戶標簽數據關聯,進行更豐富維度的分析。
案例的伺服器日誌,記錄了用戶的瀏覽數據,是標準的流量分析要素。但是網站上還會有其他功,即更豐富的what,譬如評論、收藏、點贊、下單等,要統計這些行為靠日誌就力有未逮了。所以業內除了伺服器日誌,還會配合使用JS嵌入或者後台採集的方式,針對各類業務場景收集數據。
在這里我提供一份網上公開的數據集,年代比較古老,是學生在校園網站的瀏覽行為數據集。數據原始格式是log,可以txt打開。需要的同學可以在後台發送「日誌下載」。
它是標準的伺服器日誌文件,對分析師來說,IP,時間、瀏覽了哪些網頁,這三個欄位足夠做出一份完整的分析報告。後續的章節我將圍繞它進行演練,為了照顧新手,會同時用Excel和Python演示。
首先進行簡單的清洗。如果是Excel,直接將內容復制,文件開頭的內容只需要保留第四。
按空格進行分列,初步的數據格式就出來了。
我們仔細觀察cs-uri-stem,會發現有很多無用數據。比如/images/index_r2_c1.jpg,它是向伺服器請求了圖片數據,對我們分析其實沒有多大幫助。用戶訪問的具體網頁,是/index.asp這類以.asp為結尾的。
利用過濾功能,將含有.asp字元串的內容提取出來,並且只保留date、time、c-ip、cs-uri-stem、cs-uri-stem。按c-ip和time按從小到大排序,這樣用戶在什麼時間做了什麼的行為序列就很清晰了。
像172.16.100.11這位遊客,在凌晨30分的時候訪問了網站首頁,然後瀏覽了校園新聞和一周安排相關的內容,整個會話持續了半小時左右的時間
Python相關的清洗留待下一篇文章,這里就不多花時間講解了。感興趣,大家可以先自行練習一下。
APP行為數據
數據埋點,抽象理解便是記錄用戶在客戶端的關鍵操作行為,一行數據便等於一條行為操作記錄。點擊「立即搶購」是,在文章頁面停留5min是,發表文章評論是,進行退出登錄操作是,視頻網站首頁看到了10條新視頻的內容曝光也是...反必要的,我們都採集。
APP行為數據是在日誌數據的基礎上發展和完善的。雖然數據的載體是在APP端,但它同樣可以抽象出幾個要素:who、when、where、what、how。
who即唯一標識用戶,在移動端,我們可以很方便地採集到user_id,一旦用戶注冊,就會生成新的user_id。
這里有一個問題,如果用戶處於未登錄狀態呢?如果用戶有多個賬號呢?為了更好地統一和識別唯一用戶,移動端還會採集device_id,通過手機設備自帶的唯一標識碼進行區分。
實際的生成邏輯要復雜的多,安卓和iOS不一樣,device_id只能趨近於唯一、用戶更換設備後怎麼讓數據繼承,未登錄狀態的匿名賬戶怎麼繼承到注冊賬戶,這些都會影響到分析的口徑,不同公司的判斷邏輯不一致,此處注意踩坑。
回到用戶行為:
when依舊是行為發生的時間。
where即行為發生的地點,手機上,通過GPS定位許可權,獲取用戶比IP更詳細的經緯度數據並不難。
what是具體的行為,瀏覽、點贊、評論、分享、關注、下單、舉報、打賞,均是行為,如何統計取決於分析的維度。
如果我們想知道用戶的點贊行為,那麼在用戶點贊的時候要求客戶端上報一條like信息即可。
如果只是到這里,還稱不上埋點,因為點贊本身也會寫入到資料庫中,並不需要客戶端額外採集和上報,這里就引入了全新的維度:how。
如何點贊,拿微信朋友圈舉例。絕大部分的點贊都是在朋友圈timeline中發送,但是小部分場景,是允許用戶進入到好友的個人頁面,對發布內容單獨點贊的。服務端/後台並不知道這個點贊在哪裡發生,得iOS或安卓的客戶端告訴它,這便是how這個維度的用處。
換一種思考角度,如果很多點贊或留言的發生場景不在朋友圈,而是在好友個人頁。這是不是能討論一下某些產品需求?畢竟朋友圈信息流內的內容越來越多,很容易錯過好友的生活百態,所以就會有那麼一批用戶,有需要去好友頁看內容的需求。這里無意深入展開產品問題,只是想說明,哪怕同樣是點贊,場景發生的不同,數據描述的角度就不同了:朋友圈的點贊之交/好友頁的點贊至交。
除了場景,交互行為方式也是需要客戶端完成的。例如點擊內容放大圖片、雙擊點贊、視頻自動播放、觸屏右滑回退頁面...產品量級小,這些細節無足輕重,產品變大了以後,產品們多少會有這些細節型需求。
行為埋點,通常用json格式描述和存儲,按點贊舉例:
params是嵌套的json,是描述行為的how,業內通常稱為行為參數,event則是事件。action_type指的是怎麼觸發點贊,page是點贊發生的頁面,page_type是頁面的類型,現在產品設計,在推薦為主的信息流中,除了首頁,還會在頂欄劃分子頻道,所以page=feed,page_type=game,可以理解成是首頁的游戲子頻道。item_id指對哪篇具體的內容點贊,item_type是內容類型為視頻。
上述幾個欄位,就構成了APP端行為採集的how和what了。如果我們再考慮的齊全一些,who、when及其他輔助欄位都能加上。
埋點怎麼設計,不是本篇文章的重點(實際上也復雜的多,它需要很多討論和文檔and so on,有機會再講),因為各家公司都有自己的設計思路和方法,有些更是按控制項統計的無痕埋點。如果大家感興趣,可以網路上搜索文章,不少賣用戶分析平台的SaaS公司都有文章詳細介紹。
除了行為「點」,埋點統計中還包含「段」的邏輯,即用戶在頁面上停留了多久,這塊也是客戶端處理的優勢所在,就不多做介紹了。
這里提供一份來源於網上的我也不知道是啥內容產品的行為數據源,雖然它的本意是用作推薦模型的演算法競賽,不過用作用戶行為分析也是可以的。
這幾個欄位便是用戶行為的基礎欄位,像deep_view,雖然沒有明確說明是什麼含義,但也猜測是描述了用戶瀏覽的深度,比如看了50%+的文章內容,它只能以客戶端的形式統計,實際業務場景往往都需要這種有更深刻含義的數據。
具體的分析實操留待下一篇文章講解,感興趣的同學可以自行下載,和網頁日誌放一起了。
行為數據不是百分百准確的,採集用戶行為,也會有丟失和缺漏的情況發生。這里不建議重要的統計口徑走埋點邏輯,比如支付,口徑缺失問題會讓人很抓狂的,相關統計還是依賴支付介面計算。支付相關的埋點僅做分析就行。
APP行為數據往往涉及到大數據架構,哪怕10萬DAU的一款產品,用戶在產品上的操作,也會包含數十個乃至上百的操作行為,這些行為都需要准確上報並落到報表,對技術架構是一個較大的挑戰。而行為數據的加工處理,也並不是mysql就能應付,往往需要分布式計算。
對數據源的使用方,產品運營及分析師,會帶來一個取捨問題。如果我只想知道點贊和分享數,那麼通過api或者生產庫也能知道,是否需要細致到行為層面?這便是一個收益的考量。
當然啦,我個人還是挺建議對分析有興趣的同學,去能接觸到用戶行為數據的公司去學習。
業務數據
業務數據是生產環境提供的,我們在APP端獲得了用戶user_id,文章或商品的item_id,乃至支付order_id,但它們只和用戶的行為有關。換句話說,我並不知道user_id是什麼樣的用戶。
是男是女,芳齡幾何?出生籍貫,從哪裡來?這些人口統計學的信息必然不會在行為埋點中包含。商品內容訂單也是同理。
單依靠埋點的行為數據,我們並不能准確描述什麼樣的用戶做了事情,也不知道對什麼樣的內容做了行為。描述性質的數據/維度是分析的價值所在。男女的行為差異,不同城市的用戶群體購買習慣,這才構成了分析和精細化的基礎。
業務數據和行為數據的結合,在數據層面上可以簡單理解為join。比如把用戶行為數據的user_id和存放用戶信息的user_id進行關聯起來。形成如下:
上圖是簡化後的欄位。user_name和sex就是取自業務數據的用戶信息,item_tag也是取自內容信息表中的欄位,而event則來源於行為埋點。三者共同構成了,什麼樣的用戶who在什麼時候when對什麼樣的內容做了什麼事what。
簡單說,很多用戶行為的建模,就是拿各種數據組合在一起計算。用user_id的粒度聚合,你算得是這些用戶喜歡哪些文章,用item_id的粒度聚合,你算得是這篇文章被哪類用戶喜歡。它們都是你看待/分析事物的角度。
從更深的層面上說,行為數據也是可以再加工和利用的,它是構成用戶標簽的基礎。拿瀏覽行為數據說,我們設計了埋點,知道王二狗看了哪些類型的文章,
item_tag是文章類型,游戲、娛樂、科技這類。有些用戶可能各種各樣的類型都喜歡,有些用戶的口味偏好則比較集中,產品上可以拿用戶偏好來代稱,這里專指興趣的集中度。
現在取所有用戶的瀏覽數據,算它們在不同類型tag下的瀏覽分布(上文提供的行為數據就可以計算,cate_id便是內容類型)。比如王二狗可能90%的瀏覽都是游戲,10%是其他,那麼就可以認為王二狗的興趣集中度高。
這里有一個很簡易的公式,1-sum(p^2),將所有內容類別的瀏覽佔比平方後相加,最終拿1減去,就算出了用戶興趣的集中程度了。我們拿案例簡單看下。
上圖的李二狗,他的興趣90%集中在游戲,所以興趣集中度= 1 - (0.9*0.9+0.1*0.1)=0.18,李三妞的興趣稍微平均點,所以1-(0.5*0.5+0.5*0.5)=0.5,興趣集中度比王二狗高。趙四有三個興趣點,所以比李三妞稍微高一些,王五是均衡的,所以是四人中最高的。可能有同學疑問,興趣程度為什麼不用標准差算呢?它也是算波動偏離的呀,這是一個思考題,大家可以新加一個tag類別再算一下。
1-sum(p^2)是趨近於1的,有四個類別,一位均衡的用戶(四個都是0.25)是0.75的集中度,當有十個類型,一位均衡的用戶(四個都是0.1)是0.9的集中度。這種公式的好處就是興趣類別越多,集中度的上限越接近1,這是標准差比不了的。
這里並沒有涉及太高深的數學模型,只是用了加減乘除,就能快速的計算出興趣的集中程度了。通過行為數據算出用戶興趣集中度,便能在分析場景中發揮自己的用武之地了,它是用戶畫像的基礎,以後有機會再深入講解。
外部數據可以分為兩個部分,一個是行業市場調研類的,一個是爬蟲抓取的,它們也能作為數據源分析,比如站外熱點內容和站內熱點內容、競品對手商家表現和自己產品的商家,大家有機會應用的不多,就不多講了,我也不怎麼熟。
到這里為止,文章主要講了用戶行為層面的數據是怎麼來的,更多是基礎概念的講解,下一篇文章會通過具體的數據教大家用戶行為分析的技巧。不過,因為數據來源於網上,數據的豐富程度還是欠缺了不少,說白了,業務場景比較弱,希望大家自己在工作中多思考。