八分鍾就看懂 | 推薦系統 (協同過濾) 原來這么簡單


 
 

八分鍾就看懂 | 推薦系統 (協同過濾) 原來這么簡單

 

上禮拜剛在Amazon買了TOTORO的汽車貼紙,這幾天打開Amazon都是這些相關的推薦。

 

哈哈,不管你是在國內,還是國外,用淘寶還是Amazon,你應該都有這種體驗吧;

 

 

有時候,哪怕你沒有買,只有瀏覽了幾樣商品,這些網站也會給你一些相關推薦。
 

不懂推薦系統背后原理的人,會覺得,
“哇!這原來就是傳說中的人工智能推薦啊,好了解我哦”

懂得人:“哦,這個網址,背后用的是哪個算法啊。”

今天,不管你懂不懂,八分鍾保證你看懂推薦系統背后的原理。

01 日常生活中的2種簡單的推薦方法

  • 第一種就是非定制的推薦系統;
  • 第二種就是定制化的推薦系統。
什么叫做非定制化的推薦系統呢?

簡單來說就是,什么最熱賣,什么關注的人多,就推薦你什么。

 

 

比如,水果店老板發現最近西瓜銷量排第一,於是呢,老板逢人就推薦西瓜。
 

這樣就產生一個問題了。
一個有糖尿病的老爺爺去買水果,老板也向他推薦西瓜。如果你是這位老爺爺,你肯定要不高興了吧。

 

 

“糖分這么高,還使勁推薦我這個,還是換一家吧。”
 

原本好好的生意,就這樣泡湯了。

老板,想了想,我是不是應該改變一下推薦方法啊。

 

 

比如,年紀大的人,我推薦獼猴桃,維生素豐富還能降血糖。小姑娘呢,可以推薦她們檸檬,美白又減肥。
 

上面的故事,就是平時我們日常生活中,會用到的推薦系統:

定制化的推薦系統,和非定制化的推薦系統。

02 定制化推薦系統的推薦方法

講到定制化的推薦系統里面常用的方法,一般常用的有兩大類。

第一種:協同過濾(collaborative filtering),什么是協同過濾呢,這個我們過會詳細講,因為這是目前蠻常用的推薦方法。

第二種:基於內容的推薦(content-based recommendation)。

基於內容的推薦大致是,我看了一篇關於足球的報道,之后又向我推薦了足球的相關報告。里面用的技術就是基於內容的推薦。

 

還有一些其他的推薦方法,比如co-occurrence,或者把幾種方法的結果都綜合組合一下的方法。

今天這篇文章,主要就是講的是推薦系統里的明星算法,也就是前面說的第一種:協同過濾 (collaborative filtering)~~

03 協同過濾是什么

協同過濾這個算法,目的就是找相似。
其中:找相似,可以是找相似的人,也可以找相似的東西。
  • 比如,我們找到相似的一群人,我們就能用其中一些人喜歡的東西,推薦給另一個人;

  • 找相似的東西的,如果一個人喜歡一樣東西,那么我再推薦她另一樣東西,因為這兩樣東西很相似。

講了這個兩個例子,是不是覺得協同過濾最重要的就是找相似啊,哈哈,那我們就講講這個算法的核心部分,怎么找相似。

04 協同過濾相似怎么找

 

 

我們都知道,坐標里面的兩個點,如果他們的夾角越小,那么這兩個點越相近(這里肯定有人要問為什么不是距離,這個問題后面會說)。
 

下面我們做個小練習,回顧一下初中知識,

  • 第一張圖兩個從原點出發的點,他們之間的夾角是30度,cos𝜽是0.86;
  • 第二張圖夾角是90度,cos𝜽是0;
  • 第三張圖夾角是150度,cos𝜽是-0.86。

是不是發現,角度越小,cos𝜽就越接近1,角度越大,cos𝜽就越接近-1。

那找相似我們就能直接用cos𝜽的大小來描述啦。

上面這個問題,用初中知識就能算出cos𝜽。

但是現實生活的例子是很復雜的呀,比如突然從xy軸的兩維, 變成xyz的三維,或者很多維的話,算cos𝜽怎么辦?

05 相似度的計算公式

 

 

下面引出相似度的計算公式,我們舉個例子,具體講下這個公式含義。
 
A點坐標是(0,2,3);
B點坐標是(5,2,0)

那這兩個點的cos𝜽就是
分子: 0* 5+2* 2+3* 0 = 4
分母:sqrt(0^2 + 2^2 + 3^2) * sqrt(5^2 + 2^2 + 0^2) = 19

分子除以分母,得出來cos𝜽 = 0.21。

根據我們之前說的越相似,cos𝜽越接近於1來看。你說,A點和B點,算是接近還是不接近呢?

06 化妝品網站的推薦例子 (找相似的人user-based)

來講一個電商網站的推薦例子。

小美一直喜歡在網上買化妝品,今天晚上,她又打開了常去的網站,逛逛。

 

 

這時候,網站的主頁上,正好有一個定制化推薦廣告位,需要給小美推薦一個美妝產品。
 

小美呢,以前在這個網站上買過口紅,眼影和香水,還給她們評價給過分。

除了小美的購買的記錄,我們還知道,其他人的購買記錄和評分,比如小麗,小紅,小花。

我們是不是能夠利用其他人的信息,來找到小美最可能買的東西,推薦給她呢?

這樣問題變得很簡單了,只要用我們之前說的,找小美和其他所有人之間的cos𝜽,然后挑幾個最接近她的人,看她們買過什么,給的評價怎么樣,然后推薦給小美,就行了。

 

 

