推送系統(tǒng)從0到1(八):個(gè)性化精準(zhǔn)推送的實(shí)現(xiàn)
在上一篇,給大家介紹了實(shí)現(xiàn)精準(zhǔn)推送的第一步:建立用戶畫像,大家可以回顧看看。完成用戶畫像的建立后,想要實(shí)現(xiàn)精準(zhǔn)推送的簡(jiǎn)單很多。本篇將會(huì)給大家介紹一些基礎(chǔ)的推薦算法,并以其中基于物品的協(xié)同過濾算法為例,詳細(xì)講解如何找到用戶最感興趣的內(nèi)容,從而實(shí)現(xiàn)個(gè)性化精準(zhǔn)推送。文中介紹的推薦算法大部分源自于《推薦系統(tǒng)實(shí)踐》一書,書中還詳細(xì)講述的通過分析用戶行為,形成用戶標(biāo)簽并構(gòu)建用戶畫像的詳細(xì)過程,大家可以結(jié)合書中的要點(diǎn)和本篇實(shí)踐一起了解。
一. 幾種推薦算法
1. 基于內(nèi)容推薦算法
基于用戶感興趣的物品A,找到和A內(nèi)容信息相近的物品B
(1)找到物品A的內(nèi)容信息
(2)找到與內(nèi)容信息相近的物品B
運(yùn)用:這種推薦算法多數(shù)運(yùn)用在簡(jiǎn)單的推薦列表上,當(dāng)用戶看了物品A立刻展示推薦關(guān)聯(lián)的物品B,不需要通過大量計(jì)算反饋。但由于其局限性并不能精準(zhǔn)推薦出用戶所喜歡的內(nèi)容。
2. 基于用戶的協(xié)同過濾算法(UserCF)
這種算法給用戶推薦和他興趣相似的其他用戶喜歡的物品。
基于用戶的協(xié)同過濾算法主要包括兩個(gè)步驟:
(1)找到和目標(biāo)用戶興趣相似的用戶集合。
(2)找到這個(gè)集合中的用戶喜歡的,且目標(biāo)用戶沒有聽說過的物品推薦給目標(biāo)用戶。
運(yùn)用:UserCF的推薦結(jié)果著重于反映和用戶興趣相似的小群體的熱點(diǎn),即更社會(huì)化,反映了用戶所在的小型興趣群體中物品的熱門程度
3. 基于物品的協(xié)同過濾算法(ItemCF)
這種算法給用戶推薦和他之前喜歡的物品相似的物品。
基于物品的協(xié)同過濾算法主要分為兩步:
(1)計(jì)算物品之間的相似度。
(2)運(yùn)用:ItemCF的推薦結(jié)果著重于維系用戶的歷史興趣,即更個(gè)性化,反映了用戶自己的興趣傳承
4. 隱語義模型算法(LFM)
通過隱含特征聯(lián)系用戶興趣和物品
LFM是一種基于機(jī)器學(xué)習(xí)的方法,具有比較好的理論基礎(chǔ)。這個(gè)方法和基于鄰域的方法相比有更強(qiáng)的理論基礎(chǔ)、離線計(jì)算空間、時(shí)間的復(fù)雜度,并且可以實(shí)現(xiàn)在線實(shí)時(shí)推薦。
5. 其他推薦算法
(1)基于圖的推薦算法
其基本思想是將用戶行為數(shù)據(jù)表示為一系列的二元組。基于用戶行為二分圖,給用戶u推薦物品,可以轉(zhuǎn)化為計(jì)算用戶頂點(diǎn)u和與所有物品頂點(diǎn)i之間的相關(guān)性,然后取與用戶沒有直接邊相連的物品,按照相關(guān)性的高低生成推薦列表。
(2)基于關(guān)聯(lián)規(guī)則的推薦
反映一個(gè)事物與其他事物之間的相互依存性和關(guān)聯(lián)性,常用于實(shí)體商店或在線電商的推薦系統(tǒng):通過對(duì)顧客的購(gòu)買記錄數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)規(guī)則挖掘,最終目的是發(fā)現(xiàn)顧客群體的購(gòu)買習(xí)慣的內(nèi)在共性。
(3)基于知識(shí)推薦
使用用戶知識(shí)和產(chǎn)品知識(shí), 通過推理什么產(chǎn)品能滿足用戶需求來產(chǎn)生推薦。這種推薦系統(tǒng)不依賴于用戶評(píng)分等關(guān)于用戶偏好的歷史數(shù)據(jù), 故其不存在冷啟動(dòng)方面的問題?;谥R(shí)的推薦系統(tǒng)響應(yīng)用戶的即時(shí)需求, 當(dāng)用戶偏好發(fā)生變化時(shí)不需要任何訓(xùn)練。
二. 選擇適合的算法
根據(jù)使用場(chǎng)景選擇不同的算法,如果是為簡(jiǎn)單的物品或者商品詳情頁(yè)底部設(shè)計(jì)推薦功能,即可使用“基于內(nèi)容推薦算法”,根據(jù)當(dāng)前物品的內(nèi)容信息推薦相關(guān)的物品,當(dāng)然這個(gè)并非是個(gè)性化推薦,但確實(shí)使用最廣的一種推薦方式。若你的網(wǎng)站是做知識(shí)培訓(xùn)的,那可以嘗試構(gòu)建基于知識(shí)的推薦,這種推薦方式根據(jù)用戶需求及用戶所處知識(shí)階段進(jìn)行推薦,更貼合所在場(chǎng)景。
而本篇我主要介紹“基于物品的協(xié)同過濾算法”,這個(gè)算法與“基于用戶的協(xié)同過濾算法”共同被稱為“基于鄰域的協(xié)同過濾算法”。下面,我們對(duì)這類算法進(jìn)行簡(jiǎn)單的介紹。
1. 基于鄰域的協(xié)同過濾算法
從字面上理解“鄰域”在數(shù)學(xué)上指的是“鄰域是一個(gè)特殊的區(qū)間,以點(diǎn)a為中心點(diǎn)任何開區(qū)間稱為點(diǎn)a的鄰域,記作U(a)”,我們可以簡(jiǎn)單的理解為某個(gè)集合點(diǎn)中的左右相鄰區(qū)間。而“協(xié)同過濾”在百度百科上解釋為“利用某興趣相投、擁有共同經(jīng)驗(yàn)之群體的喜好來推薦用戶感興趣的信息”。那么“基于鄰域的協(xié)同過濾算法”總結(jié)一下就是基于某個(gè)維度的相鄰區(qū)間中利用興趣相投或共同經(jīng)驗(yàn)的群體的喜好,找到用戶感興趣的信息。
從某個(gè)維度,我們常用用戶或者物品所組成的集合區(qū)間,所以基于鄰域的算法分為兩大類,一類是基于用戶的協(xié)同過濾算法,另一類是基于物品的協(xié)同過濾算法。而基于鄰域的算法是推薦系統(tǒng)中最基本的算法,該算法不僅在學(xué)術(shù)界得到了深入研究,而且在業(yè)界得到了廣泛應(yīng)用。非常多的個(gè)性化推薦算法多使用或混合使用了基于領(lǐng)域的協(xié)同過濾算法??赡芤恍┐髲S會(huì)在這個(gè)算法的基礎(chǔ)上加入機(jī)器學(xué)習(xí)的理念,克服這個(gè)算法本身的缺點(diǎn)。
2. 用戶畫像與基于鄰域的推薦算法
大家一定記得上一篇向大家介紹了用戶畫像,我們通過用戶行為分析,拆解成用戶標(biāo)簽,并組合成了用戶畫像。而利用該用戶畫像,我們就可以使用基于鄰域的推薦算法,因?yàn)檫@個(gè)算法最核心的一步就是找到用戶的興趣點(diǎn)。
而我們的用戶畫像就可以滿足這個(gè)要求,我們可以通過用戶畫像計(jì)算用戶之前的相似度,再推薦另外一個(gè)用戶感興趣的內(nèi)容,這就是“基于用戶的協(xié)同過濾算法”;我們也可以通過用戶畫像計(jì)算出用戶感興趣的物品相似的物品,這就是“基于物品的協(xié)同過濾算法”。
再者我們可以混合一起使用。不管怎么說,我在上一篇就提到了構(gòu)建用戶畫像的好處,此時(shí)無論選擇哪種鄰域推薦算法均可使用。而對(duì)于我自己,這次選擇了選擇給大家介紹的是“基于物品的協(xié)同過濾算法”。如果對(duì)其他算法也有興趣,強(qiáng)烈推薦大家可以看看《推薦系統(tǒng)實(shí)踐》一書。
圖片引用自《推薦系統(tǒng)實(shí)踐》 項(xiàng)亮 編著
3. 基于物品的協(xié)同過濾算法
基于物品的協(xié)同過濾算法是目前業(yè)界應(yīng)用最多的算法。無論是亞馬遜網(wǎng),還是Netflix、Hulu、YouTube,其推薦算法的基礎(chǔ)都是該算法。我在前面提到,這個(gè)算法主要思路是用戶推薦和他之前喜歡的物品相似的物品。在上一篇文章,我們已經(jīng)把用戶之前的瀏覽行為都記錄下來,通過分析和標(biāo)簽化,形成了用戶畫像。那么其實(shí)我們已經(jīng)完成了第一步,掌握用戶之前喜歡的內(nèi)容。那么第二步即使計(jì)算物品相似程度,找到最為相似的物品形成個(gè)性化的推薦,再通過推送系統(tǒng)觸達(dá)用戶。下面為大家詳細(xì)講解計(jì)算的過程:
- 找到用戶感興趣的物品
- 與推薦的物品列表逐個(gè)物品進(jìn)行相似度計(jì)算
- 選擇相似度最高的物品,并推送給用戶
首先如何找到用戶感興趣的物品,在上一篇我們是通過把內(nèi)容標(biāo)簽化,并把標(biāo)簽賦予用戶。那么我們從用戶畫像中取出一組與推薦物品相關(guān)的用戶標(biāo)簽。即想給用戶推薦商品,那么取出與商品相關(guān)的一組用戶標(biāo)簽,例如是用戶A(茶葉,鐵觀音,清香,100-200元/斤,產(chǎn)地福建,2018新茶,….)。然后我們?cè)谌〕龃扑]的物品列表,以同樣標(biāo)簽化的方式整理,如下圖:
然后,我們?cè)儆?jì)算用戶標(biāo)簽與物品標(biāo)簽之間的相似度,找到與用戶標(biāo)簽最為相似的物品。此時(shí)我們會(huì)使用余弦公式進(jìn)行計(jì)算。余弦公式計(jì)算的結(jié)果會(huì)是余弦夾角,夾角越小則相似度越高,通過計(jì)算我們就能用余弦夾角來反應(yīng)相似度關(guān)系。
4. 余弦相似公式的運(yùn)用
向量的余弦相似度公式和我們?cè)谌呛瘮?shù)中學(xué)的余弦定理有所不同,但我們?cè)跀?shù)學(xué)中計(jì)算向量夾角的時(shí)候就學(xué)習(xí)過。當(dāng)有兩個(gè)向量a和b時(shí),此時(shí)我們計(jì)算這兩個(gè)向量的夾角會(huì)使用到“向量的余弦值等于向量的乘積/向量絕對(duì)值的乘積”
若把向量拓展到多維度A=(A1,A2,A3,…An),B=(B1,B2,B3,…Bn),此時(shí)獲得如下余弦相似度公式
把公式運(yùn)用到我們上述情況中,則用戶的標(biāo)簽則是向量A,物品的標(biāo)簽則是向量B。我們可以通過計(jì)算余弦值,確定相似度。余弦相似度公式還常常運(yùn)用于計(jì)算文本相似度。將兩個(gè)文本根據(jù)他們?cè)~,建立兩個(gè)向量,計(jì)算這兩個(gè)向量的余弦值,就可以知道兩個(gè)文本在統(tǒng)計(jì)學(xué)方法中他們的相似度情況。實(shí)踐證明,這是一個(gè)非常有效的方法。那么下面我們舉個(gè)例子具體嘗試下。假設(shè)用戶要買房,那么我們可以推薦什么房子給他。
為大家詳細(xì)講述下計(jì)算方法:
- 列出用戶的標(biāo)簽和用于比較物品的標(biāo)簽。
- 列出所有詞,即用戶標(biāo)簽和物品標(biāo)簽中所有的詞,重復(fù)/同范圍的詞只需列一遍,不同的詞需要逐個(gè)列出。
- 計(jì)算詞頻,即用戶標(biāo)簽和物品標(biāo)簽在所有詞中出現(xiàn)的次數(shù),若出現(xiàn)則為1次,未出現(xiàn)則為0次。如所有詞中“成屋”,在用戶標(biāo)簽中出現(xiàn),則用戶的詞頻為1;在物品中未出現(xiàn),則物品的詞頻為0。
- 把用戶和物品的詞頻組成向量A和向量B
- 代入余弦相似公式計(jì)算向量A與向量B的夾角,結(jié)果即為相似度。
下面我用excel為大家模擬計(jì)算上圖的結(jié)果:
此致我們完成了對(duì)一組用戶與物品的相似度計(jì)算,后續(xù)只需要把物品1輪流替換成需要比對(duì)的物品即可,完成后得到用戶與一組物品的相似度。大家其實(shí)算下來有感覺到,余弦相似公式在計(jì)算標(biāo)簽的運(yùn)用上視乎有些“浪費(fèi)”,因?yàn)椴还茉趺此悖脩舻脑~頻只會(huì)是1和0。所以可以看出余弦相似公式在計(jì)算文章內(nèi)容的相似度或者某些元素非可控集合的相似度中更能突顯出其價(jià)值。文章中某個(gè)關(guān)鍵詞出現(xiàn)5次,那么該關(guān)鍵詞的詞頻將會(huì)是5,計(jì)算結(jié)果將會(huì)大大的不同。
那么對(duì)于我們上面介紹的方法,我們也是可以把詞頻拿來靈活運(yùn)用的,因?yàn)樵~頻就類似于權(quán)重,我們可以通過調(diào)整詞頻來達(dá)到提高某個(gè)標(biāo)簽的權(quán)重。
如上述情況,用戶對(duì)城市極為敏感,那么我們可以把城市的詞頻從1提升到2或3。如果是某些必須相同的標(biāo)簽,我們可以在提供匹配的物品列表中先進(jìn)行篩選。其中可以靈活運(yùn)用的方式還有很多很多,等待大家的挖掘和探索。
三. 實(shí)踐中對(duì)算法的改造
細(xì)心的朋友可能會(huì)發(fā)現(xiàn),我這里使用的方法和傳統(tǒng)意義上的基于物品的協(xié)同過濾算法有所不同,傳統(tǒng)基于物品的協(xié)同過濾算法不會(huì)直接使用用戶標(biāo)簽,而是提前維系好物品與相似物品之前的相似度關(guān)聯(lián)。而再用用戶行為判斷用戶對(duì)當(dāng)前物品的喜好度。
也就是說,傳統(tǒng)的基于物品協(xié)同過濾算法,即便沒有用戶,物品與推薦的物品就已經(jīng)有了相似度推薦的關(guān)系存在。
這也是ItemCF非常大的缺點(diǎn)之一:如果網(wǎng)站的物品很多,那么計(jì)算物品相似度矩陣代價(jià)很大。
而我使用的是改造版本,即是把物品賦予用戶標(biāo)簽的與物品計(jì)算相似度。這樣的好處是我不用維系龐大的物品相似度關(guān)系表,同時(shí)具有更大的靈活性。當(dāng)用戶產(chǎn)生瀏覽行為后,根據(jù)分析用戶的標(biāo)簽,再進(jìn)行相似度計(jì)算。
這個(gè)時(shí)候大家也就會(huì)有疑問,如果沒有提前準(zhǔn)備好物品相似度矩陣。那么用戶在第一次進(jìn)來的時(shí)候,或者用戶行為不足以分析的時(shí)候。我們就無法給用戶進(jìn)行推薦了。確實(shí)是的,這也是這個(gè)方法存在的缺陷,在推薦系統(tǒng)中稱為“冷啟動(dòng)”。
四. 推薦系統(tǒng)冷啟動(dòng)問題
正如我上面描述的情況,用戶第一次使用或者用戶行為不足的時(shí)候,我們無法通過用戶行為計(jì)算出用戶的標(biāo)簽,也講無法通過基于鄰域的協(xié)同過濾算法進(jìn)行推薦/個(gè)性化推送。那么此時(shí)我們?cè)撛趺唇鉀Q這個(gè)問題呢?其實(shí)冷啟動(dòng)分為三種,即為用戶冷啟動(dòng),物品冷啟動(dòng),系統(tǒng)冷啟動(dòng)。我們剛才所描述的問題是用戶冷啟動(dòng),也是最常見的一種。
1. 用戶冷啟動(dòng)
若要解決用戶冷啟動(dòng)問題,我們只能利用其他方式獲得用戶的興趣,暫時(shí)替代用戶的行為。大家一定記得上一篇我在講述獲取用戶畫像的原始數(shù)據(jù)中提到過,我們可以獲取用戶的信息。那么對(duì)于這個(gè)問題我們就可以用以下的方法:
- 使用用戶信息:例如用戶注冊(cè)信息等
- 使用合適的物品啟動(dòng)用戶興趣:用合適的物品去試探用戶興趣
當(dāng)以上方式獲得的信息再進(jìn)過算法推薦給用戶后,用戶只要產(chǎn)生了交互,那么暨產(chǎn)生了用戶行為。
2. 物品冷啟動(dòng)
物品冷啟動(dòng)常見的場(chǎng)景是將新的物品推薦給可能對(duì)它感興趣的用戶這一問題,新上架的物品或信息如何能快速投遞給感興趣的用戶,我們可以通過以下兩個(gè)方法解決:
- 新上架的物品運(yùn)用于基于物品過濾協(xié)同算法,并提高權(quán)重
- 利用物品內(nèi)容信息,提取內(nèi)容的關(guān)鍵詞(TF-IDF算法),再通過物品推算算法呈現(xiàn)。
3. 系統(tǒng)冷啟動(dòng)
系統(tǒng)冷啟動(dòng)多見于新開發(fā)的網(wǎng)站上設(shè)計(jì)個(gè)性化推薦系統(tǒng),此時(shí)物品/內(nèi)容少,用戶少。很多算法無法奏效。那么在這個(gè)時(shí)候,只能通過專家作用,即通過人工標(biāo)記的方式制定類別和標(biāo)簽,人工分類,人工制定權(quán)重等方式進(jìn)行。后續(xù)用戶行為及物品產(chǎn)出后,即可更換替代。
4. 實(shí)現(xiàn)個(gè)性化精準(zhǔn)推算
上述講了這么多都是如何通過用戶畫像找到用戶感興趣的內(nèi)容/物品,那么終于來到精準(zhǔn)推送這一步了。用戶已經(jīng)選定好了,用戶喜歡的物品/內(nèi)容也選好了。那么這個(gè)時(shí)候就可以使用推送系統(tǒng)把內(nèi)容觸達(dá)用戶了。在這個(gè)過程中所需要注意的是以下幾個(gè)問題:
- 推送系統(tǒng)的用戶和用戶畫像的用戶是一致的,即不能算出推送內(nèi)容卻找不到推給誰。這個(gè)時(shí)候回顧第二篇,使用設(shè)備號(hào)作為網(wǎng)站對(duì)用戶的唯一標(biāo)示就顯得更為重要的。
- 選擇活躍用戶推送,冷啟動(dòng)實(shí)現(xiàn)難度較高。所以盡量在用戶產(chǎn)生瀏覽行為后的計(jì)算結(jié)果推送給用戶,這樣能避免推送內(nèi)容不是用戶習(xí)慣的情況。
- 推送文案可以參考用戶標(biāo)簽,既然用戶標(biāo)簽是通過用戶瀏覽行為計(jì)算出來的。那么用戶對(duì)標(biāo)簽內(nèi)容會(huì)更為敏感。也許推送文案對(duì)勾起用戶興趣幫助更大。
- 推送著陸后的用戶行為,也是用戶畫像用戶行為來源之一。用戶點(diǎn)擊推送消息進(jìn)到內(nèi)容頁(yè)所產(chǎn)生的用戶行為也將會(huì)作為構(gòu)建用戶畫像的行為來源之一。同時(shí)用戶對(duì)推送內(nèi)容的反饋是可以作為用戶喜好度的調(diào)節(jié)系數(shù)之一,這個(gè)暫不展開詳細(xì)說了,大家有興趣可以去研究看看。
- 推薦的物品/內(nèi)容盡量是用戶沒看過的。因?yàn)椴还苁褂檬裁此惴ㄓ?jì)算相似度,很可能出現(xiàn)的結(jié)果是用戶看過/用戶喜歡的內(nèi)容與用戶標(biāo)簽相似度最高。所以進(jìn)行計(jì)算之前,可以考慮把用戶過往瀏覽過的內(nèi)容/推送過的內(nèi)容篩掉。
完成以上這些步驟,也就可以基本上實(shí)現(xiàn)了個(gè)性化的精準(zhǔn)推送了,但其實(shí)還有很多需要我們?nèi)L試和研究的,例如用戶活躍度對(duì)協(xié)同過濾算法計(jì)算的影響,以及用戶活躍度對(duì)推送的影響。用戶的興趣隨著時(shí)間的逐步衰減,推送的點(diǎn)擊意愿隨著用戶沉默的時(shí)間越來越低;等等….這里就不展開詳細(xì)說明了,如果大家有興趣,我們可以再進(jìn)行詳細(xì)交流。
本篇總結(jié)
本篇主要為大家介紹了如何通過推薦算法,實(shí)現(xiàn)個(gè)性化的精準(zhǔn)推送??偨Y(jié)成以下幾點(diǎn):
- 介紹幾種基本的推薦算法:基于內(nèi)容推薦算法、基于鄰域協(xié)同過濾算法、隱語義模型算法等等。
- 介紹了用戶畫像與基于鄰域的推薦算法的關(guān)系,把上一篇與本篇鏈接起來。
- 重點(diǎn)介紹了基于的物品協(xié)同過濾算法
- 通過余弦相似度公式計(jì)算用戶標(biāo)簽與物品相似度
- 推薦算法冷啟動(dòng)問題
- 實(shí)現(xiàn)個(gè)性化精準(zhǔn)推送需要注意的問題
下一篇講會(huì)為大家介紹推送運(yùn)營(yíng)面知識(shí),關(guān)于推送時(shí)間、人物、文案的思考。
相關(guān)閱讀
推送系統(tǒng)從0到1(一):是系統(tǒng)不是工具
推送系統(tǒng)從0到1(四):消息如何到達(dá)用戶設(shè)備
推送系統(tǒng)從0到1(六):推送的著陸頁(yè)設(shè)計(jì)
本文由 @番茄那只羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自pixabay,基于CC0協(xié)議
請(qǐng)問個(gè)性化推送如何建立個(gè)性化文案呢,比如自動(dòng)給用戶發(fā)個(gè)性化推薦的內(nèi)容,文案如何做到自動(dòng)個(gè)性化
應(yīng)該是創(chuàng)建規(guī)則,然后機(jī)器自動(dòng)生成吧
很用心的分享 對(duì)于小白的我居然都看懂了,感謝分享 ??