用戶畫像—打用戶行爲標籤

https://mp.weixin.qq.com/s?__biz=MzI0OTQyNzEzMQ==&mid=2247487355&idx=1&sn=b7d5d94a017a0c2908d8cee6a58d917a&chksm=e990eaafdee763b9dd5799b27c32d034bcd9d0e21d82c3c98219dda5f2f6bd6e79658f975f7d&scene=21#wechat_redirect
用戶畫像中用戶行爲標籤是很重要的一塊內容,這篇詳細講講如何打行爲標籤。

數據倉庫
用戶畫像的應用流程從原始的數據輸入到模型應用可分爲5塊(圖1),包括將操作型環境數據經ETL後集中存儲在數據倉庫,之後經過對數據的建模、挖掘、分析建立用戶畫像模型,最終將建好用戶畫像的數據接口調用到BI報表、經營分析、精準營銷、個性化推薦等各系統模塊。

圖1

用戶畫像開發,主要是對數據倉庫中的業務表、日誌表、埋點表中的相關數據進行各維度建模。所以要對數據倉庫和元數據非常熟悉。

案例
爲了講清楚如何開發用戶行爲標籤,這裏隨便舉一個某圖書電商網站的例子,在介紹清楚案例相關元數據的基礎上如何結合業務開發行爲標籤,案例及相關的元數據如有雷同、純屬雷同。

某圖書電商網站擁有超過千萬的網購用戶羣體,所售各品類圖書100餘萬種。用戶在平臺上可進行瀏覽、搜索、收藏、下單、購買等瀏覽、交易行爲。爲了更好地運營網站產品,需要進一步瞭解用戶,以便做精準營銷和個性化推薦。爲此需要開發出用戶行爲標籤表。

相關元數據
商城自建立以來,數據倉庫中積累着大量業務數據、日誌數據及埋點數據。如何充分挖掘沉澱在數據倉庫中數據的價值,有效支持到用戶畫像的建設,成爲當前的重要工作。

在本案例中,可以獲取到的數據按其類型可分爲:業務類數據、用戶行爲數據。其中業務類數據是指用戶在平臺上下單、購買、收藏物品、貨物配送等與業務相關的數據;用戶行爲數據指用戶搜索某條信息、訪問某個頁面、點擊某個按鈕、提交某個表單等通過操作行爲產生(在解析日誌的埋點表中)的數據。

涉及到數據倉庫中的表主要包括:用戶信息表、商品訂單表、圖書信息表、圖書類目表、APP端日誌表、WEB端日誌表、商品評論表等,下面就用戶畫像建模過程中一些主要用到的數據表做詳細介紹。

這裏對上面的表做個彙總:

用戶信息表 (dwd.user_basic_info)

商品訂單表 (dwd.gdm_ord_order)

圖書信息表 (dwd.book_base_basic_info)

圖書類目表 (gdw.book_std_type_df)

WEB端日誌表 (dwd.beacon_web_books_client_pv_log)

APP端日誌表 (dwd.beacon_app_books_client_pv_log)

商品評論表 (dwd.book_comment)

用戶收藏表 (dwd.book_collection_df)

購物車信息表 (dwd.book_shopping_cart_df)

搜索日誌表 (dwd.app_search_log)

上面列舉了涉及到的10張表作爲示例,在實際開發中涉及到的業務表、日誌表、埋點表…要比這多的多。

用戶行爲標籤開發
一、開發背景

用戶行爲標籤表是根據用戶在產品上的訪問行爲、下單行爲提取用戶標籤,用於定位用戶在產品上的訪問情況,進而根據用戶的瀏覽習慣、消費偏好做推薦和營銷。

其主要數據來源包括業務類數據表、日誌數據表和埋點數據表。其中日誌數據和埋點數據記錄了用戶在產品上的全部行爲,如用戶瀏覽某個頁面、搜索某個關鍵詞、點擊了某個點位即會在日誌數據中有相應記錄。

日誌數據量非常大,需要數倉人員將其解析成結構化數據,落表以供調用。業務數據庫記錄用戶購買、添加購物車等業務相關行爲。

[ 數據來源 ]:用戶行爲屬性標籤主要來自用戶屬性標籤表、商品訂單表、圖書信息表、圖書類目表、WEB端日誌表、APP端日誌表、商品評論表、用戶收藏表、購物車信息表、搜索日誌表、行爲權重配置表

用戶行爲標籤表加工依賴表

最終建模後的目標——用戶行爲標籤表表結構:

下面介紹這張行爲標籤表如何建模產生。

二、數據開發

本案例基於hadoop平臺的Hive數據倉庫進行開發。

這裏首先確定用戶行爲標籤表的表結構,包含哪些字段,這些字段都是什麼數據類型,用戶屬性表創建代碼如下:

在開發用戶行爲標籤表,將用戶與圖書相關行爲的標籤打在用戶身上的過程中,需要建立系列臨時表,下面分5步詳細介紹用戶個性化標籤表的建立過程。

Step1:建立臨時表獲取圖書和圖書類型的信息