首先第一步,我們先產生一個表格,豎着的是人,橫着的是化妝品,里面內容是她們給的化妝品評分。
 

第二步,沒有評分的化妝品,我們假設這些人都打0分。
這樣4個小女孩,就變成了之前公式里的4個點。
小美(4,0,0,5,1,0,0)
小麗(5,5,4,0,0,0,0)
小紅(0,0,0,2,4,5,0)
小花(0,3,0,0,0,0,3)


 

根據前面的公式,我們算出來

  • 相似度(小美,小麗) = 0.38
  • 相似度(小美,小紅) = 0.32
  • 相似度(小美,小花) = 0

這樣看下來,小美和小麗是相對比較相似的,然后是小紅。

 

 

通常情況下,我們一般會挑和小美1~3(N)個的相似的人,看他們的評價,綜合算出最后推薦給目標人群的產品。
 

這個例子里面,我們挑2個人,小麗和小紅,來綜合算出推薦給小美的東西。

由於7樣產品里面,小美買過3樣,有4樣還沒有買過和評價過,所以,我們只要知道,另外4樣小美可能會評價的分數,那么我們就可以挑最高的推薦給她。

利用小麗,和小紅的評價分數和她們與小美相似度,我們就能推算出小美的評價分數.

這里,我們用到的是平均加權方法。
 
  • 小美會給粉餅的打分是 = (5 *0.38 + 0 * 0.32)/(0.38+0) = 5
  • 小美會給粉餅的打分是 = (4 * 0.38 + 0 * 0.32)/(0.38+0) = 4.8
  • 小美會給乳液的打分是 = (0 * 0.38+5 * 0.32)/(0+0.32) = 5
這樣粉餅和潤膚露都是5,但由於小麗和小紅的相似度最高,她給粉餅是5分,所以我們推薦粉餅給小紅。

等等!讓我們倒退到第二步開頭,


第二步,沒有評分的化妝品,我們假設這些人都打0分。

 

 

打0分合理嗎?
誰說,她們一定都會給那些沒有買過、評價過的化妝品,打0分呀。
如果一個人以前給2個產品分別打過4分,2分。
然后,我們取一個平均值:3分。把這個3分,作為沒買過東西的可能打分,是不是更合理呢?

對的,完全正確。

這個方法在統計里面我們叫做標准化。標准化,不僅解決之前說的不合理性,還能解決每個人的評價標准差異。

比如,有人自認為5分就是她的最高分,而有些人比較嚴格覺得3分就是她認為的最高分。但是,其實3分,5分,都是這些人心目中的最高分。

標准化,就解決了這個問題。

我們回到之前的表格,在沒有評分的地方,我們算出平均值填進去。比如小美的平均值就是(4+5+1)/3 = 10/3; 小麗是(5+5+4)/3 =14/3。。。


 

為了達到標准化每個人的評價要求差異,我們將每個人的平均值就變成以0為中心,打分低於平均分的是負的數,高於平均分為正數。

 

 

公式是(分數-平均分)。
 

 

 

這樣我們有了標准化的打分表,重新算一遍小美和其他人的相似度,取和她最相似的人,綜合平均她們平均打過的分數,選出小美可能會打分最高的推薦給她。
 

07 化妝品網站的推薦例子 (找相似的物item-based)

記得我之前說,
"
找相似,可以是找相似的人,也可以找相似的東西。
比如,我們找到相似的一群人,我們就能用其中一些人喜歡的東西,推薦給另一個人;
找相似的東西的,如果一個人喜歡一樣東西,那么我再推薦她另一樣東西,因為這兩樣東西很相似呀。

 

"
 
上面那個例子就是找相似的人,現在我們說下找相似的東西。

有一天,小美又上網閑逛了,她買過也評分過潤膚露,眼影,香水,睫毛膏,這次只剩下口紅和粉餅沒有買,那下一個該推薦給她口紅呢,還是粉餅呢?

 

 

和人人相似一樣,物物相似的表格變成了,豎過來的是化妝品,橫過來的是人。
 

根據之前的順序,我們算出化妝品之間的相似性,步驟也是先填平均值->標准化->算cos相似度值->挑出幾個和目標物體相似的物體-> 結合物品打分和物品相似值,綜合打分->挑出分數高的推薦給小美。

這樣,我們算出,

  • 和口紅最接近的是潤膚露和睫毛膏;
  • 和粉餅最接近的是眼影和香水。

根據小美打過其他產品的分數,以及這些產品和口紅、粉餅相似度,我們算出:

  • 小美給口紅打分: (0.41 * 2 + 0.59 * 3)/(0.41+0.59) = 2.6
  • 小美給粉餅打分: (0.47 * 5 + 0.40 * 4)/(0.47+0.40) = 4.5


     
粉餅大於口紅,我們推薦粉餅給小美。
 

08 人人相似和物物相似的推薦哪個更好

現實生活中,其實兩個都有在用。但是物物相似更常用一點。因為每個人都有自己的喜好,用的不當心,容易產生反感。

比如一個男孩子買了啤酒,薯片。一個女孩子買了口紅,啤酒,薯片。根據計算,男孩和女孩很相似,然后推薦口紅給男孩。看起來,是不是很奇怪呀?但是如果你規則定的好,人人相似,也會有很好的效果。

推薦系統里的協同過濾就是這么簡單,最后你們能猜出亞馬遜給我推薦東西的背后,用的是人人相似,還是物物相似嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM