基於用戶統計學的推薦
基於用戶統計學的推薦機制(Demographic-based Recommendation)是一種最易於實現的推薦方法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然后將相似用戶喜愛的其他物品推薦給當前用戶,圖1給出了這種推薦的工作原理。
(圖1)
從圖中可以很清楚的看到,首先,系統對每個用戶都有一個用戶 Profile 的建模,其中包括用戶的基本信息,例如用戶的年齡,性別等等;然后,系統會根據用戶的 Profile 計算用戶的相似度,可以看到用戶 A 的 Profile 和用戶 C 一樣,那么系統會認為用戶 A 和 C 是相似用戶,在推薦引擎中,可以稱他們是“鄰居”;最后,基於“鄰居”用戶群的喜好推薦給當前用戶一些物品,圖中將用戶 A 喜歡的物品 A 推薦給用戶 C。
這種基於用戶統計學的推薦機制的好處在於:
1.因為不使用當前用戶對物品的喜好歷史數據,所以對於新用戶來講沒有“冷啟動(Cold Start)”的問題。
2.這個方法不依賴於物品本身的數據,所以這個方法在不同物品的領域都可以使用,它是領域獨立的(domain-independent)。
那么這個方法的缺點和問題是什么呢?這種基於用戶的基本信息對用戶進行分類的方法過於粗糙,尤其是對品味要求較高的領域,比如圖書,電影和音樂等領域,無法得到很好的推薦效果。可能在一些電子商務的網站中,這個方法可以給出一些簡單的推薦。另外一個局限是,這個方法可能涉及到一些與信息發現問題本身無關卻比較敏感的信息,比如用戶的年齡等,這些用戶信息不是很好獲取。
基於內容的推薦
基於內容的推薦是在推薦引擎出現之初應用最為廣泛的推薦機制,它的核心思想是根據推薦物品或內容的元數據,發現物品或者內容的相關性,然后基於用戶以往的喜好記錄,推薦給用戶相似的物品。圖2 給出了基於內容推薦的基本原理。
(圖2)
圖2 中給出了基於內容推薦的一個典型的例子,電影推薦系統,首先我們需要對電影的元數據有一個建模,這里只簡單的描述了一下電影的類型;然后通過電影的元數據發現電影間的相似度,因為類型都是“愛情,浪漫”電影 A 和 C 被認為是相似的電影(當然,只根據類型是不夠的,要得到更好的推薦,我們還可以考慮電影的導演,演員等等);最后實現推薦,對於用戶 A,他喜歡看電影 A,那么系統就可以給他推薦類似的電影 C。
這種基於內容的推薦機制的好處在於它能很好的建模用戶的口味,能提供更加精確的推薦。但它也存在以下幾個問題:
1.需要對物品進行分析和建模,推薦的質量依賴於對物品模型的完整和全面程度。在現在的應用中我們可以觀察到關鍵詞和標簽(Tag)被認為是描述物品元數據的一種簡單有效的方法。
2.物品相似度的分析僅僅依賴於物品本身的特征,這里沒有考慮人對物品的態度。
3.因為需要基於用戶以往的喜好歷史做出推薦,所以對於新用戶有“冷啟動”的問題。
雖然這個方法有很多不足和問題,但他還是成功的應用在一些電影,音樂,圖書的社交站點,有些站點還請專業的人員對物品進行基因編碼,比如潘多拉,在一份報告中說道,在潘多拉的推薦引擎中,每首歌有超過 100 個元數據特征,包括歌曲的風格,年份,演唱者等等
基於協同過濾的推薦
隨着 Web2.0 的發展,Web 站點更加提倡用戶參與和用戶貢獻,因此基於協同過濾的推薦機制因運而生。它的原理很簡單,就是根據用戶對物品或者信息的偏好,發現物品或者內容本身的相關性,或者是發現用戶的相關性,然后再基於這些關聯性進行推薦。基於協同過濾的推薦可以分為三個子類:基於用戶的推薦(User-based Recommendation),基於項目的推薦(Item-based Recommendation)和基於模型的推薦(Model-based Recommendation)。下面我們一個一個詳細的介紹着三種協同過濾的推薦機制。
基於用戶的協同過濾推薦
基於用戶的協同過濾推薦的基本原理是,根據所有用戶對物品或者信息的偏好,發現與當前用戶口味和偏好相似的“鄰居”用戶群,在一般的應用中是采用計算“K- 鄰居”的算法;然后,基於這 K 個鄰居的歷史偏好信息,為當前用戶進行推薦。下圖3 給出了原理圖。
(圖3)
上圖示意出基於用戶的協同過濾推薦機制的基本原理,假設用戶 A 喜歡物品 A,物品 C,用戶 B 喜歡物品 B,用戶 C 喜歡物品 A ,物品 C 和物品 D;從這些用戶的歷史喜好信息中,我們可以發現用戶 A 和用戶 C 的口味和偏好是比較類似的,同時用戶 C 還喜歡物品 D,那么我們可以推斷用戶 A 可能也喜歡物品 D,因此可以將物品 D 推薦給用戶 A。
基於用戶的協同過濾推薦機制和基於人口統計學的推薦機制都是計算用戶的相似度,並基於“鄰居”用戶群計算推薦,但它們所不同的是如何計算用戶的相似度,基於人口統計學的機制只考慮用戶本身的特征,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。
基於項目的協同過濾推薦
基於項目的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶,圖4 很好的詮釋了它的基本原理。
假設用戶 A 喜歡物品 A 和物品 C,用戶 B 喜歡物品 A,物品 B 和物品 C,用戶 C 喜歡物品 A,從這些用戶的歷史喜好可以分析出物品 A 和物品 C 時比較類似的,喜歡物品 A 的人都喜歡物品 C,基於這個數據可以推斷用戶 C 很有可能也喜歡物品 C,所以系統會將物品 C 推薦給用戶 C。
與上面講的類似,基於項目的協同過濾推薦和基於內容的推薦其實都是基於物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基於物品本身的屬性特征信息。
(圖4)
同時協同過濾,在基於用戶和基於項目兩個策略中應該如何選擇呢?其實基於項目的協同過濾推薦機制是 Amazon 在基於用戶的機制上改良的一種策略,因為在大部分的 Web 站點中,物品的個數是遠遠小於用戶的數量的,而且物品的個數和相似度相對比較穩定,同時基於項目的機制比基於用戶的實時性更好一些。但也不是所有的場景都是這樣的情況,可以設想一下在一些新聞推薦系統中,也許物品,也就是新聞的個數可能大於用戶的個數,而且新聞的更新程度也有很快,所以它的形似度依然不穩定。所以,其實可以看出,推薦策略的選擇其實和具體的應用場景有很大的關系。
基於模型的協同過濾推薦
基於模型的協同過濾推薦就是基於樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測,計算推薦。
基於協同過濾的推薦機制是現今應用最為廣泛的推薦機制,它有以下幾個顯著的優點:
1.它不需要對物品或者用戶進行嚴格的建模,而且不要求物品的描述是機器可理解的,所以這種方法也是領域無關的。
2.這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好
而它也存在以下幾個問題:
1.方法的核心是基於歷史數據,所以對新物品和新用戶都有“冷啟動”的問題。
2.推薦的效果依賴於用戶歷史偏好數據的多少和准確性。
3.在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的准確度有很大的影響等等。
4.對於一些特殊品味的用戶不能給予很好的推薦。
5.由於以歷史數據為基礎,抓取和建模用戶的偏好后,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。
混合的推薦機制
在現行的 Web 站點上的推薦往往都不是單純只采用了某一種推薦的機制和策略,他們往往是將多個方法混合在一起,從而達到更好的推薦效果。關於如何組合各個推薦機制,這里講幾種比較流行的組合方法。
1.加權的混合(Weighted Hybridization): 用線性公式(linear formula)將幾種不同的推薦按照一定權重組合起來,具體權重的值需要在測試數據集上反復實驗,從而達到最好的推薦效果。
2.切換的混合(Switching Hybridization):前面也講到,其實對於不同的情況(數據量,系統運行狀況,用戶和物品的數目等),推薦策略可能有很大的不同,那么切換的混合方式,就是允許在不同的情況下,選擇最為合適的推薦機制計算推薦。
3.分區的混合(Mixed Hybridization):采用多種推薦機制,並將不同的推薦結果分不同的區顯示給用戶。其實,Amazon,當當網等很多電子商務網站都是采用這樣的方式,用戶可以得到很全面的推薦,也更容易找到他們想要的東西。
4.分層的混合(Meta-Level Hybridization): 采用多種推薦機制,並將一個推薦機制的結果作為另一個的輸入,從而綜合各個推薦機制的優缺點,得到更加准確的推薦。