購物網站的商品推薦算法有哪些?

做者:Razzit
連接:https://www.zhihu.com/question/19967564/answer/25015492
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

歷史上,關聯規則是最早被想到的推薦方法,啤酒和尿布的例子你們應該耳熟,不過某次去中科大參加龍星課程,據老師講,當時IBM那幫人作關聯規則苦於沒有數據集,因而杜撰了一個數據集,結果跑出了啤酒和尿布這一奇葩,最後居然你們都相信了。
關聯規則最重要的就是發現共現關係(挖掘頻繁項目集),經典算法有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
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

注:如下內容非原創,爲本人2年前整理自網上多種來源,但來源當時未標記,
時過境遷,也許推薦引擎再也不是當初的模樣。
——————我-是-分-隔-線,我是辛勤的搬運工,我是變態的整理俠——————————

與購物網站內部的搜索對應,購物網站通常還會有推薦引擎。由於在不少狀況下,用戶其實並不明確本身的須要,或者他們的需求很難用簡單的關鍵字來表述。又或者他們須要更加符合他們我的口味和喜愛的結果。最先將推薦引擎投入大規模使用的是亞馬遜,它採用了一種關聯推薦機制:當用戶購買了一本書以後,頁面上會出現這樣一個框:你可能對這幾本書也有興趣。 html

根據推薦引擎是否爲不一樣的用戶推薦不一樣的數據可分爲基於大衆行爲的推薦引擎(千人一面)和個性化推薦引擎(相似千人千面),題主說的應該主要是個性化的推薦引擎算法

a1. 根據大衆行爲的推薦引擎,對每一個用戶都給出一樣的推薦,這些推薦能夠是靜態的由系統管理員人工設定的,或者基於系統全部用戶的反饋統計計算出的當下比較流行的物品。網絡

a2.個性化推薦引擎,對不一樣的用戶,根據他們的口味和喜愛給出更加精確的推薦,這時,系統須要瞭解需推薦內容和用戶的特質,或者基於社會化網絡,經過找到與當前用戶相同喜愛的用戶,實現推薦。學習

1、推薦引擎的工做原理網站


通常狀況下,推薦引擎所須要的數據源包括:編碼

  • 要推薦物品或內容的元數據,例如關鍵字,基因描述等;spa

  • 系統用戶的基本信息,例如性別,年齡等設計

  • 用戶對物品或者信息的偏好,根據應用自己的不一樣,可能包括用戶對物品的評分,用戶查看物品的記錄,用戶的購買記錄等。3d

——其實這些用戶的偏好信息能夠分爲兩類:
顯式的用戶反饋:這類是用戶在網站上天然瀏覽或者使用網站之外,顯式的提供反饋信息,例如用戶對物品的評分,或者對物品的評論(UGC內容);
隱式的用戶反饋:這類是用戶在使用網站是產生的數據,隱式的反應了用戶對物品的喜愛,例如用戶購買了某物品,用戶查看了某物品的信息等等(行爲內容)。

顯式的用戶反饋能準確的反應用戶對物品的真實喜愛,但須要用戶付出額外的代價,而隱式的用戶行爲,經過一些分析和處理,也能反映用戶的喜愛,只是數據不是很精確,有些行爲的分析存在較大的噪音。但只要選擇正確的行爲特徵,隱式的用戶反饋也能獲得很好的效果,只是行爲特徵的選擇可能在不一樣的應用中有很大的不一樣,例如在電子商務的網站上,購買行爲其實就是一個能很好表現用戶喜愛的隱式反饋。rest

2、個性化推薦引擎的分類

主要根據不一樣的數據源發現數據相關性的方法能夠分爲如下幾種:

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 億倍那麼多的時間。並且這一過程還須要常常重複。一旦收到新的評分,矩陣就已通過時;在像亞馬遜這樣的公司,每一秒鐘都會收到新的評論。幸運的是,就算略微過期,矩陣仍然能以一個挺不錯的水平運做。研究人員們也已經在設計新的算法,爲奇異值分解提供可用的近似值並顯著縮短計算時間。


基於協同過濾的推薦應用最普遍,而它也存在如下幾個問題:

  1. 方法的核心是基於歷史數據,因此對新物品和新用戶都有「冷啓動」的問題。

  2. 推薦的效果依賴於用戶歷史偏好數據的多少和準確性。

  3. 在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的準確度有很大的影響等等。

  4. 對於一些特殊品味的用戶不能給予很好的推薦。

  5. 因爲以歷史數據爲基礎,抓取和建模用戶的偏好後,很難修改或者根據用戶的使用演變,從而致使這個方法不夠靈活。

3、 個性化推薦引擎的應用
其實在如今的推薦系統中,不多有隻使用了一個推薦策略的推薦引擎,通常都是在不一樣的場景下使用不一樣的推薦策略從而達到最好的推薦效果。

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 的用戶行爲模型,豆瓣電影的模型更加簡單,就是「看過」和「想看」,這也讓他們的推薦更加專一於用戶的品味,畢竟買東西和看電影的動機仍是有很大不一樣的。

另外,豆瓣也有基於物品自己的推薦,當你查看一些電影的詳細信息的時候,他會給你推薦出「喜歡這個電影的人也喜歡的電影」,這是一個基於協同過濾的應用。

相關文章
相關標籤/搜索