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