什麼是推薦演算法
推薦演算法最早在1992年就提出來了,但是火起來實際上是最近這些年的事情,因為網際網路的爆發,有了更大的資料量可以供我們使用,推薦演算法才有了很大的用武之地。
最開始,所以我們在網上找資料,都是進yahoo,然後分門別類的點進去,找到你想要的東西,這是一個人工過程,到後來,我們用google,直接搜尋自己需要的內容,這些都可以比較精準的找到你想要的東西,但是,如果我自己都不知道自己要找什麼腫麼辦?最典型的例子就是,如果我開啟豆瓣找電影,或者我去買說,我實際上不知道我想要買什麼或者看什麼,這時候推薦系統就可以派上用場了。
推薦演算法的條件
推薦演算法從92年開始,發展到現在也有20年了,當然,也出了各種各樣的推薦演算法,但是不管怎麼樣,都繞不開幾個條件,這是推薦的基本條件
根據和你共同喜好的人來給你推薦
根據你喜歡的物品找出和它相似的來給你推薦
根據你給出的關鍵字來給你推薦,這實際上就退化成搜尋演算法了
根據上面的幾種條件組合起來給你推薦
實際上,現有的條件就這些啦,至於怎麼發揮這些條件就是八仙過海各顯神通了,這麼多年沉澱了一些好的演算法,今天這篇文章要講的基於使用者的協同過濾演算法就是其中的一個,這也是最早出現的推薦演算法,並且發展到今天,基本思想沒有什麼變化,無非就是在處理速度上,計算相似度的演算法上出現了一些差別而已。
基於使用者的協同過濾演算法
我們先做個詞法分析基於使用者說明這個演算法是以使用者為主體的演算法,這種以使用者為主體的演算法比較強調的是社會性的屬性,也就是說這類演算法更加強調把和你有相似愛好的其他的使用者的物品推薦給你,與之對應的是基於物品的推薦演算法,這種更加強調把和你你喜歡的物品相似的物品推薦給你。
然後就是協同過濾了,所謂協同就是大家一起幫助你啦,然後後面跟個過濾,就是大家是商量過後才把結果告訴你的,不然資訊量太大了。。
所以,綜合起來說就是這麼一個演算法,那些和你有相似愛好的小夥伴們一起來商量一下,然後告訴你什麼東西你會喜歡。
演算法描述
相似性計算
我們儘量不使用複雜的數學公式,一是怕大家看不懂,難理解,二是我是用mac寫的blog,公式不好畫,太麻煩了。。
所謂計算相似度,有兩個比較經典的演算法
Jaccard演算法,就是交集除以並集,詳細可以看看我這篇文章。
餘弦距離相似性演算法,這個演算法應用很廣,一般用來計算向量間的相似度,具體公式大家google一下吧,或者看看這裡
各種其他演算法,比如歐氏距離演算法等等。
不管使用Jaccard還是用餘弦演算法,本質上需要做的還是求兩個向量的相似程度,使用哪種演算法完全取決於現實情況。
我們在本文中用的是餘弦距離相似性來計算兩個使用者之間的相似度。
與目標使用者最相鄰的K個使用者
我們知道,在找和你興趣愛好相似的小夥伴的時候,我們可能可以找到幾百個,但是有些是好基友,但有些只是普通朋友,那麼一般的,我們會定一個數K,和你最相似的K個小夥伴就是你的好基友了,他們的愛好可能和你的愛好相差不大,讓他們來推薦東西給你(比如肥皂)是最好不過了。
什麼是推薦演算法
推薦演算法最早在1992年就提出來了,但是火起來實際上是最近這些年的事情,因為網際網路的爆發,有了更大的資料量可以供我們使用,推薦演算法才有了很大的用武之地。
最開始,所以我們在網上找資料,都是進yahoo,然後分門別類的點進去,找到你想要的東西,這是一個人工過程,到後來,我們用google,直接搜尋自己需要的內容,這些都可以比較精準的找到你想要的東西,但是,如果我自己都不知道自己要找什麼腫麼辦?最典型的例子就是,如果我開啟豆瓣找電影,或者我去買說,我實際上不知道我想要買什麼或者看什麼,這時候推薦系統就可以派上用場了。
推薦演算法的條件
推薦演算法從92年開始,發展到現在也有20年了,當然,也出了各種各樣的推薦演算法,但是不管怎麼樣,都繞不開幾個條件,這是推薦的基本條件
根據和你共同喜好的人來給你推薦
根據你喜歡的物品找出和它相似的來給你推薦
根據你給出的關鍵字來給你推薦,這實際上就退化成搜尋演算法了
根據上面的幾種條件組合起來給你推薦
實際上,現有的條件就這些啦,至於怎麼發揮這些條件就是八仙過海各顯神通了,這麼多年沉澱了一些好的演算法,今天這篇文章要講的基於使用者的協同過濾演算法就是其中的一個,這也是最早出現的推薦演算法,並且發展到今天,基本思想沒有什麼變化,無非就是在處理速度上,計算相似度的演算法上出現了一些差別而已。
基於使用者的協同過濾演算法
我們先做個詞法分析基於使用者說明這個演算法是以使用者為主體的演算法,這種以使用者為主體的演算法比較強調的是社會性的屬性,也就是說這類演算法更加強調把和你有相似愛好的其他的使用者的物品推薦給你,與之對應的是基於物品的推薦演算法,這種更加強調把和你你喜歡的物品相似的物品推薦給你。
然後就是協同過濾了,所謂協同就是大家一起幫助你啦,然後後面跟個過濾,就是大家是商量過後才把結果告訴你的,不然資訊量太大了。。
所以,綜合起來說就是這麼一個演算法,那些和你有相似愛好的小夥伴們一起來商量一下,然後告訴你什麼東西你會喜歡。
演算法描述
相似性計算
我們儘量不使用複雜的數學公式,一是怕大家看不懂,難理解,二是我是用mac寫的blog,公式不好畫,太麻煩了。。
所謂計算相似度,有兩個比較經典的演算法
Jaccard演算法,就是交集除以並集,詳細可以看看我這篇文章。
餘弦距離相似性演算法,這個演算法應用很廣,一般用來計算向量間的相似度,具體公式大家google一下吧,或者看看這裡
各種其他演算法,比如歐氏距離演算法等等。
不管使用Jaccard還是用餘弦演算法,本質上需要做的還是求兩個向量的相似程度,使用哪種演算法完全取決於現實情況。
我們在本文中用的是餘弦距離相似性來計算兩個使用者之間的相似度。
與目標使用者最相鄰的K個使用者
我們知道,在找和你興趣愛好相似的小夥伴的時候,我們可能可以找到幾百個,但是有些是好基友,但有些只是普通朋友,那麼一般的,我們會定一個數K,和你最相似的K個小夥伴就是你的好基友了,他們的愛好可能和你的愛好相差不大,讓他們來推薦東西給你(比如肥皂)是最好不過了。