鏈接:https://www.zhihu.com/question/19967564/answer/25015492
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
關聯規則最重要的就是發現共現關系(挖掘頻繁項目集),經典算法有Apriori算法、FP-GROWTH算法。關聯規則的應用場景是大量的用戶購買了A之后還會接着購買了B和C,於是一旦發現用戶購買了A,系統就會給用戶推薦B和C。這個應用場景放在購物上是非常合適的,因為我們購物往往是根據當前的需求,也就是說用戶購物的興趣點是隨着時間在變化的。關聯規則可以給用戶推薦完全不相似的物品,比如購買了數碼相機,系統會推薦SD卡、數碼相機電池等,在推薦系統領域專業的術語叫做推薦結果的多樣性。
計算復雜度是關聯規則挖掘最嚴重的缺點,隨着頻繁項目集大小的增加,挖掘的代價越來越高,尤其在數據集比較大的情況下,這就促使人們去尋找更加高效的方法。
協同過濾方法是一大類方法的統稱,包括近鄰方法,降維方法等等,所謂協同過濾簡單來講就是要給用戶推薦和其相似的用戶購買過的物品。
大家很熟悉的基於物品的相同過濾方法就屬於近鄰方法,基於物品的相同過濾首先由Amazon(電子商務領域運用推薦系統的代表,據其某位前科學家在博客中披露,2006年,推薦系統對Amazon營業額的貢獻在35%左右)提出來,其基本思想是預先根據所有用戶的歷史偏好數據計算物品之間的相似性,然后把與用戶喜歡的物品相類似的物品推薦給用戶,舉個例子,物品a和c非常相似,因為喜歡a的用戶同時也喜歡c,而用戶A喜歡a,所以把c推薦給用戶A。和基於物品的協同過濾方法相對應的是基於用戶的協同過濾方法,其基本思想是如果用戶A喜歡物品a,用戶B喜歡物品a、b、c,用戶C喜歡a和c,那么認為用戶A與用戶B和C相似,因為他們都喜歡a,而喜歡a的用戶同時也喜歡c,所以把c推薦給用戶A。該算法用最近鄰居(nearest-neighbor)算法找出一個用戶的鄰居集合,該集合的用戶和該用戶有相似的喜好,算法根據鄰居的偏好對該用戶進行預測。
除了近鄰模型,降維模型也應用的非常普遍,具體的模型如Netflix比賽中Simon使用的由矩陣奇異值分解改造而來的隱因子模型( Netflix Update: Try This at Home),受限玻爾茲曼機模型等等,降維模型的共同特點就是要將數據使用更加抽象的低維特征表示,從而能夠避免原始數據大量的干擾信息。
談到降維模型,不得不說最近很火的深度學習,深度學習可以自動學習數據的抽象特征,本人的碩士論文題目就是基於深度學習的個性化推薦系統,這里就不多少說了。
暫時就寫這么多了,有時間補充上基於內容推薦、混合推薦、基於上下文推薦等。
鏈接:https://www.zhihu.com/question/19967564/answer/33534574
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
時過境遷,也許推薦引擎不再是當初的模樣。
——————我-是-分-隔-線,我是辛勤的搬運工,我是變態的整理俠——————————
與購物網站內部的搜索對應,購物網站一般還會有推薦引擎。因為在很多情況下,用戶其實並不明確自己的需要,或者他們的需求很難用簡單的關鍵字來表述。又或者他們需要更加符合他們個人口味和喜好的結果。最早將推薦引擎投入大規模使用的是亞馬遜,它采用了一種關聯推薦機制:當用戶購買了一本書之后,頁面上會出現這樣一個框:你可能對這幾本書也有興趣。
根據推薦引擎是否為不同的用戶推薦不同的數據可分為基於大眾行為的推薦引擎(千人一面)和個性化推薦引擎(類似千人千面),題主說的應該主要是個性化的推薦引擎。
a1. 根據大眾行為的推薦引擎,對每個用戶都給出同樣的推薦,這些推薦可以是靜態的由系統管理員人工設定的,或者基於系統所有用戶的反饋統計計算出的當下比較流行的物品。
a2.個性化推薦引擎,對不同的用戶,根據他們的口味和喜好給出更加精確的推薦,這時,系統需要了解需推薦內容和用戶的特質,或者基於社會化網絡,通過找到與當前用戶相同喜好的用戶,實現推薦。
一、推薦引擎的工作原理

