帶你從算法原理看推薦策略

推薦算法簡介java

目前的推薦算法通常分爲四大類:程序員

協同過濾推薦算法面試

基於內容的推薦算法算法

混合推薦算法數組

流行度推薦算法app

協同過濾的推薦算法機器學習

協同過濾推薦算法應該算是一種用的最多的推薦算法,它是經過用戶的歷史數據來構建「用戶類似矩陣」和「產品類似矩陣」來對用戶進行相關item的推薦,以達到精準知足用戶喜愛的目的。好比亞馬遜等電商網站上的「買過XXX的人也買了XXX」就是一種協同過濾算法的應用。oop

基於內容的推薦算法學習

基於內容的推薦算法,是將item的名稱、簡介等進行分詞處理後,提取出TF-IDF值較大的詞做爲特徵詞,在此基礎上構建item相關的特徵向量,再根據餘弦類似度來計算相關性,構建類似度矩陣。大數據

混合推薦算法

混合推薦算法很好理解,就是將其餘算法推薦的結果賦予不一樣的權重,而後將最後的綜合結果進行推薦的方法。

舉例來講,好比上述已經提到了三種方式,協同過濾算法中的基於用戶和基於item的協同過濾推薦,和基於內容的推薦算法;而混合推薦算法中是將這三種推薦結果賦予不一樣的權重,如:基於用戶的協同過濾的權重爲40%,基於item的協同過濾的權重爲30%,基於內容的過濾技術的權重爲30%,而後綜合計算獲得最終的推薦結果。

流行度推薦算法

這個很基礎,看名字就知道了。這種方法是對item使用某種形式的流行度度量,例如最多的下載次數或購買量,而後向新用戶推薦這些受歡迎的item。就和咱們平時常常看到的熱門商品、熱門推薦相似。

淺析推薦算法在實際中的應用

瞭解了大概原理後,就能夠來看看在實際場景中,推薦算法都是怎麼使用的吧。(聲明:這是我看了相關東西再結合本身理解進去推測的)好,下面開始,先說說協同過濾算法在實際中的應用。

協同過濾算法

協同過濾算法通常是怎麼作的呢?咱們先來看看在圖書推薦中的作法:

協同過濾(CF)大體可分爲兩類:一類是基於鄰域的推薦、一類是基於模型的推薦;鄰域方法是使用用戶對已有item的喜好程度來推測用戶對新item的喜好程度。與之相反,基於模型的方法是使用歷史行爲數據,基於學習出的預測模型,預測對新項的喜好程度。一般的方式是使用機器學習算法,找出用戶與項的相互做用模型,從而找出數據中的特定模式。在此我向你們推薦一個大數據技術交流圈: 658558542 突破技術瓶頸,提高思惟能力

【基於鄰域的推薦】–便是構建用戶類似矩陣和產品類似矩陣

假設用戶表現出了對一些圖片的喜歡狀況並進行了相應的評分,狀況以下:

不一樣圖書表明不一樣維度,評分則表明了特徵向量在該維度上的投影長度,根據用戶對不一樣圖書的喜好程度創建用戶的特徵向量,而後根據餘弦類似度能夠判斷用戶之間的類似性。根據類似性能夠創建用戶類似矩陣:

很顯然,經過根據用戶對歷史圖書的評分狀況,能夠獲得用戶對其的喜好狀況,在此基礎上構建出用戶特徵向量,能夠必定程度上判斷兩個用戶在圖書品味上的類似程度,進而咱們能夠認爲,若A和B比較類似,能夠認爲A喜歡的書B也喜歡。

在給A用戶進行圖書推薦時,找到與其類似度較高的其餘用戶,而後除去A用戶已看過的圖書,結合類似用戶對某本圖書的喜好程度與該用戶與A用戶的類似度進行加權,獲得的推薦指數越高的圖書優先進行推薦。

這應該也是豆瓣等圖書社區上使用的推薦算法之一,利用用戶之間的類似度來進行推薦。固然,電影推薦也同理。

同理,反過來咱們能夠按照類似的方位,以用戶爲維度來構建item的特徵向量。 當咱們須要判斷兩本書是否類似時,就去看對這兩本書進行過評價的用戶構成是否類似,便是使用評價過一本書的用戶向量(或數組)表示這本圖書;也就是說,若是有兩本書的評價中,用戶重合度較高,便可認爲該兩本書類似度較高。其實借用的仍是用戶類似的基礎。(《白話大數據與機器學習》中也提到過類似的推薦算法,感興趣的同窗能夠找來看一下)。

在音樂的推薦中一樣用到了協同過濾算法,咱們衆所周知的使用個性化推薦的音樂app應該屬「網易雲音樂」比較典型了。

