讀書筆記《集體智慧編程》Chapter 2 : Make Recommendations

本章概要
本章主要介紹了兩種協同過濾(Collaborative Filtering)算法,用于個性化推薦:
  • 基于用戶的協同過濾(User-Based Collaborative Filtering,又稱 K-Nearest Neighbor Collaborative Filtering)
  • 基于條目的協同過濾(Item-Based Collaborative Filtering)
本章還介紹兩種向量相似性算法:
  • 歐氏距離(Euclidean Distance)
  • 皮爾斯稀疏(Pearson Coefficient)
?
協同過濾
協同過濾是在一大群用戶中尋找一些與你的用戶相似的用戶,然后將這些找到的用戶使用過但是你沒有使用過的物品(如電影,書籍,商品)推薦給你的用戶,因為你與這些用戶具有類似的愛好。
相似度算法
歐氏距離是平面幾何距離的n維擴展,值越大,越不相似,為了使得當距離越大時,越相似,需要對其歐氏距離轉換,轉換方式如下:
euc-dist(x,y) ?===> ? ?1/(1+euc-dist(x,y))
皮爾斯系數可以描述兩個向量的相關性,表示的兩個向量在二維坐標上分布為一條直線的程度,值在-1~1之間,越大,越相關。皮爾斯稀疏可以修復分數通脹(grade inflation)問題,舉個例子,A,B兩個用戶具有集齊相似的興趣,只是A打分相對較嚴格,一般比平均分低一分,但是A與B的pearson系數卻可以完美的為1.這種特性根據你的應用而定,可能會需要,至少在電影推薦的例子上是需要的,但是其他例子里面可能不需要.
User-Based Collaborative Filtering (or the K-Nearest Neighbor Collaborative Filtering)
計算你其他人所有人相似度,取前k個。
在k個人中,取出我沒有看過的電影,然后根據相似度與對應用戶對電影的打分成績,作加權平均值,分值越大,代表我可能越有興趣額。
這是一個通用算法,可以講商品,替換電影打分,那么就可以推斷我可能感興趣的商品。返回來也可以,可以根據商品推斷潛在購買者。抽象為下面的關系:
  • 用戶:影評 --> 推薦電影
  • 影評:用戶 --> 預測其他用戶影評(沒多大意義)
  • 用戶:商品 --> 推薦商品
  • 商品:用戶 --> 潛在購買用戶 ? ?商品之間的關系相對stable,相比于人之間的關系
Item-Based Collaborative Filtering(基于條目的系統過濾)
基于用戶的協同過濾最大的問題在于性能,計算量太大,當用戶陡增時無法做到實時推薦。因為每次推薦都要計算k個最近的用戶,開銷很大。
基本條目過濾的思路:計算出條目之間的相似性(相對穩定,可以在空閑時間計算),然后將根據用戶用過的條目和該條目對應用戶沒有用過的條目,計算加權平均值,推薦給用戶。
最大的好處是條目之間的關系相對穩定,可以提前計算。而且條目計算的結果可以優化,只計算每個條目最相似的k個條目,k << n(總體條目數)。
相比于基于用戶的協同顧慮,它更適合于稀疏矩陣。
基于條目的協同過濾,可以參見論文《Item-Based Collaborative Filtering Recommendation Algorithms》
更具此問題,基于條目的協同過濾比基于用戶的系統過濾更準確。
聲明:如有轉載本博文章,請注明出處。您的支持是我的動力!文章部分內容來自互聯網,本人不負任何法律責任。
本文轉自bourneli博客園博客,原文鏈接:http://www.cnblogs.com/bourneli/archive/2012/11/11/2765325.html,如需轉載請自行聯系原作者

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540505.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540505.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540505.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉載] python中的for循環對象和循環退出

參考鏈接&#xff1a; Python中循環 流程控制-if條件 判斷條件&#xff0c;1位true&#xff0c;0是flesh&#xff0c;成立時true&#xff0c;不成立flesh&#xff0c;not取反 if 1; print hello python print true not取反&#xff0c;匹配取反&#xff0c;表示取非1…

設計一個應用程序,以在C#中的按鈕單擊事件上在MessageBox中顯示TextBox中的文本...

Here, we took two controls on windows form that are TextBox and Button, named txtInput and btnShow respectively. We have to write C# code to display TextBox’s text in the MessageBox on Button Click. 在這里&#xff0c;我們在Windows窗體上使用了兩個控件&…

Oracle優化器:星型轉換(Star Query Transformation )

Oracle優化器&#xff1a;星型轉換&#xff08;Star Query Transformation &#xff09;Star query是一個事實表&#xff08;fact table&#xff09;和一些維度表&#xff08;dimension&#xff09;的join。每個維度表都跟事實表通過主外鍵join&#xff0c;且每個維度表之間不j…

[轉載] python循環中break、continue 、exit() 、pass的區別

參考鏈接&#xff1a; Python中的循環和控制語句(continue, break and pass) 1、break&#xff1a;跳出循環&#xff0c;不再執行 用在while和for循環中 用來終止循環語句&#xff0c;即循環條件沒有False條件或者序列還沒被完全遞歸完&#xff0c;也會停止執行循環語句 如果…

JavaScript | 聲明數組并使用數組索引分配元素的代碼

Declare an array, assign elements by indexes and print all elements in JavaScript. 聲明一個數組&#xff0c;通過索引分配元素&#xff0c;并打印JavaScript中的所有元素。 Code: 碼&#xff1a; <html><head><script>var fruits [];fruits[0]"…

[轉載] Python入門(輸入/輸出、數據類型、條件/循環語句)

