閱讀2077
標籤:
新使用者推薦產品分析推薦系統需要根據使用者的歷史行為和興趣預測用戶未來的行為和興趣。
在當下, 企業拉新成本越來越高, 用戶的選擇面也越來越多, 當新用戶到達之後, 如果不能很快捕捉用戶興趣, 推薦其所感興趣的物品, 很容易造成用戶流失。 所以能否解決好冷開機問題, 是推薦系統非常重要的課題。
達觀資料研發的個性化推薦引擎目前服務了上百家企業, 行業覆蓋了新聞, 視頻, 直播, 文學, 電商等領域, 每天API調用量超過10億, 覆蓋近億線民。 本文主要介紹下達觀資料個性化推薦引擎如何解決新使用者的冷開機問題。
達觀個性化推薦引擎主要通過新使用者屬性挖掘, 秒級模型更新和跨應用資料整合三種方法來解決新用戶的冷開機問題。
1. 新使用者屬性挖掘新使用者, 指的是第一次訪問的用戶, 之前沒有任何的行為, 但這些使用者也是有個性化資訊的。
資訊包括:
1)用戶的存取時間, 白天, 晚上, 還是深夜, 是工作日還是週末;
2)用戶所在的地域,
3)App用戶的手機型號, 是安卓, 還是IOS, 是小米還是華為或者是OPPO;
4)PC用戶的流覽器類型, IE或者Chrome, 解析度1024*768還是800*600;
5)用戶的登錄頁, 首頁還是某個活動的頁面;
6)一些應用在用戶註冊的時候, 還會填寫使用者資訊以及興趣偏好;
7) 更多……
有了使用者屬性這些資訊, 就可以給新用戶進行推薦。 一開始達觀使用的方式是對上面進行進行交叉組合, 通過歷史資料採擷交叉組合後的使用者偏好。 比如深夜, 從北京訪問, 使用小米手機, 通過首頁訪問的新用戶最可能偏好哪些物品。
通過實踐發現, 這種方式可以在一定程度上提升新用戶推薦的效果, 但也有不足之處。 主要有2點:
1) 上面使用者資訊的交叉組合後, 維度會比較高,
2) 對於一些時效性應用場景, 比如資訊類, 該演算法計算出來的往往是過去的文章。
所以達觀個性化推薦引擎進行了升級, 使用機器學習的方式獲得新使用者的偏好。 目前使用的方法是LogicRegression。
該模型中的x就是我們需要輸入的特徵, β是訓練得到的特徵權重。 所以這裡面最核心的是特徵的選擇, 會把上面提到的單維特徵、種組合特徵以及item的標籤、類別都加入模型, 通過訓練得到特徵權重, 再對新用戶進行預測。
2. 使用者模型秒級更新使用者下載新的app或者到一個新的網站, 他往往會根據自己的興趣, 看看裡面的內容, 不會看一眼推薦不喜歡馬上就流失, 達觀的經驗值是大部分用戶願意花2~30分鐘來嘗試新的一個應用或者網站。
傳統的推薦方法, 離線模型定期挖掘(小時級甚至是天極)顯然不能滿足快速給新用戶建模的需求。 達觀個性化推薦引擎使用了offline-nearline-online的三層體系。
達觀資料推薦系統三層體系借鑒了資訊檢索領域思想,採取online-nearline-offline的結構。主要思想是讓最珍貴的資源留給高價值的user和item。
Online模組採用負載均衡,負責及時回應API請求,並返回推薦結果,保證高可靠高併發。
Offline基於hadoop集群對海量資料進行深入挖掘,承擔高負荷的演算法。
Nearline模組主要是填補Online和Offline之間的空白。作為Offline的補充,保證快速回應點擊回饋資料。作為Online的補充運行一些羽量級的演算法。
當新用戶產生了行為,(行為既包括正回饋,如用戶閱讀或者分享了某篇文章 ,也包括負反饋,給用戶展現了某篇文章,用戶沒有點擊),Nearline可以准即時獲取,並且更新使用者模型。
達觀目前可以做到一個秒級的更新,所以用戶下次再訪問推薦結果的時候,就可以推薦給“新”用戶可能感興趣的結果。
3. 跨應用資料整合前面提到達觀資料目前給數百家企業提供推薦服務,覆蓋上億線民。所以如果可以加使用者資料打通,也能很好的解決冷開機的問題。不過不同企業物品的分類,標籤並不一樣,甚至行業也有些不同,所以對用戶的刻畫也都有比較大的差別,如何使用好跨企業的資料,也是一個複雜的工程。
3.1 生成用戶畫像,再進行個性化推薦比較常見的跨應用資料打通的方式是生成使用者畫像,方法是每個應用根據各自的使用者行為,給用戶打上之前定義好的標籤。標籤包括了業務標籤和自然屬性標籤。業務標籤為根據業務資訊打上的標籤,比如娛樂,體育等。自然屬性標籤主要為人口屬性,比如性別,年齡,收入等。新使用者推薦時再根據規則進行匹配,比如男性喜歡體育的推薦仙俠類小說。
這種方式的問題有幾個問題:
1) 由應用打上定義好的標籤往往準確率不會很高。對於自然屬性標籤-性別,經常看美女直播的用戶就是男性?年齡和收入的標籤誤差就更大了。
對於業務標籤,如果定義很細,比如不是娛樂,而是劉德華這樣的屬性,那很難進行應用,比如在推薦小說的場景下,我們獲取用戶是劉德華的粉絲,那應該給他推薦什麼小說呢?而如果定義到娛樂這樣的細微性,那也是損失了很多資訊。比如喜歡鹿晗的用戶和喜歡劉德華的用戶行為往往差別很大,如果都定義為娛樂類,就丟失了他們之間的區別。
2)應用上使用上面標籤時,往往也有很大問題。因為人為的規則往往非常片面,比如上面的例子:男性喜歡體育的推薦仙俠類小說。其實往往不是非常客觀和準確。
3.2 應用內行為直接作為推薦特徵進行匹配上面的做法的本質問題是人為的定義了一個中間屬性層,使得不論是基礎資料映射到中間層,還是具體應用通過中間層資料進行規則匹配,都存在很大的誤差。達觀的做法是去掉這個中間層,通過機器學習方法直接通過基礎資料映射到個性化應用中。
具體方式為:
1)每個應用保留多個維度的使用者資料。包括:
2)將使用者在每個應用中的資料進行整合,形成使用者向量;
3)使用基於用戶的協同過濾方法進行新用戶推薦;
基於用戶的協同過濾的思想是當一個使用者A需要個性化推薦時,可以先找到和他有相似興趣的其他用戶,然後把那些用戶喜歡的、而用戶A沒有聽說過的物品推薦給A。
第一步,找到相似興趣的其他用戶;
第二步,根據相似使用者的喜好進行推薦;
對於新用戶,往往沒有什麼行為,所以通過第一步中的行為進行相似度計算往往沒有結果。所以我們用前面提到的跨應用的資料來解決這個問題。
每個用戶可以通過第一步的結果形成用戶向量,計算用戶間的距離。由於不同應用下不論是類別還是標籤,都不統一,比如有些應用下稱為搞笑,有些稱為笑話,標籤上更加五花八門,比如有些標籤是範冰冰,有些是范爺,需要轉化成詞向量才能方便而準確的計算距離。
先介紹一下詞向量的定義。
一種最簡單的詞向量是one-hot representation,就是用一個很長的向量來表示一個詞,向量的長度是詞典D的大小N,向量的分量只有一個為1,其他全為0,1的位置對應該詞在詞典中的索引。這種詞向量表示有一些缺點:容易受維數災難的困擾。
另一種詞向量是Distributed Representation,它最早是Hinton於1986年提出來的,可以克服one-hot representation的上述缺點。其基本想法是:通過訓練將某種語言中的每個詞映射成一個固定長度的短向量。所有這些向量構成一個詞向量空間,每個向量是該空間中的一個點,在這個空間上引入“距離”,就可以根據詞之間的距離來判斷它們之間的(詞法、語義上的)相似性了。
如何獲取Distributed Representation的詞向量呢?有很多不同的模型可以用來估計詞向量,包括有名的LSA、LDA和神經網路演算法。Word2Vec就是使用度比較廣的一個神經網路演算法實現的詞向量計算工具。
所以在目前場景下,基於Distributed Representation的詞向量可以更好地解決跨應用標籤不一致的問題。為了訓練一個比較好的詞向量,達觀抓取了3000多萬微信文章作為訓練,詞向量本身不容易分辨好壞,所以通過抽查近距離詞來看結果。
通過詞向量的方式,可以正確計算出找字面上看似無關,但含義相似的詞之間的距離,進而可以更加準確地計算用戶之間的距離。
4. 總結本文介紹了達觀資料個性化推薦系統在解決新使用者冷開機問題的實踐經驗,通過新使用者屬性挖掘,秒級模型更新,跨應用資料整合三種方法,可以有效地提高新用戶的推薦效果,當然新技術也在不斷出現,深度學習的興起也給個性化推薦效果的提升帶來了更大的契機和想像空間,達觀資料也在這方面進行不斷探索。
達觀資料推薦系統三層體系借鑒了資訊檢索領域思想,採取online-nearline-offline的結構。主要思想是讓最珍貴的資源留給高價值的user和item。
Online模組採用負載均衡,負責及時回應API請求,並返回推薦結果,保證高可靠高併發。
Offline基於hadoop集群對海量資料進行深入挖掘,承擔高負荷的演算法。
Nearline模組主要是填補Online和Offline之間的空白。作為Offline的補充,保證快速回應點擊回饋資料。作為Online的補充運行一些羽量級的演算法。
當新用戶產生了行為,(行為既包括正回饋,如用戶閱讀或者分享了某篇文章 ,也包括負反饋,給用戶展現了某篇文章,用戶沒有點擊),Nearline可以准即時獲取,並且更新使用者模型。
達觀目前可以做到一個秒級的更新,所以用戶下次再訪問推薦結果的時候,就可以推薦給“新”用戶可能感興趣的結果。
3. 跨應用資料整合前面提到達觀資料目前給數百家企業提供推薦服務,覆蓋上億線民。所以如果可以加使用者資料打通,也能很好的解決冷開機的問題。不過不同企業物品的分類,標籤並不一樣,甚至行業也有些不同,所以對用戶的刻畫也都有比較大的差別,如何使用好跨企業的資料,也是一個複雜的工程。
3.1 生成用戶畫像,再進行個性化推薦比較常見的跨應用資料打通的方式是生成使用者畫像,方法是每個應用根據各自的使用者行為,給用戶打上之前定義好的標籤。標籤包括了業務標籤和自然屬性標籤。業務標籤為根據業務資訊打上的標籤,比如娛樂,體育等。自然屬性標籤主要為人口屬性,比如性別,年齡,收入等。新使用者推薦時再根據規則進行匹配,比如男性喜歡體育的推薦仙俠類小說。
這種方式的問題有幾個問題:
1) 由應用打上定義好的標籤往往準確率不會很高。對於自然屬性標籤-性別,經常看美女直播的用戶就是男性?年齡和收入的標籤誤差就更大了。
對於業務標籤,如果定義很細,比如不是娛樂,而是劉德華這樣的屬性,那很難進行應用,比如在推薦小說的場景下,我們獲取用戶是劉德華的粉絲,那應該給他推薦什麼小說呢?而如果定義到娛樂這樣的細微性,那也是損失了很多資訊。比如喜歡鹿晗的用戶和喜歡劉德華的用戶行為往往差別很大,如果都定義為娛樂類,就丟失了他們之間的區別。
2)應用上使用上面標籤時,往往也有很大問題。因為人為的規則往往非常片面,比如上面的例子:男性喜歡體育的推薦仙俠類小說。其實往往不是非常客觀和準確。
3.2 應用內行為直接作為推薦特徵進行匹配上面的做法的本質問題是人為的定義了一個中間屬性層,使得不論是基礎資料映射到中間層,還是具體應用通過中間層資料進行規則匹配,都存在很大的誤差。達觀的做法是去掉這個中間層,通過機器學習方法直接通過基礎資料映射到個性化應用中。
具體方式為:
1)每個應用保留多個維度的使用者資料。包括:
2)將使用者在每個應用中的資料進行整合,形成使用者向量;
3)使用基於用戶的協同過濾方法進行新用戶推薦;
基於用戶的協同過濾的思想是當一個使用者A需要個性化推薦時,可以先找到和他有相似興趣的其他用戶,然後把那些用戶喜歡的、而用戶A沒有聽說過的物品推薦給A。
第一步,找到相似興趣的其他用戶;
第二步,根據相似使用者的喜好進行推薦;
對於新用戶,往往沒有什麼行為,所以通過第一步中的行為進行相似度計算往往沒有結果。所以我們用前面提到的跨應用的資料來解決這個問題。
每個用戶可以通過第一步的結果形成用戶向量,計算用戶間的距離。由於不同應用下不論是類別還是標籤,都不統一,比如有些應用下稱為搞笑,有些稱為笑話,標籤上更加五花八門,比如有些標籤是範冰冰,有些是范爺,需要轉化成詞向量才能方便而準確的計算距離。
先介紹一下詞向量的定義。
一種最簡單的詞向量是one-hot representation,就是用一個很長的向量來表示一個詞,向量的長度是詞典D的大小N,向量的分量只有一個為1,其他全為0,1的位置對應該詞在詞典中的索引。這種詞向量表示有一些缺點:容易受維數災難的困擾。
另一種詞向量是Distributed Representation,它最早是Hinton於1986年提出來的,可以克服one-hot representation的上述缺點。其基本想法是:通過訓練將某種語言中的每個詞映射成一個固定長度的短向量。所有這些向量構成一個詞向量空間,每個向量是該空間中的一個點,在這個空間上引入“距離”,就可以根據詞之間的距離來判斷它們之間的(詞法、語義上的)相似性了。
如何獲取Distributed Representation的詞向量呢?有很多不同的模型可以用來估計詞向量,包括有名的LSA、LDA和神經網路演算法。Word2Vec就是使用度比較廣的一個神經網路演算法實現的詞向量計算工具。
所以在目前場景下,基於Distributed Representation的詞向量可以更好地解決跨應用標籤不一致的問題。為了訓練一個比較好的詞向量,達觀抓取了3000多萬微信文章作為訓練,詞向量本身不容易分辨好壞,所以通過抽查近距離詞來看結果。
通過詞向量的方式,可以正確計算出找字面上看似無關,但含義相似的詞之間的距離,進而可以更加準確地計算用戶之間的距離。
4. 總結本文介紹了達觀資料個性化推薦系統在解決新使用者冷開機問題的實踐經驗,通過新使用者屬性挖掘,秒級模型更新,跨應用資料整合三種方法,可以有效地提高新用戶的推薦效果,當然新技術也在不斷出現,深度學習的興起也給個性化推薦效果的提升帶來了更大的契機和想像空間,達觀資料也在這方面進行不斷探索。