1. 程式人生 > >推薦系統那點事 —— 什麼是使用者畫像?

推薦系統那點事 —— 什麼是使用者畫像?

使用者畫像在大資料分析中是一種很有用的系統,它可以各種不同的系統中,起到很關鍵的作用。比如搜尋引擎、推薦系統、內容系統等等,可以幫助應用實現千人千面、個性化、精準等的效果。

下面將從幾個方面來說一下,什麼是使用者畫像,主要的內容來自《使用者網路行為畫像分析與內容推薦應用》這本書。

  • 應用場景
  • 資料來源
  • 特性
  • 建模
  • 群體畫像
  • 畫像的儲存
  • 畫像的查詢
  • 畫像的更新

應用場景

下面舉幾個很典型的場景:

搜尋引擎

在搜尋的時候考慮使用者的畫像標籤,返回使用者感興趣的內容。比如同一個關鍵字“諸葛亮”,王者榮耀的愛好者搜尋的時候應該返回“諸葛亮”相關的內容,比如如何加銘文、如何五殺等等;而歷史愛好者搜尋的時候,應該返回三國相關的內容。

推薦系統

推薦系統可以根據使用者的喜好和特徵,也就是使用者的畫像,推薦相關的內容。比如,給一個使用者定位的畫像是美妝達人,那麼就應該給她多推送一些面膜護膚之類的東西,而不是推一堆零食。

內容推薦

比如新聞類的產品或者讀書類的產品,根據使用者的喜好不同,展現不同的內容。

資料來源

使用者畫像的資料來源主要包括兩個方面:

  • 屬性資料,這部分資料一般是使用者的註冊資訊,也可以是從其他資料中分析得出的。比如生日、性別、住址、愛好等
  • 行為資料,這部分資料一般都是使用者的訪問日誌記錄的行為資料。比如常用的一些後端日誌資料、前端埋點資料等等。

通過這兩部分的資料,就能刻畫出使用者的畫像,其實就是給使用者打上一個標籤,比如高富帥、白富美等等。

特性

使用者畫像具有很明顯的動態性時空區域性性

  • 在使用者的資料中,屬性資訊一般不會改變;但是行為資料是隨時會發生變化的,比如使用者看了一個新的電影、閱讀了新的文章等。這時它的資料就是動態變化的,這部分資料應該動態的更新到使用者的畫像上。
  • 時間上,使用者的一些需求是很快會發生變化的,比如最近下雨,使用者想要買一把傘,如果幾天後才捕捉到使用者的需求,此時天都晴了;另一方面,空間上,使用者在不同的領域喜好也不同,可能在新聞領域使用者是一個嚴重的軍事迷,但是在網購時,又是一個小清新,因此需要考慮到不同空間使用者不同的需求場景,刻畫對應的畫像。

使用者畫像建模

使用者的畫像分為定量畫像和定性畫像,網上也沒有找到這兩種明確的定義。不過參考1的文章中是這樣定義的:

  • 定性畫像,是指在小規模的資料中分析出的使用者的畫像,比如問卷調查,訪談等等
  • 定量畫像,是在大規模的資料中分析的,比如日誌等

這一塊的內容,理解的並不好....以後會多加補充

基於標籤的畫像

在使用者的定性畫像中,標籤化是核心。即把使用者的畫像變成一個一個的標籤,那麼在考慮標籤化的同時,需要注意下面的幾個方面:

  • 如何定義標籤?標籤的名稱、類別、取值
  • 如何解釋標籤?標籤的語義描述
  • 如何推理標籤?標籤實現的過程
  • 如何驗證標籤?定義是否合理,推導是否合理

基於知識的畫像(個人理解)

知識工程,在百科中的解釋是:

“知識工程”的產生,把人類所專有的文化、科學、知識、思想等同現代機器聯絡起來,形成了人——機系統。

即需要領域專家(有經驗的老業務)配合來做機器智慧的分析。

知識工程的大體過程為:知識的獲取-->驗證-->表示-->推論-->解釋和理由

在使用者畫像中,就是配合使用者和物品的屬性,建立對應關係,這部分的對應關係需要知識專家進行鑑別推理和構建。比如有一些“專家”會把電影分為幾類,愛情片、動作片、科幻片、恐怖片,這些都是需要領域專家來設定的,而不是靠人工分層分類1分類2分類3...