參考鏈接&#xff1a; Python中的循環技術 在介紹之前我們先來看看計算機的三個根本性基礎&#xff1a; 1.計算機是執行輸入、運算、輸出的機器 2.程序是指令和數據的集合 3.計算機的處理方式有時與人們的思維習慣不同 &#xff08;以上是引自《計算機是怎樣跑起來的》…

第5章 函數與函數式編程

第5章 函數與函數式編程 凡此變數中函彼變數者&#xff0c;則此為彼之函數。 ( 李善蘭《代數學》) 函數式編程語言最重要的基礎是λ演算&#xff08;lambda calculus&#xff09;&#xff0c;而且λ演算的函數可以傳入函數參數&#xff0c;也可以返回一個函數。函數式編程 (簡稱…

mcq 隊列_人工智能能力問答中的人工智能概率推理(MCQ)

mcq 隊列1) Which of the following correctly defines the use of probabilistic reasoning in AI systems? In situations of uncertainty, probabilistic theory can help us give an estimate of how much an event is likely to occur or happen.It helps to find the pr…

[轉載] Python中的xrange和range的區別

參考鏈接&#xff1a; Python中的range()和xrange() 在python2 中 range(start,end,step)返回一個列表&#xff0c;返回的結果是可迭代對象&#xff0c;但不是迭代器。iter()轉化為列表迭代器。xrange()返回的是一個序列&#xff0c;他也是可迭代對象&#xff0c;但不是迭代…

Kubernetes基礎組件概述

本文講的是Kubernetes基礎組件概述【編者的話】最近總有同學問Kubernetes中的各個組件的相關問題&#xff0c;其實這些概念內容在官方文檔中都有&#xff0c;奈何我們有些同學可能英文不好&#xff0c;又或者懶得去看&#xff0c;又或者沒有找到&#xff0c;今天有時間就專門寫…

c語言將鏈表寫入二進制文件_通過逐級遍歷將二進制樹轉換為單鏈表的C程序

c語言將鏈表寫入二進制文件Problem statement: Write a C program to convert a binary tree into a single linked list by traversing level-wise. 問題陳述&#xff1a;編寫一個C程序&#xff0c;通過逐級遍歷將二進制樹轉換為單個鏈表 。 Example: 例&#xff1a; The ab…

[轉載] C Primer Plus 第6章 C控制語句 6.16 編程練習及答案

參考鏈接&#xff1a; 用Python打印金字塔圖案的程序 2019獨角獸企業重金招聘Python工程師標準>>> 1、編寫一個程序&#xff0c;創建一個具有26個元素的數組&#xff0c;并在其中存儲26個小寫字母。并讓該程序顯示該數組的內容。 #include int main (void) { …

C# String和string的區別

C#中同時存在String與string MSDN中對string的說明&#xff1a; string is an alias for String in the .NET Framework。string是String的別名而已&#xff0c;string是c#中的類&#xff0c;String是Framework的類&#xff0c;C# string 映射為 Framework的 String。如果用str…

要求用戶在Python中輸入整數| 限制用戶僅輸入整數值

input() function can be used for the input, but it reads the value as a string, then we can use the int() function to convert string value to an integer. input()函數可用于輸入&#xff0c;但它將值讀取為字符串&#xff0c;然后可以使用int()函數將字符串值轉換為…

[轉載] python——if語句、邏輯運算符號

參考鏈接&#xff1a; 用Python鏈接比較運算符 1.if條件判斷語句&#xff1a; if 要判斷的條件(True): 條件成立的時候&#xff0c;要做的事情 elif 要判斷的條件(True): .... elif 要判斷的條件(True): .... else: 條件不成立的時候要做的事情 示例&#xff1a; 判斷學生…

洛谷 P2689 東南西北【模擬/搜索】

題目描述 給出起點和終點的坐標及接下來T個時刻的風向(東南西北)&#xff0c;每次可以選擇順風偏移1個單位或者停在原地。求到達終點的最少時間。 如果無法偏移至終點&#xff0c;輸出“-1”。 輸入輸出格式 輸入格式&#xff1a; 第一行兩個正整數x1,y1&#xff0c;表示小明所…

單鏈表遍歷_單鏈表及其遍歷實現的基本操作

單鏈表遍歷單鏈表 (Single linked list) Single linked list contains a number of nodes where each node has a data field and a pointer to next node. The link of the last node is to NULL, indicates end of list. 單個鏈表包含許多節點&#xff0c;其中每個節點都有一…

[轉載] python中for語句用法_詳解Python中for循環的使用_python

參考鏈接&#xff1a; 在Python中將else條件語句與for循環一起使用 這篇文章主要介紹了Python中for循環的使用,來自于IBM官方網站技術文檔,需要的朋友可以參考下 for 循環 本系列前面 “探索 Python&#xff0c;第 5 部分&#xff1a;用 Python 編程” 一文討論了 if 語句和…

windows 軟鏈接的建立及刪除

在windows服務器上有時有這樣的需求&#xff0c;你的文件在f:\test中&#xff0c;但由于其它原因用戶訪問的是e:\test&#xff0c;如果又希望e:\test 中的文件與f:\test的保持同步&#xff0c;除了用同步軟件來做外&#xff0c;可以用windows 的文件夾映射來做 cmd: mklink /J …

8086簡單的指令流水線_在8086微處理器中執行流水線的指令和概念的步驟

8086簡單的指令流水線Any computer or machine works according to some instructions. These instructions are responsible for all the work that the machine does. But how does a machine work to understand and execute that instruction? 任何計算機或機器都按照某些…