從圖書信息表和圖書類型表中抽取圖書id、圖書名稱、圖書類型等信息建立圖書相關信息的臨時表1,其中圖書信息表和圖書類型維表通過圖書id相關聯。代碼執行如下:

Step2:建立臨時表從日誌數據中提取用戶瀏覽信息

日誌數據對用戶的每一次操作行爲都進行了記錄,對於探究用戶行爲偏好具有非常重要的意義。例如用戶在WEB端瀏覽過某個圖書詳情頁,對應的在WEB日誌表中記錄該次瀏覽行爲,包括時間、日期、頁面url、來源頁url、用戶id、設備id、ip地址等數據。一般商品頁面鏈接中包含有該商品id的參數,通過對url進行解析可以找到該商品的id。

這裏從日誌相關的表中(包括APP日誌表和WEB日誌表)獲取用戶瀏覽圖書對應的頁面鏈接,通過正則表達式匹配出用戶瀏覽圖書頁面鏈接所對應的圖書id,代碼執行如下:

上面這段邏輯中用了嵌套語句,匹配出頁面鏈接中detail/後面的對應該圖書的id參數。

Step3:將用戶行爲產生的圖書標籤插入到用戶行爲標籤表中

用戶行爲標籤表記錄了用戶在平臺上購買、瀏覽、評論、收藏、取消收藏、放入購物車、搜索等各種行爲過程所帶來的標籤。需要開發的表結構包括用戶編碼、標籤id、標籤名稱、用戶行爲類型、標籤類型、行爲日期、行爲次數共計7個字段。開發過程中需要將相關表的數據經過抽取、清洗後插入到用戶行爲標籤表中。關於行爲標籤表的7個字段,各字段的釋義如下:

用戶id(user_id):用戶唯一id;

標籤id(tag_id):圖書id;

標籤名稱(tag_name):圖書名稱;

用戶行爲次數(cnt):用戶當日產生該標籤的次數,如用戶當日瀏覽一本圖書4次,則記錄4;

行爲日期(date_id):產生該條標籤對應日期;

標籤類型(tag_type_id):在本案例中通過與圖書類型表相關聯,取出每本圖書對應的類型,如《鋼鐵是怎麼煉成的》對應“名著”;

用戶行爲類型(act_type_id):即用戶的購買、瀏覽、評論等操作行爲,在本例中通過預設數值1~7來定義用戶對應的行爲類型。1:購買行爲,2:瀏覽行爲,3:評論行爲,4:收藏行爲,5:取消收藏行爲,6:加入購物車行爲,7:搜索行爲;

下面通過7段代碼來講述如何將用戶每一種行爲所帶來的標籤插入到用戶標籤表中。

行爲類型1:用戶購買圖書行爲帶來的標籤,代碼執行如下:

在該段HQL邏輯中,我們從商品訂單中抽取用戶購買圖書行爲帶來的標籤數據放入該表中。對於第8行的邏輯,這裏我們通過將數值1定義爲用戶購買行爲,邏輯寫死。後面當需求查看用戶購買行爲帶來的標籤時只需要添加限制條件“where as act_type_id=1”即可。同理下面幾段業務邏輯中,我們分別爲act_type_id設置值2、3、4、5、6、7來代表用戶相應行爲。

這裏雖然將act_type_id的數值與對應的用戶行爲邏輯寫死,但是每個用戶行爲帶來的標籤都是從與該行爲相關的表中抽取,這裏保證了每類行爲帶來標籤的完整性及便於維護性。

行爲類型2:用戶瀏覽圖書行爲帶來的標籤,代碼執行如下:

行爲類型3:用戶評論圖書行爲帶來的標籤,代碼執行如下:

上述代碼中在解析評論帶來的圖書標籤時,首先需要將商品評論表和商品訂單表關聯(通過訂單id),然後從商品訂單表中找到對應的圖書id。

行爲類型4:用戶收藏圖書行爲帶來的標籤,代碼執行如下:

行爲類型5:用戶取消收藏圖書行爲帶來的標籤,代碼執行如下:

行爲類型6:用戶加入購物車行爲帶來的標籤,代碼執行如下:

行爲類型7:用戶搜索圖書行爲帶來的標籤,代碼執行如下:

到這裏,用戶個性化標籤表的創建工作就完成了。用戶個性化標籤表記錄了用戶在WEB/APP端每一次操作帶來標籤的明細數據,並且該表每天增量更新昨天產生的數據(數倉T+1天更新數據)。

增量更新保證了用戶所有歷史行爲的全量記錄,如用戶甲2017年6月20日瀏覽了圖書《鋼鐵是怎樣煉成的》,標籤表中會在6月20日打上這樣一條記錄,該用戶隔了兩天6月22日又瀏覽了《鋼鐵是怎樣煉成的》,標籤表同樣在6月22日再次打上一條記錄(不會覆蓋歷史數據)。

文末總結一句:做用戶畫像需要對業務、對數據倉庫建模和與業務相關的元數據非常熟悉,對這兩樣非常熟悉才能保障畫像數據質量,畫像的有效性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章