一般情況下,推薦引擎所需要的數據源包括:
-
要推薦物品或內容的元數據,例如關鍵字,基因描述等;
-
系統用戶的基本信息,例如性別,年齡等
-
用戶對物品或者信息的偏好,根據應用本身的不同,可能包括用戶對物品的評分,用戶查看物品的記錄,用戶的購買記錄等。
顯式的用戶反饋:這類是用戶在網站上自然瀏覽或者使用網站以外,顯式的提供反饋信息,例如用戶對物品的評分,或者對物品的評論(UGC內容);
隱式的用戶反饋:這類是用戶在使用網站是產生的數據,隱式的反應了用戶對物品的喜好,例如用戶購買了某物品,用戶查看了某物品的信息等等(行為內容)。
顯式的用戶反饋能准確的反應用戶對物品的真實喜好,但需要用戶付出額外的代價,而隱式的用戶行為,通過一些分析和處理,也能反映用戶的喜好,只是數據不是很精確,有些行為的分析存在較大的噪音。但只要選擇正確的行為特征,隱式的用戶反饋也能得到很好的效果,只是行為特征的選擇可能在不同的應用中有很大的不同,例如在電子商務的網站上,購買行為其實就是一個能很好表現用戶喜好的隱式反饋。
二、個性化推薦引擎的分類
主要根據不同的數據源發現數據相關性的方法可以分為以下幾種:
1. 基於人口統計學的推薦(Demographic-based Recommendation)
根據系統用戶的基本信息發現用戶的相關程度區分【基於人的背景上的相似度】
好處是適合新用戶、不依賴物品本身數據,
缺點是粗糙且涉及一些敏感個人信息。

2. 基於內容的推薦(Content-based Recommendation)
根據推薦物品或內容的元數據,發現物品或者內容的相關性,【有點愛屋及烏的意思】
這是在推薦引擎出現之初應用最為廣泛的推薦機制,核心思想是根據推薦物品或內容的元數據,發現物品或者內容的相關性,然后基於用戶以往的喜好記錄,推薦給用戶相似的物品。
【根據物品的相關性和用戶的喜好記錄推薦相似物品】

即如甲喜歡金庸的武俠,而古龍的書和金庸的武俠像,那么把古龍的書也推薦給甲。
這種基於內容的推薦機制的好處在於它能很好的建模用戶的口味,能提供更加精確的推薦。也很適用於新產品。
但它也存在以下幾個問題:
·需要對物品進行分析和建模,推薦的質量依賴於對物品模型的完整和全面程度(關鍵詞和標簽Tag被認為是描述物品元數據的一種簡單有效的方法)——需設定物品的關鍵詞和標簽化
·分析僅僅依賴於物品本身的特征,沒有考慮人對物品的態度;
·因為需要基於用戶以往的喜好歷史做出推薦,所以對於新用戶有“冷啟動”的問題,
雖然這個方法有很多不足和問題,但他還是成功的應用在一些電影,音樂,圖書的社交站點,有些站點還請專業的人員對物品進行基因編碼。
3.基於協同過濾的推薦(Collaborative Filtering-based Recommendation)【有點志趣相投的意思】
根據用戶對物品或者信息的偏好,發現物品或者內容本身的相關性,或者是發現用戶的相關性,然后再基於這些關聯性進行推薦,這種被稱為基於協同過濾的推薦。
可以分為三個子類:基於用戶的推薦、基於商品的推薦和基於模型的推薦。
3.1基於用戶的協同過濾推薦(User-based Recommendation)
基於用戶的協同過濾推薦的基本原理是,根據所有用戶對物品或者信息的偏好,發現與當前用戶口味和偏好相似的“鄰居”用戶群,在一般的應用中是采用計算“K- 鄰居”的算法;然后,基於這K 個鄰居的歷史偏好信息,為當前用戶進行推薦。【基於個體偏好而非背景上的人的相似度】

甲乙愛好相似(“鄰居”),且甲喜歡AB,乙喜歡ABC,那么把C推薦給A(C可能和AB毫無關系)。
——與基於人口統計學的推薦的區別:基於人口統計學的機制只考慮用戶本身的特征,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。
3.2基於商品的協同過濾推薦(Item-based Recommendation,又稱基於項目的)
基於商品的協同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對物品或者信息的偏好,發現物品和物品之間的相似度,然后根據用戶的歷史偏好信息,將類似的物品推薦給用戶。【基於全體偏好發現物的相似度,再根據個體偏好推薦】
——與基於內容的推薦的區別:基於內容的推薦僅根據物的相似度,不考慮個體偏好。

