天天看點

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

4 深入推薦機制

4.1 基于人口統計學的推薦(Demographic-based Recommendation)

最易于實作的推薦方法,簡單的根據系統使用者的基本資訊發現使用者的相關程度,然後将相似使用者喜愛的其他物品推薦給目前使用者

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

首先,系統對每個使用者都有一個使用者 Profile的模組化,其中包括使用者的基本資訊,例如使用者的年齡,性别等等

然後,系統會根據使用者的 Profile 計算使用者的相似度,可以看到使用者 A 的 Profile和使用者 C 一樣,那麼系統會認為使用者 A 和 C 是相似使用者,在推薦系統中,可以稱他們是“鄰居”

最後,基于“鄰居”使用者群的喜好推薦給目前使用者一些物品,圖中将使用者 A 喜歡的物品 A 推薦給使用者 C

這種機制的好處在于:

  • 不使用目前使用者對物品的喜好曆史資料

    對于新使用者來講沒有“冷啟動(Cold Start)”的問題。

  • 不依賴于物品本身的資料

    這個方法在不同物品的領域都可以使用,它是領域獨立的(domain-independent)

缺點和問題

對使用者進行分類的方法過于粗糙,尤其是對品味要求較高的領域,比如圖書,電影和音樂等領域,無法得到很好的推薦效果。可能在一些電子商務的網站中,這個方法可以給出一些簡單的推薦

另外一個局限是,這個方法可能涉及到一些與資訊發現問題本身無關卻比較敏感的資訊,比如使用者的年齡等,這些使用者資訊不是很好擷取。

4.2 基于内容的推薦

基于内容的推薦是在推薦系統出現之初應用最為廣泛的推薦機制,它的核心思想是根據推薦物品或内容的中繼資料,發現物品或者内容的相關性,然後基于使用者以往的喜好記錄,推薦給使用者相似的物品

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

一個典型的例子,電影推薦系統,首先我們需要對電影的中繼資料有一個模組化,這裡隻簡單的描述了一下電影的類型

然後通過電影的中繼資料發現電影間的相似度,因為類型都是“愛情,浪漫”電影 A 和 C 被認為是相似的電影(要得到更好的推薦,還可以考慮電影的導演,演員等等)

最後實作推薦,對于使用者 A,他喜歡看電影 A,那麼系統就可以給他推薦類似的電影 C

好處

能很好的模組化使用者的口味,提供更加精确的推薦

問題

1.需要對物品進行分析和模組化,推薦的品質依賴于對物品模型的完整和全面程度

在現在的應用中我們可以觀察到關鍵詞和标簽(Tag)被認為是描述物品中繼資料的一種簡單有效的方法。

2.物品相似度分析僅依賴于物品本身的特征,這裡沒有考慮人對物品的态度。

3.因為需要基于使用者以往的喜好曆史做出推薦,是以對于新使用者有“冷啟動”的問題.

雖然這個方法有很多不足和問題,但他還是成功的應用在一些電影,音樂,圖書的社交站點,有些站點還請專業的人員對物品進行基因編碼,比如潘多拉,在一份報告中說道,在潘多拉的推薦系統中,每首歌有超過 100 個中繼資料特征,包括歌曲的風格,年份,演唱者等等。

4.3 基于協同過濾的推薦

随着 Web2.0 的發展,Web 站點更加提倡使用者參與和使用者貢獻,是以基于協同過濾的推薦機制因運而生。

根據使用者對物品或者資訊的偏好,發現物品或者内容本身的相關性,或者是發現使用者的相關性,然後再基于這些關聯性進行推薦

基于協同過濾的推薦可以分為

4.3.1 基于使用者的協同過濾推薦(User-based Recommendation)

根據所有使用者對物品或者資訊的偏好,發現與目前使用者口味和偏好相似的“鄰居”使用者群,在一般的應用中是采用計算“K- means”算法;然後,基于這 K 個鄰居的曆史偏好資訊,為目前使用者進行推薦

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

假設使用者 A 喜歡物品 A,物品 C

使用者 B 喜歡物品 B

使用者 C 喜歡物品 A ,物品 C 和物品 D

從這些使用者的曆史喜好資訊中,我們可以發現使用者 A 和使用者 C 的口味和偏好是比較類似的,同時使用者 C 還喜歡物品 D,那麼我們可以推斷使用者 A 可能也喜歡物品 D,是以可以将物品 D 推薦給使用者 A

該機制和基于人口統計學的推薦機制都是計算使用者的相似度,并基于“鄰居”使用者群計算推薦,但它們所不同的是如何計算使用者的相似度

  • 基于人口統計學的機制隻考慮使用者本身的特征
  • 基于使用者的協同過濾機制可在使用者的曆史偏好的資料上計算使用者的相似度,它的基本假設是,喜歡類似物品的使用者可能有相同或者相似的口味和偏好。