構建的過程

在構建使用者畫像時,大致可以按照下面的步驟:

  • 構建領域詞彙:不同的領域會有不同專業的詞彙,描繪人的、電影的、書籍的詞彙都是不同的。這部分可以參考其他同類的產品,如果是獨創的領域,那麼就需要這個領域資深的“玩家”來定義了。
  • 確定分類之間的層次:畫像也是有層次的,比如電影的裡面的人分為演員、導員、觀眾等。需要對標籤(畫像)歸類處理。
  • 定義屬性:為不同的畫像定義屬性,包括物件屬性和數值屬性。比如在電影的場景中,物件屬性是上映的時間、導演,數值屬性是觀看量、時長等。
  • 定義例項:例項就是最終的畫像,是由分類和屬性組成的。
  • 定義約束:這個是描述一個物品的規則,比如電影是由(名稱、型別、時長、導演、主演)等等屬性組成的,那麼任何一個電影都可以由這種方式來定義。

群體使用者畫像

使用者畫像是用來描述目標使用者的畫像,而群體畫像則是對一類相似的使用者的描述。比如成熟穩重型、可愛蘿莉型等。

那麼如何定義群體畫像呢?可以按照下面的步驟:

  • 獲取使用者畫像
  • 計算使用者畫像的相似度
  • 使用者畫像聚類
  • 群體使用者畫像生成

定義使用者畫像之間的相似度

計算使用者畫像之間的相似度,可以參考下面的公式:

其中wk表示第k個畫像的權重,比如在電影裡面,使用者喜歡的電影型別比重要比電影的時長重要的多,在計算相似度的時候權重也應該更大一些。

計算相似度有很多中方法,比如:歐氏距離曼哈頓距離夾角餘弦皮爾遜相關係數傑卡德距離等,每一種都有自己適合的場景。

畫像聚類

畫像聚類的方式有很多,比如K-means,原理就是隨機幾個點,看各個點的資料跟哪個點接近,就歸為哪一類。然後不斷調整中心點,達到最終聚合的效果。

使用者畫像儲存

使用者畫像有很多中表示的方法,比如:

  • 關鍵詞法,用一對的關鍵詞描述畫像,這種方式最容易理解
  • 評分矩陣法,用二維矩陣的方式,通過評分表示。這種在協同過濾中很常見
  • 向量空間表示法,這種是基於向量的方式描述畫像
  • 本體表示法,不太懂

不同的表示方法,對於儲存的方式來說,也會不同。

一般使用者畫像常用的儲存引擎有:

  • 關係型資料庫,通過中間表的方式儲存使用者和畫像之間的關係,有點就是查詢快、缺點就是資料量大的時候扛不住。
  • NoSql資料庫,常見的就是鍵值資料庫(Redis)列資料庫(Hbase)文件資料庫(mongodb)圖資料庫(neo4j)等,每種資料庫都有自己適合的場景。
  • 資料倉庫,資料倉庫是一種面向主題的儲存,可以更好的解決領域分析的問題。而且它保留了資料的時間變化,對於分析歷史來說,非常有幫助。但是不適合實時查詢。

使用者畫像的查詢

使用者畫像的場景下:

  • 1 對於畫像的查詢要求是高併發、高聚合,比如會有很多人查詢它自己的畫像;也會通過一個畫像屬性,查詢所有相關的人。
  • 2 在畫像的查詢中,大量的查詢都是重複的,因此可以著重考慮快取機制。

使用者畫像更新

在畫像的更新方面,需要考慮的問題是:

  • 1 如何實時獲取變化的畫像?
  • 2 如何設定合適的更新觸發條件?
  • 3 如何設計高效的演算法?

對於獲取使用者的資訊,可以把使用者逇資訊分為靜態資訊資料和動態資訊資料,

更新的機制

  • 一種是設定更新的條件,比如購買達到1w元,立馬升級成VIP標識
  • 一種是設定固定的時間週期,更新畫像。這種最簡單,直接沒天凌晨跑一個畫像的更新任務就行了。
  • 另一種是從增量的資料中計算畫像,然後對比舊的資料,考慮是否更新使用者的畫像。

以上就是使用者畫像的基本內容,也是《使用者網路行為畫像分析與內容推薦應用》這本書的第一部分,後續會更新其他的部分。