1. 程式人生 > >使用者畫像—計算使用者偏好標籤及資料指標與表結構設計

使用者畫像—計算使用者偏好標籤及資料指標與表結構設計

一、使用者畫像—計算使用者偏好標籤

下面介紹如何計算使用者的偏好標籤。

在上一篇寫使用者畫像的文章 “使用者畫像—打使用者行為標籤”中,主要講了如何對使用者的每一次操作行為、業務行為進行記錄打上相應的標籤。在這篇部落格中,主要講如何對這些明細標籤進行計算以及偏好的產品、內容的類目。

關於使用者標籤權重的計算,在這篇文章裡面講過了:

使用者畫像之標籤權重演算法

這裡再詳細介紹一下:

使用者標籤權重 = 行為型別權重 × 時間衰減 × 使用者行為次數 × TF-IDF計算標籤權重

公式中各引數的釋義如下:

  • 行為型別權重:使用者瀏覽、搜尋、收藏、下單、購買等不同行為對使用者而言有著不同的重要性,一般而言操作複雜度越高的行為權重越大。該權重值一般由運營人員或資料分析人員主觀給出;

  • 時間衰減:使用者某些行為受時間影響不斷減弱,行為時間距現在越遠,該行為對使用者當前來說的意義越小;

  • 行為次數:使用者標籤權重按天統計,使用者某天與該標籤產生的行為次數越多,該標籤對使用者的影響越大;

  • TF-IDF計算標籤權重:每個標籤的對使用者的重要性及該標籤在全體標籤中重要性的乘積得出每個標籤的客觀權重值;

為計算使用者偏好標籤,需要在使用者行為標籤的基礎上計算使用者行為標籤對應的權重值,而後對同類標籤做權重彙總,算出使用者偏好的標籤。關於使用者行為標籤如何打,在這篇部落格裡面有介紹過了

使用者畫像—打使用者行為標籤

下面介紹如何在使用者行為標籤表的基礎上加工使用者偏好標籤:

 

1、使用者標籤權重表結構設計

 

欄位定義:

  • 使用者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:搜尋行為;

 

2、在使用者行為標籤基礎上加工權重表

加工標籤權重表時,需要根據使用者不同行為對應的權重建立一個權重維表:

向維表中插入資料:

 

3、對每個使用者偏好的每個標籤加總求權重值,對權重值做倒排序,取top N

 

二、使用者畫像—資料指標與表結構設計

本段文章介紹一下畫像中需要開發的資料指標與開發過程中表結構的設計。

首先介紹畫像開發的資料指標,畫像開發過程中通用類的指標體系包括使用者屬性類、使用者行為標籤類、使用者活躍時間段類、使用者消費能力類、使用者偏好類等

 

資料指標體系

使用者屬性指標

使用者屬性指標根據業務資料來源,儘可能全面地描述使用者基礎屬性,這些基礎屬性值是短期內不會有改變的。如年齡、性別、手機號歸屬地、身份證歸屬地等

 

 

 

使用者登入活躍指標

看使用者近期登入時間段、登入時長、登入頻次、常登陸地等指標

 

使用者消費能力指標

看使用者的消費金額、消費頻次、最近消費時間。進一步結合使用者登入活躍情況,可以對使用者做RFM分層。

 

使用者流失層級

根據使用者的活躍度及消費情況,判斷使用者的流失意向。可及時對有流失趨向的使用者做營銷召回

 

使用者年齡段劃分

在做營銷活動或站內推送時,可對不同年齡段做針對性運營

 

使用者行為標籤

記錄使用者在平臺上每一次操作行為,及該次行為所帶來的標籤。後續可根據使用者的行為標籤計算使用者的偏好標籤,做推薦和營銷等活動

 

表結構設計

對於畫像資料的儲存,除了使用者屬性這種基本上短期不會有變化的資料,其他相關資料的更新頻率一般都比較高,為周更新或日更新

畫像資料更新較為頻繁,通常使用分割槽來將資料從物理上轉移到離使用者最近的地方。

一般對日期欄位進行分割槽,當然事實上分割槽是為了優化查詢效能,否則使用資料的使用者也不需要關注這些欄位是否分割槽。

例如說建立一個使用者行為標籤表:

 

CREATE TABLE userprofile( user_id    string, tag_id    string, tag_name    string, cnt    string, act_type_id    string, tag_type_id    string ) PARTITION BY (date_id string);

分割槽表改變了Hive對資料的儲存方式,如果沒做分割槽,建立的這個表目錄為:

 

hdfs://master_server/user/hive/warehouse/userprofile

建立日期分割槽後,Hive可以更好地反映分割槽結構子目錄:

 

hdfs://master_server/user/hive/warehouse/userprofile/date_id='2018-05-01'

在userprofile表下面,每個日期分割槽的資料可以儲存截止到當日的全量歷史資料,方便使用者查詢。