從算法原理,看推薦策略
在信息量爆炸的今天,由于范式的轉(zhuǎn)移,傳統(tǒng)的內(nèi)容和渠道已經(jīng)不再是稀缺資源;在今天,將信息和內(nèi)容更好更精準(zhǔn)得呈現(xiàn)在用戶面前,才是全方面提高效率的方式,真正的稀缺資源變成了「推」和「拉」。而在這一切的背后,推薦算法的作用都功不可沒。
推薦算法簡介
目前的推薦算法一般分為四大類:
- 協(xié)同過濾推薦算法
- 基于內(nèi)容的推薦算法
- 混合推薦算法
- 流行度推薦算法
協(xié)同過濾的推薦算法
協(xié)同過濾推薦算法應(yīng)該算是一種用的最多的推薦算法,它是通過用戶的歷史數(shù)據(jù)來構(gòu)建“用戶相似矩陣”和“產(chǎn)品相似矩陣”來對用戶進(jìn)行相關(guān)item的推薦,以達(dá)到精準(zhǔn)滿足用戶喜好的目的。比如亞馬遜等電商網(wǎng)站上的“買過XXX的人也買了XXX”就是一種協(xié)同過濾算法的應(yīng)用。
基于內(nèi)容的推薦算法
基于內(nèi)容的推薦算法,是將item的名稱、簡介等進(jìn)行分詞處理后,提取出TF-IDF值較大的詞作為特征詞,在此基礎(chǔ)上構(gòu)建item相關(guān)的特征向量,再根據(jù)余弦相似度來計(jì)算相關(guān)性,構(gòu)建相似度矩陣。
混合推薦算法
混合推薦算法很好理解,就是將其他算法推薦的結(jié)果賦予不同的權(quán)重,然后將最后的綜合結(jié)果進(jìn)行推薦的方法。
舉例來說,比如上述已經(jīng)提到了三種方式,協(xié)同過濾算法中的基于用戶和基于item的協(xié)同過濾推薦,和基于內(nèi)容的推薦算法;而混合推薦算法中是將這三種推薦結(jié)果賦予不同的權(quán)重,如:基于用戶的協(xié)同過濾的權(quán)重為40%,基于item的協(xié)同過濾的權(quán)重為30%,基于內(nèi)容的過濾技術(shù)的權(quán)重為30%,然后綜合計(jì)算得到最終的推薦結(jié)果。
流行度推薦算法
這個(gè)很基礎(chǔ),看名字就知道了。這種方法是對item使用某種形式的流行度度量,例如最多的下載次數(shù)或購買量,然后向新用戶推薦這些受歡迎的item。就和我們平時(shí)經(jīng)??吹降臒衢T商品、熱門推薦類似。
淺析推薦算法在實(shí)際中的應(yīng)用
了解了大概原理后,就可以來看看在實(shí)際場景中,推薦算法都是怎么使用的吧。(事先聲明,這只是我看了相關(guān)東西再結(jié)合自己理解進(jìn)去推測的,如果有說錯(cuò)的地方請各位千萬放下手中的刀……)
好,下面開始,先說說協(xié)同過濾算法在實(shí)際中的應(yīng)用。
協(xié)同過濾算法
協(xié)同過濾算法一般是怎么做的呢?我們先來看看在圖書推薦中的做法:
協(xié)同過濾(CF)大致可分為兩類:一類是基于鄰域的推薦、一類是基于模型的推薦;鄰域方法是使用用戶對已有item的喜愛程度來推測用戶對新item的喜愛程度。與之相反,基于模型的方法是使用歷史行為數(shù)據(jù),基于學(xué)習(xí)出的預(yù)測模型,預(yù)測對新項(xiàng)的喜愛程度。通常的方式是使用機(jī)器學(xué)習(xí)算法,找出用戶與項(xiàng)的相互作用模型,從而找出數(shù)據(jù)中的特定模式。(由于基于模型的方法我也不太理解,暫時(shí)不展開說明,感興趣的可以查閱相關(guān)資料)
【基于鄰域的推薦】–即是構(gòu)建用戶相似矩陣和產(chǎn)品相似矩陣
假設(shè)用戶表現(xiàn)出了對一些圖片的喜歡情況并進(jìn)行了相應(yīng)的評分,情況如下:
不同圖書代表不同維度,評分則代表了特征向量在該維度上的投影長度,根據(jù)用戶對不同圖書的喜愛程度建立用戶的特征向量,然后根據(jù)余弦相似度可以判斷用戶之間的相似性。根據(jù)相似性可以建立用戶相似矩陣:
很顯然,通過根據(jù)用戶對歷史圖書的評分情況,可以得到用戶對其的喜愛情況,在此基礎(chǔ)上構(gòu)建出用戶特征向量,可以一定程度上判斷兩個(gè)用戶在圖書品味上的相似程度,進(jìn)而我們可以認(rèn)為,若A和B比較相似,可以認(rèn)為A喜歡的書B也喜歡。
在給A用戶進(jìn)行圖書推薦時(shí),找到與其相似度較高的其他用戶,然后除去A用戶已看過的圖書,結(jié)合相似用戶對某本圖書的喜愛程度與該用戶與A用戶的相似度進(jìn)行加權(quán),得到的推薦指數(shù)越高的圖書優(yōu)先進(jìn)行推薦。
這應(yīng)該也是豆瓣等圖書社區(qū)上使用的推薦算法之一,利用用戶之間的相似度來進(jìn)行推薦。當(dāng)然,電影推薦也同理。
同理,反過來我們可以按照相似的方位,以用戶為維度來構(gòu)建item的特征向量。?當(dāng)我們需要判斷兩本書是否相似時(shí),就去看對這兩本書進(jìn)行過評價(jià)的用戶構(gòu)成是否相似,即是使用評價(jià)過一本書的用戶向量(或數(shù)組)表示這本圖書;也就是說,如果有兩本書的評價(jià)中,用戶重合度較高,即可認(rèn)為該兩本書相似度較高。其實(shí)借用的還是用戶相似的基礎(chǔ)。(《白話大數(shù)據(jù)與機(jī)器學(xué)習(xí)》中也提到過相似的推薦算法,感興趣的同學(xué)可以找來看一下)。
在音樂的推薦中同樣用到了協(xié)同過濾算法,我們眾所周知的使用個(gè)性化推薦的音樂app應(yīng)該屬「網(wǎng)易云音樂」比較典型了。
那么我們就來yy一下網(wǎng)易云音樂的推薦算法,首先用戶過去都會(huì)有聽歌的歷史,由于音樂中沒有相關(guān)的評分機(jī)制,那么可以根據(jù)用戶對音樂的行為來建立一個(gè)喜愛程度模型,例如:收藏-5分,加入歌單-4分,單曲循環(huán)-3分,分享-5分,聽一遍就刪-0分(本來想說負(fù)分走開的)。這樣就大概有了一個(gè)喜歡程度列表,于是接下來就可以根據(jù)用戶的聽歌情況,建立用戶的特征向量,接下來的推薦就順利成章了。
當(dāng)然,基于協(xié)同過濾算法的用戶相似度矩陣算法應(yīng)該只是網(wǎng)易云采取的一種推薦方式,接下來還會(huì)說到另外的方式。
值得注意的是,協(xié)同過濾的推薦算法雖然使用得很廣且推薦效果也較好,但還是存在一些不足之處:
- 協(xié)同過濾算法(CF)推薦中存在流行性偏差,因?yàn)閰f(xié)同過濾算法是基于慣性數(shù)據(jù)來進(jìn)行推薦的,流行的物品由于關(guān)注的用戶多,產(chǎn)生的數(shù)據(jù)也多,因此可以建立較為有效的推薦機(jī)制;而對于小眾或長尾的產(chǎn)品(沒人用過也沒人評分過),則無法有效推薦;
- 冷啟動(dòng)問題(又叫做新用戶問題,或推薦新項(xiàng)問題),同樣是由于慣性數(shù)據(jù)的缺失,導(dǎo)致一開始的推薦算法無法建立;這樣的問題可以通過流行性算法進(jìn)行一定程度的解決,當(dāng)然也可以利用基于內(nèi)容的推薦算法來進(jìn)行解決(后面會(huì)提到)。
基于內(nèi)容的過濾算法
簡介部分已經(jīng)提到了基于內(nèi)容的過濾算法的基本原理,這里就不再重復(fù)了,直接說一下具體大概是怎么用的吧。
基于內(nèi)容的過濾方式與協(xié)同過濾中建立用戶相似矩陣的方式類似,都是利用特征向量來進(jìn)行余弦相似度計(jì)算,從而判斷物品的相似性。
首先, 利用分詞技術(shù)對書籍的標(biāo)題和內(nèi)容進(jìn)行處理,去掉權(quán)重為0的詞(如的、得、地等);
然后,取 TF-IDF值較大的詞作為特征詞,并將其提取出來作為標(biāo)簽;
接著, 根據(jù)特征詞建立書籍的特征向量;
最后, 計(jì)算不同書籍之間的余弦相似度,并憑次建立書籍之間的相似度矩陣;
基于內(nèi)容的協(xié)同過濾算法,最主要的初級步驟是通過分詞技術(shù)對標(biāo)題和簡介等進(jìn)行處理,形成特征標(biāo)簽。例如,對于圖書和電影而言,可以對名稱和簡介進(jìn)行特征詞提取,從而構(gòu)建特征向量;當(dāng)然,在豆瓣上發(fā)現(xiàn)可以用一種更省事的方法,就是讓用戶進(jìn)行對作品評價(jià)時(shí)需要勾選相關(guān)的標(biāo)簽,這樣只要為不同種類提供足夠多的標(biāo)簽供用戶選擇即可(當(dāng)然這是我猜的);
而如果對于音樂的推薦呢?沒有相關(guān)簡介,歌名也不具備足夠的指向性,這種情況下則可以通過音樂本身的類別來作為標(biāo)簽進(jìn)行特征向量的構(gòu)建,例如:民謠、搖滾、懷舊等;我猜這也是網(wǎng)易云音樂采用的一種推薦方式吧。
而對于36氪之類的資訊網(wǎng)站,采用什么樣的推薦算法也能夠有一定程度的理解了吧,原理都是類似的。
基于內(nèi)容的推薦由于不需要太多的慣性數(shù)據(jù),因此可以部分解決冷啟動(dòng)問題和流行性偏差,也就是彌補(bǔ)了協(xié)同過濾算法中的部分不足,因此也可以將兩者混合起來使用,例如混合推薦算法就是采用了這樣的方式;其次,需要注意的是,如果單純使用基于內(nèi)容的過濾算法,會(huì)出現(xiàn)過度專業(yè)化問題,導(dǎo)致推薦列表里面出現(xiàn)的大多都是同一類東西,有的小伙伴可能也觀察到了類似的現(xiàn)象,比如在亞馬遜上購買哪本書(比如java相關(guān)的),會(huì)發(fā)現(xiàn)推薦的書籍里全是java相關(guān)的,就是因?yàn)槌霈F(xiàn)了過度專業(yè)化的現(xiàn)象。
結(jié)語
推薦算法的原理其實(shí)基于數(shù)學(xué)的原理得到解決(向量、余弦相似度等),其實(shí)其他各類也同理,都是可在數(shù)學(xué)的基礎(chǔ)上得到思路和衍生,如用來進(jìn)行情感判斷的樸素貝葉斯算法,就是將人才能理解的情感問題轉(zhuǎn)化成了基本的概率問題而得到解決,包括自然語言處理(NLP)和語音識(shí)別等,由此真是可以體會(huì)到數(shù)學(xué)的博大精深啊。
作為一名初級產(chǎn)品汪而言,從算法原理角度理解一些實(shí)際問題還是很有幫助的,當(dāng)然具體上手層面還需要開發(fā)同學(xué)的大力協(xié)助。
關(guān)于文中對推薦算法的理解和猜測,若有不足之處歡迎指教~
本文由 @Mr_yang 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
非常有幫助,感謝作者
很有幫助
最近想做個(gè)智能推薦的功能,原先也是有做過內(nèi)容推薦的,但是總覺得不夠完善,看完以后,覺得對這次做智能推薦很有幫助,非常感謝。
總結(jié)的很好,至少作為份外行是理解了,想請教下,產(chǎn)品經(jīng)理在日常工作中如何決定用哪種算法,根據(jù)經(jīng)驗(yàn)還是也有非常專業(yè)的一套評價(jià)流程再最終決定?
關(guān)于這方面的內(nèi)容,產(chǎn)品經(jīng)理有什么相關(guān)書籍可以推薦下嗎
只能推薦我看過的吧,作為非技術(shù)的原理了解可以看《數(shù)學(xué)之美》和《白話大數(shù)據(jù)與機(jī)器學(xué)習(xí)》,其他的我也不太懂了…
好的,謝啦