即如:發現金庸和古龍的武俠比較相似,甲喜歡金庸和古龍的武俠,而乙喜歡金庸的武俠,那么把古龍的武俠也推薦給乙(甲乙可能毫無關系)
——與機遇用戶的協同過濾推薦的對比:其實基於商品的協同過濾推薦機制是Amazon 在基於用戶的機制上改良的一種策略,因為在大部分的Web 站點中,物品的個數是遠遠小於用戶的數量的,而且物品的個數和相似度相對比較穩定,同時基於商品的機制比基於用戶的實時性更好一些。但如在一些新聞推薦系統則相反。
3.3基於模型的協同過濾推薦(Model-based Recommendation)
基於模型的協同過濾推薦就是基於樣本的用戶喜好信息,訓練一個推薦模型,然后根據實時的用戶喜好的信息進行預測,計算推薦。【降維建模,有點高大上的AI向】
基於用戶和基於商品的協同過濾推薦有一個大問題:它們太死了,就是說,它們能發現都喜歡同一樣東西的人,但卻忽略了愛好非常相似的潛在用戶組合。比如說你喜歡莫奈的睡蓮。那么,在這個法國印象派大師畫的 250 幅睡蓮中,你最喜歡哪一幅?在一群喜歡莫奈的人當中,完全可能每個人喜歡的睡蓮都不相同,而基本的算法就有可能識別不出這些人都有着共同的愛好。【基於屬性的表象而非內涵?】
此時需要降維(Dimensionality Reduction)的方法。我們來看看你愛吃的東西,以及如何把它跟其他一百萬人愛吃的東西做比較。你可以把這些信息用一個巨型矩陣表示出來,每一條豎線代表一樣食物,每個人愛吃什么東西就自然形成了一行。在你的這一行上面或許會顯示你給了烤牛排 5 顆星、紅燒小排 4 星半、烤雞翅 2 顆星、凍豆腐卷 1 顆星、奶酪烤蘑菇 5 顆星、鹽水毛豆 4 顆星,等等。
然而,使用這個矩陣的推薦算法並不關心你給哪種食物評了多少顆星。它想要了解的是你一般而言的喜好,這樣它可以將這個信息應用到更豐富多樣的食物上。比如說,基於你上面給出的信息,算法可能會認為你喜歡牛肉、咸的東西和烤制菜品,不喜歡雞肉和任何油炸的東西,不喜歡也不討厭蔬菜,依此類推【降維找到本質!】。你愛吃的食物所擁有的特點或者說維度,它的數量和符合你要求的食物的數量比起來要小得多——至多可能 50 或 100。通過查對這些維度,推薦算法可以迅速決定你是否會喜歡一種新的食物(比方說鹽焗排骨),方法就是把這種食物的各項維度(咸的、牛肉做的、不是雞肉、不是炒的、不是蔬菜、不是烤的)同你的資料進行比對。這種更為一般性的呈現使得推薦算法能准確的發現有着相似但不同喜好的用戶。而且,它大幅壓縮了矩陣的規模,使算法變得更加高效。
不過,你愛吃的食物的維度該上哪兒去找呢?肯定不是去問廚師。推薦系統會使用一種稱為奇異值分解的數學方法來計算維度,這種方法涉及到創建兩個保存原始數據的巨型矩陣,這也是這種方法的主要缺點。創建矩陣所需要的時間會隨着客戶和產品數量的增多而飛速增長——創建一個擁有 2.5 億名客戶和 1000 萬種產品的矩陣,需要花上創建一個 25 萬名客戶和 1 萬種產品的矩陣 10 億倍那么多的時間。而且這一過程還需要經常重復。一旦收到新的評分,矩陣就已經過時;在像亞馬遜這樣的公司,每一秒鍾都會收到新的評論。幸運的是,就算略微過時,矩陣仍然能以一個挺不錯的水平運作。研究人員們也已經在設計新的算法,為奇異值分解提供可用的近似值並顯著縮短計算時間。
基於協同過濾的推薦應用最廣泛,而它也存在以下幾個問題:
-
方法的核心是基於歷史數據,所以對新物品和新用戶都有“冷啟動”的問題。
-
推薦的效果依賴於用戶歷史偏好數據的多少和准確性。
-
在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的准確度有很大的影響等等。
-
對於一些特殊品味的用戶不能給予很好的推薦。
-
由於以歷史數據為基礎,抓取和建模用戶的偏好后,很難修改或者根據用戶的使用演變,從而導致這個方法不夠靈活。
其實在現在的推薦系統中,很少有只使用了一個推薦策略的推薦引擎,一般都是在不同的場景下使用不同的推薦策略從而達到最好的推薦效果。
3.1 Amazon
Amazon 作為推薦引擎的鼻祖,其推薦的核心是通過數據挖掘算法和比較用戶的消費偏好與其他用戶進行對比,借以預測用戶可能感興趣的商品。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 很多推薦是基於用戶的profile 計算出來的,用戶的profile 中記錄了用戶在Amazon 上的行為,包括看了那些物品,買了那些物品,收藏夾和wish list 里的物品等等,當然Amazon 里還集成了評分等其他的用戶反饋的方式,它們都是profile 的一部分,同時,Amazon 提供了讓用戶自主管理自己profile 的功能,通過這種方式用戶可以更明確的告訴推薦引擎他的品味和意圖是什么。
3.2 豆瓣
豆瓣的推薦是通過“豆瓣猜”,官方介紹——"你的個人推薦是根據你的收藏和評價自動得出的,每個人的推薦清單都不同。你的收藏和評價越多,豆瓣給你的推薦會越准確和豐富。每天推薦的內容可能會有變化。隨着豆瓣的長大,給你推薦的內容也會越來越准。”
這一點讓我們可以清晰明了的知道,豆瓣必然是基於社會化的協同過濾的推薦,這樣用戶越多,用戶的反饋越多,那么推薦的效果會越來越准確。
相對於Amazon 的用戶行為模型,豆瓣電影的模型更加簡單,就是“看過”和“想看”,這也讓他們的推薦更加專注於用戶的品味,畢竟買東西和看電影的動機還是有很大不同的。
另外,豆瓣也有基於物品本身的推薦,當你查看一些電影的詳細信息的時候,他會給你推薦出“喜歡這個電影的人也喜歡的電影”,這是一個基於協同過濾的應用。