有上篇和上上篇的基礎,我們就可以針對性的對一個產品搭建出一個個性化推薦模型芍阎,在這個模型中燎斩,我們需要解決兩個問題:第一推薦什么;第二哪些內容應該優(yōu)先推薦匆帚。上兩篇文章很好的給出了具體的算法參考熬词,大家可以回顧。
在進入這篇文章的正題之前吸重,我們先一起解決上篇文章遺留的問題:
1.依據(jù)上面的公式互拾,最后的分值 P 是不是會變成負數(shù)?比喻 08 年北京的奧運會的某篇報道……
2.很多 App 上的文章都有轉發(fā)晤锹、收藏摩幔、點贊等功能,那么有這些因素存在后鞭铆,算法該怎么調整或衡?
先來解決第一個問題,我們看一下上篇文章中我們最后的公式為:
那么為了避免出現(xiàn)負數(shù)(其實負數(shù)并不影響算法的執(zhí)行车遂,只是在某些環(huán)境下封断,為了數(shù)據(jù)美觀,我們盡量避免負數(shù)出現(xiàn))這個問題很好調整舶担,我們只需要將上面的公式做下微調
經(jīng)過微調之后坡疼,熱度值無限接近于零,這也符合實際衣陶,時間過去的越久柄瑰,一篇文章的熱度就越低。
我們知道任何一篇報道或文章都存在用戶交互行為剪况,像評論教沾、收藏、點贊译断、轉發(fā)等等行為是影響熱度的重要指標授翻,這個時候我們引入一個新的因子:用戶行為分;我們用
表示,
那么我的公式最后就調整為:
在算法執(zhí)行初期堪唐,根據(jù)運營的數(shù)據(jù)和經(jīng)驗巡语,合理制定用戶行為分,例如:
不同的產品這些分值可以調整淮菠,在算法實施過程中盡量保證各個影響因子能夠調整配置男公。
好了,上面的問題解決了兜材±砼欤看似很簡單,做起來是很復雜的......
當你和我一樣曙寡,順著這個思路糠爬,一步一步將這些算法上線之后,并獲得一定的數(shù)據(jù)反饋和領導的認可举庶,恭喜你执隧,你的內容產品已經(jīng)順利度過早期階段,擁有幾萬或者十幾萬的日活户侥。每當這個時候镀琉,你會發(fā)現(xiàn)由于這些內容在你所制定的算法驅動下呈現(xiàn)給用戶,會出現(xiàn)以下幾個問題:
1.內容太過集中
2.個性化和長尾化的內容都被埋沒
抱著解決這兩個問題的目的蕊唐,是時候上個性化推薦了屋摔。個性化推薦一般有兩種解決方案,基于內容的個性化推薦替梨;基于用戶的個性化推薦钓试。這兩種解決方案,用通俗的話解釋:喜歡A的用戶在某種程度上也喜歡和A相似的B副瀑;喜歡A的用戶1和喜歡A的用戶2弓熏,在某種程度上有一定的相似性,那么盡量把用戶2喜歡的某個物品(或文章)B推薦給用戶1糠睡。
這兩種解決方案挽鞠,市場上都有典型的代表產品,基于用戶的協(xié)同過濾對用戶的規(guī)模要求相當高狈孔,所以今天的文章內容我們就以基于內容的個性化推薦為例展開信认。
我們先來看看幾個名詞“特征向量、分詞均抽、關鍵詞”嫁赏,任何兩篇文章或者兩本書或者兩個歌單,我們都可以用“特征向量”來標識目標的屬性到忽,文章橄教、書籍、歌單是所有標簽(關鍵詞)的合集喘漏,那么標簽越類似兩個目標內容越相似护蝶。獲得關鍵詞的第一步是要講目標進行拆分,為了簡捷翩迈,我們以兩篇文章為例:
1.分詞
分詞前面有提到過持灰,分詞有兩個詞庫,正常詞庫和停用詞庫负饲。正常詞庫類似一個規(guī)則堤魁,將目標文章按規(guī)則來分詞;停用詞庫是去掉目標文章中沒用的詞返十,比喻:“了妥泉、嗎、的洞坑、地”和“the盲链、are、that”等之類的迟杂,因為這些詞對分析沒有任何作用刽沾,在分詞前先剔除。
網(wǎng)絡每天都在更新排拷,正常詞庫和停用詞庫需要不斷的更新侧漓,如果某篇文章中出現(xiàn)“瘋狂打call”“尬聊”“扎心了,老鐵”等詞之后监氢,機器算法是識別不了的布蔗。所以詞庫需要不斷的更新,這些網(wǎng)上有很多忙菠,各種各樣可供參考何鸡。
2.關鍵詞
關鍵詞是決定一篇文章的特征向量指標,有沒有可能兩篇文章的關鍵詞重合的90%牛欢,但是講的卻是兩件事呢骡男?答案是肯定的“茫看個例子:
文章1:“支付寶和往年一樣又開始集福分錢了”主要講述支付寶的集父羰ⅲ活動球散,“支付寶”是個高頻詞而咆,文章最后說了句:“大家可以分錢了”,那么“分錢”最后也被收錄醉锄,進入了特征向量.
文章2:“現(xiàn)在過年壓歲錢我都是支付寶發(fā)”访得×祝“支付寶”按例被收錄陕凹,文章最后總結的時候說“每年過個年,都是在分錢鳄炉,壓歲錢都支付寶發(fā)杜耙,感覺時代進步真快”,雖然整篇文章“分線”只出現(xiàn)一次拂盯,但是還是被收錄進入特征向量佑女。
兩篇文章的關鍵詞非常類似,但是講述的卻是兩個完全不同的事谈竿,這個時候機器算法就會出錯团驱,將這些相關性弱的文章誤以為類似,這個時候推薦出去就會出大事空凸,所以特征向量還需要引入第二個指標嚎花,叫詞頻TF(Term Frequency),衡量每個關鍵詞在文章中出現(xiàn)的頻率呀洲。
那么又有一個問題贩幻,如果兩篇文章的關鍵詞重合度很高,詞頻也和接近两嘴,是不是說明關聯(lián)性就很強呢丛楚?大多數(shù)情況是這樣的,但是也有特殊憔辫,比喻某些文章都是將武漢的趣些,武漢美食、武漢大學贰您、武漢互聯(lián)網(wǎng)坏平、武漢體育等等,這些關鍵詞都包含武昌锦亦、漢陽舶替、漢口等,并且都有這相似的頻率杠园,那么算法就會誤以為他們是相關性極強的文章顾瞪,所以我們引入一個新的指標,即在所有文章中出現(xiàn)頻率的相反值抛蚁,用IDF(Inverse Document Frequency)表示陈醒。這個也很好理解,因為一個詞在所有文章出現(xiàn)的頻率小瞧甩,在某篇文章中出現(xiàn)的頻率大钉跷,這個詞就對該篇文章的標識作用越大。因此肚逸,關鍵詞對文章的作用衡量出來就為TFIDF=TF*IDF爷辙,這個就是著名的TF-IDF模型彬坏。
3.算法實現(xiàn)
完成了分詞和關鍵詞之后,每一篇文章就可以用關鍵詞集合來表示了:根據(jù)前面幾篇文章的內容膝晾,兩個向量的夾角越小苍鲜,相似度越高,假設兩篇文章的特征向量如下表:
那么這兩篇文章就由“支付寶”和“分錢”兩個重合關鍵詞決定玷犹,根據(jù)余弦相似度可以算出兩篇文章的相似度,這里不做贅述洒疚,有心的朋友可以看看前面的文章歹颓。
4.用戶特征
用戶特征類似熱度算法一樣,根據(jù)用戶閱讀油湖、評論巍扛、收藏、轉發(fā)等行為來賦予一個“鐘意度”乏德,例如
那么將文章和用戶鐘意度結合起來撤奸,我們只需要將關鍵詞的TFIDF乘以用戶行為特征即可得到用戶特征分數(shù)。
我們有文章特征喊括、用戶特征胧瓜,就能根據(jù)根據(jù)用戶關鍵詞做匹配,得出最符合用戶胃口的文章郑什,做出個性化推薦府喳。基于內容的個性化推薦不需要大規(guī)模的用戶量蘑拯,無論幾億钝满、幾千甚至幾百都可以,因此是絕大多數(shù)產品前期做推薦的不二首選申窘。