4.3.2 基于項目的協同過濾推薦(Item-based Recommendation)

使用所有使用者對物品或者資訊的偏好,發現物品和物品之間的相似度,然後根據使用者的曆史偏好資訊,将類似的物品推薦給使用者

假設

使用者 A 喜歡物品 A 和物品 C

使用者 B 喜歡物品 A,物品 B 和物品 C

使用者 C 喜歡物品 A

從這些使用者的曆史喜好可以分析出物品 A 和物品 C 時比較類似的,喜歡物品 A 的人都喜歡物品 C,基于這個資料可以推斷使用者 C 很有可能也喜歡物品 C,是以系統會将物品 C 推薦給使用者 C

與上面講的類似,基于項目的協同過濾推薦和基于内容的推薦其實都是基于物品相似度預測推薦,隻是相似度計算的方法不一樣,前者是從使用者曆史的偏好推斷,而後者是基于物品本身的屬性特征資訊

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

在基于使用者和基于項目兩個政策中應該如何選擇呢?

其實基于項目的協同過濾推薦機制是 Amazon 在基于使用者的機制上改良的一種政策,因為在大部分的 Web 站點中,物品的個數是遠遠小于使用者的數量的,而且物品的個數和相似度相對比較穩定,同時基于項目的機制比基于使用者的實時性更好一些。

但也不是所有的場景都是這樣的情況,可以設想一下在一些新聞推薦系統中,也許物品,也就是新聞的個數可能大于使用者的個數,而且新聞的更新程度也有很快,是以它的形似度依然不穩定。

是以推薦政策的選擇其實和具體的應用場景有很大的關系。

4.3.3 基于模型的協同過濾推薦(Model-based Recommendation)

基于樣本的使用者喜好資訊,訓練一個推薦模型,然後根據實時的使用者喜好的資訊進行預測,計算推薦。

現今應用最為廣泛的推薦機制

優點

  • 不需要對物品/使用者進行嚴格的模組化,不要求物品的描述是機器可了解的,是以該方法也是領域無關的
  • 計算出來的推薦是開放的,可以共享他人的經驗,很好的支援使用者發現潛在的興趣

  • 核心是基于曆史資料,是以對新物品和新使用者都有“冷啟動”的問題
  • 推薦效果依賴于使用者曆史偏好資料的多少和準确性
  • 在大部分的實作中,使用者曆史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準确度有很大的影響等等。
  1. 對于一些特殊品味的使用者不能給予很好的推薦。
  2. 由于以曆史資料為基礎,抓取和模組化使用者的偏好後,很難修改或者根據使用者的使用演變,進而導緻這個方法不夠靈活。

4.4 混合的推薦機制

在現行的 Web 站點上的推薦往往都不是單純隻采用了某一種推薦的機制和政策,往往是将多個方法混合在一起,進而達到更好的推薦效果

權重的混合(Weighted Hybridization):

用線性公式将幾種不同的推薦按照一定權重組合起來,具體權重的值需要在測試資料集上反複實驗,進而達到最好的推薦效果

切換的混合(Switching Hybridization)

對于不同的情況(資料量,系統運作狀況,使用者和物品的數目等),推薦政策可能有很大的不同,那麼切換的混合方式,就是允許在不同的情況下,選擇最為合适的推薦機制計算推薦

分區的混合(Mixed Hybridization)

采用多種推薦機制,并将不同的推薦結果分不同的區顯示給使用者。

Amazon,當當網等很多電子商務網站都是采用這樣的方式,使用者可以得到很全面的推薦,也更容易找到他們想要的東西

分層的混合(Meta-Level Hybridization)

采用多種推薦機制,并将一個推薦機制的結果作為另一個的輸入,進而綜合各個推薦機制的優缺點,得到更加準确的推薦。

5 應用

介紹完推薦系統的基本原理,基本推薦機制,下面簡要分析幾個有代表性的推薦系統的應用,這裡選擇兩個領域:Amazon 作為電子商務的代表,豆瓣作為社交網絡的代表。

推薦在電子商務中的應用 – Amazon

Amazon 作為推薦系統的鼻祖,已經将推薦的思想滲透在應用的各個角落

Amazon 推薦的核心是通過資料挖掘算法和比較使用者的消費偏好于其他使用者進行對比,借以預測使用者可能感興趣的商品。對應于上面介紹的各種推薦機制,Amazon 采用的是分區的混合的機制,并将不同的推薦結果分不同的區顯示給使用者

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