那麼咱們就來yy一下網易雲音樂的推薦算法,首先用戶過去都會有聽歌的歷史,因爲音樂中沒有相關的評分機制,那麼能夠根據用戶對音樂的行爲來創建一個喜好程度模型,例如:收藏-5分,加入歌單-4分,單曲循環-3分,分享-5分,聽一遍就刪-0分(原本想說負分滾粗的)。這樣就大概有了一個喜歡程度列表,因而接下來就能夠根據用戶的聽歌狀況,創建用戶的特徵向量,接下來的推薦就順利成章了。

固然,基於協同過濾算法的用戶類似度矩陣算法應該只是網易雲採起的一種推薦方式,接下來還會說到另外的方式。

值得注意的是,協同過濾的推薦算法雖然使用得很廣且推薦效果也較好,但仍是存在一些不足之處:

協同過濾算法(CF)推薦中存在流行性誤差,由於協同過濾算法是基於慣性數據來進行推薦的,流行的物品因爲關注的用戶多,產生的數據也多,所以能夠創建較爲有效的推薦機制;而對於小衆或長尾的產品(沒人用過也沒人評分過),則沒法有效推薦;

冷啓動問題(又叫作新用戶問題,或推薦新項問題),一樣是因爲慣性數據的缺失,致使一開始的推薦算法沒法創建;這樣的問題能夠經過流行性算法進行必定程度的解決,固然也能夠利用基於內容的推薦算法來進行解決(後面會提到)。

基於內容的過濾算法

簡介部分已經提到了基於內容的過濾算法的基本原理,這裏就再也不重複了,直接說一下具體大概是怎麼用的吧。基於內容的過濾方式與協同過濾中創建用戶類似矩陣的方式相似,都是利用特徵向量來進行餘弦類似度計算,從而判斷物品的類似性。首先, 利用分詞技術對書籍的標題和內容進行處理,去掉權重爲0的詞(如的、得、地等);而後,取 TF-IDF值較大的詞做爲特徵詞,並將其提取出來做爲標籤;

接着, 根據特徵詞創建書籍的特徵向量;

最後, 計算不一樣書籍之間的餘弦類似度,並憑次創建書籍之間的類似度矩陣;

基於內容的協同過濾算法,最主要的初級步驟是經過分詞技術對標題和簡介等進行處理,造成特徵標籤。例如,對於圖書和電影而言,能夠對名稱和簡介進行特徵詞提取,從而構建特徵向量;固然,在豆瓣上發現能夠用一種更省事的方法,就是讓用戶進行對做品評價時須要勾選相關的標籤,這樣只要爲不一樣種類提供足夠多的標籤供用戶選擇便可(固然這是我猜的);

而若是對於音樂的推薦呢?沒有相關簡介,歌名也不具有足夠的指向性,這種狀況下則能夠經過音樂自己的類別來做爲標籤進行特徵向量的構建,例如:民謠、搖滾、懷舊等;我猜這也是網易雲音樂採用的一種推薦方式吧。

而對於36氪之類的資訊網站,採用什麼樣的推薦算法也可以有必定程度的理解了吧,原理都是相似的。

基於內容的推薦因爲不須要太多的慣性數據,所以能夠部分解決冷啓動問題和流行性誤差,也就是彌補了協同過濾算法中的部分不足,所以也能夠將二者混合起來使用,例如混合推薦算法就是採用了這樣的方式;其次,須要注意的是,若是單純使用基於內容的過濾算法,會出現過分專業化問題,致使推薦列表裏面出現的大多都是同一類東西,有的小夥伴可能也觀察到了相似的現象,好比在亞馬遜上購買哪本書(好比java相關的),會發現推薦的書籍裏全是java相關的,就是由於出現了過分專業化的現象。

結語

推薦算法的原理其實基於數學的原理獲得解決(向量、餘弦類似度等),其實其餘各種也同理,都是可在數學的基礎上獲得思路和衍生,如用來進行情感判斷的樸素貝葉斯算法,就是將人才能理解的情感問題轉化成了基本的機率問題而獲得解決,包括天然語言處理(NLP)和語音識別等,由此真是能夠體會到數學的博大精深啊。

感謝您的觀看,若有不足之處,歡迎批評指正。

在此我向你們推薦一個大數據開發交流圈:

658558542 (☛點擊便可加入羣聊)

裏面整理了一大份學習資料,全都是些乾貨,包括大數據技術入門,大數據離線處理、數據實時處理、Hadoop 、Spark、Flink、推薦系統算法以及源碼解析等,送給每一位大數據小夥伴,讓自學更輕鬆。這裏不止是小白彙集地,還有大牛在線解答!歡迎初學和進階中的小夥伴一塊兒進羣學習交流,共同進步!

最後祝福全部遇到瓶頸的大數據程序員們突破本身,祝福你們在日後的工做與面試中一切順利。

相關文章
相關標籤/搜索