Amazon 利用可以記錄的所有使用者在站點上的行為,根據不同資料的特點對它們進行處理,并分成不同區為使用者推送推薦:

  • 今日推薦 (Today’s Recommendation For You):

    根據使用者的近期的曆史購買或者檢視記錄,并結合時下流行的物品給出一個折中的推薦。

  • 新産品的推薦 (New For You)

    采用基于内容的推薦機制 (Content-based Recommendation),将一些新到物品推薦給使用者。在方法選擇上由于新物品沒有大量的使用者喜好資訊,是以基于内容的推薦能很好的解決這個“冷啟動”的問題。

  • 捆綁銷售 (Frequently Bought Together)

    采用資料挖掘技術對使用者的購買行為進行分析,找到經常被一起或同一個人購買的物品集,進行捆綁銷售,這是一種典型的基于項目的協同過濾推薦機制。

  • 别人購買 / 浏覽的商品 (Customers Who Bought/See This Item Also Bought/See)

    這也是一個典型的基于項目的協同過濾推薦的應用,通過社會化機制使用者能更快更友善的找到自己感興趣的物品。

值得一提的是,Amazon 在做推薦時,設計和使用者體驗也做得特别獨到:

Amazon 利用有它大量曆史資料的優勢,量化推薦原因。

  • 基于社會化的推薦,Amazon 會給你事實的資料,讓使用者信服,例如:購買此物品的使用者百分之多少也購買了那個物品;
  • 基于物品本身的推薦,Amazon 也會列出推薦的理由,例如:因為你的購物框中有 ***,或者因為你購買過 ***,是以給你推薦類似的 ***。

另外,Amazon 很多推薦是基于使用者的 profile 計算出來的,使用者的 profile 中記錄了使用者在 Amazon 上的行為,包括看了那些物品,買了那些物品,收藏夾和 wish list 裡的物品等等,當然 Amazon 裡還內建了評分等其他的使用者回報的方式,它們都是 profile 的一部分,同時,Amazon 提供了讓使用者自主管理自己 profile 的功能,通過這種方式使用者可以更明确的告訴推薦系統他的品味和意圖是什麼。

推薦在社交網站中的應用 – 豆瓣

豆瓣是國内做的比較成功的社交網站,它以圖書,電影,音樂和同城活動為中心,形成一個多元化的社交網絡平台,自然推薦的功能是必不可少的

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

當你在豆瓣電影中将一些你看過的或是感興趣的電影加入你看過和想看的清單裡,并為它們做相應的評分,這時豆瓣的推薦系統已經拿到你的一些偏好資訊,那麼它将給你展示如圖電影推薦。

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

豆瓣的推薦是通過“豆瓣猜”,為了讓使用者清楚這些推薦是如何來的,豆瓣還給出了“豆瓣猜”的一個簡要的介紹。

*“你的個人推薦是根據你的收藏和評價自動得出的,每個人的推薦清單都不同。你的收藏和評價越多,豆瓣給你的推薦會越準确和豐富。

每天推薦的内容可能會有變化。随着豆瓣的長大,給你推薦的内容也會越來越準。*”

這一點讓我們可以清晰明了的知道,豆瓣必然是基于社會化的協同過濾的推薦,這樣使用者越多,使用者的回報越多,那麼推薦的效果會越來越準确。

相對于 Amazon 的使用者行為模型,豆瓣電影的模型更加簡單,就是“看過”和“想看”,這也讓他們的推薦更加專注于使用者的品味,畢竟買東西和看電影的動機還是有很大不同的。

另外,豆瓣也有基于物品本身的推薦,當你檢視一些電影的詳細資訊的時候,他會給你推薦出“喜歡這個電影的人也喜歡的電影”, 如圖這是一個基于協同過濾的應用。

基于協同過濾算法的電影推薦系統設計(二) - 推薦系統介紹(下)4 深入推薦機制5 應用6 總結

6 總結

如何讓使用者更快的找到想要的資料,如何讓使用者發現自己潛在的興趣和需求,無論是對于電子商務還是社會網絡的應用都是至關重要的

推薦系統的出現,使得這個問題越來越被大家關注。但對大多數人來講,也許還在驚歎它為什麼總是能猜到你到底想要些什麼。推薦系統的魔力在于你不清楚在這個推薦背後,系統到底記錄和推理了些什麼。

其實推薦系統隻是默默的記錄和觀察你的一舉一動,然後再借由所有使用者産生的海量資料分析和發現其中的規律,進而慢慢的了解你,你的需求,你的習慣,并默默的無聲息的幫助你快速的解決你的問題,找到你想要的東西。

其實,回頭想想,很多時候,推薦系統比你更了解你自己。

在現今的推薦技術和算法中,最被大家廣泛認可和采用的就是基于協同過濾的推薦方法

它以其方法模型簡單,資料依賴性低,資料友善采集,推薦效果較優等多個優點成為大衆眼裡的推薦算法“No.1”

繼續閱讀