无码日韩精品一区二区三区浪潮_99国产精品久久久久9999高清_亚洲熟妇无码久久观看_亚洲a∨无码一区二区猫咪

微信掃碼登錄

其他登錄方式

綁定手機(jī)號(hào)

注冊(cè)

忘記密碼

用戶協(xié)議

綁定手機(jī)號(hào)

近期有不法分子打著愛盈利的旗號(hào),制作“愛盈利”名稱的App,并偽造愛盈利證件,騙取用戶信任,以抖音點(diǎn)贊賺錢或其他方式賺錢為名義,過程中以升級(jí)會(huì)員獲得高傭金為名讓用戶充值。
愛盈利公司鄭重聲明:我司沒有研發(fā)或運(yùn)營過任何名為“愛盈利”的APP,我司做任務(wù)賺錢類產(chǎn)品從沒有讓任何普通用戶充值升級(jí)會(huì)員。我公司產(chǎn)品均在本網(wǎng)站可查詢,請(qǐng)將網(wǎng)站拉至底部,點(diǎn)擊“關(guān)于我們”可查看愛盈利相關(guān)產(chǎn)品與服務(wù)。
溫馨提示:當(dāng)遇到此類問題請(qǐng)撥打官方電話或添加官方微信,以免財(cái)產(chǎn)損失。愛盈利官網(wǎng)地址:www.jza6.com。
  • 推廣與合作
X

推薦算法:3種協(xié)同過濾的原理及實(shí)現(xiàn)

來源:鳥哥筆記 277601

導(dǎo)讀:產(chǎn)品經(jīng)理要不要懂技術(shù)?要的!本系列文章將從最簡單的概念開始,逐步講解推薦系統(tǒng)的發(fā)展歷程和最新實(shí)踐。以產(chǎn)品經(jīng)理的視角,闡述推薦系統(tǒng)涉及的算法,技術(shù)和架構(gòu)。本章是第二章,將系統(tǒng)性地通過圖文的方式介紹協(xié)同過濾算法。

我有個(gè)兄弟,是抖音的點(diǎn)贊狂魔,他的點(diǎn)贊次數(shù)高達(dá)6924次,而且他大多數(shù)的贊都是給那些青春靚麗的小姐姐們,如下圖??此亩兑敉扑]內(nèi)容,都是滿目的小姐姐唱啊跳啊不亦樂乎,他也覺得甚爽。不過,好景不長,沒多久他就跟我說:“我再也不敢再點(diǎn)了,我老婆已經(jīng)發(fā)現(xiàn)我給小姐姐們點(diǎn)了上1000個(gè)贊,而且知道我點(diǎn)贊的視頻,也會(huì)推薦給她”。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

把好友看過的視頻推薦給用戶,這就是協(xié)同過濾。準(zhǔn)確地說,叫用戶協(xié)同過濾(User Collaborative Filtering)。

一、協(xié)同過濾概述(Collaborative Filtering)

協(xié)同過濾(簡稱CF)是推薦系統(tǒng)最重要的思想之一。在早期,協(xié)同過濾幾乎等同于推薦系統(tǒng)。協(xié)同過濾思想產(chǎn)生于1994年,被用于郵件系統(tǒng)上。2001年,亞馬遜用協(xié)同過濾算法來推薦相似商品。

協(xié)同過濾的思想比較簡單,主要有三種:

用戶協(xié)同過濾(UserCF)相似的用戶可能喜歡相同物品。如加了好友的兩個(gè)用戶,或者點(diǎn)擊行為類似的用戶被視為相似用戶。如我兄弟和她的太太互加了抖音好友,他們兩人各自喜歡的視頻,可能會(huì)產(chǎn)生互相推薦。

物品協(xié)同過濾(ItemCF)相似的物品可能被同個(gè)用戶喜歡。這個(gè)就是著名的世界杯期間沃爾瑪尿布和啤酒的故事了。這里因?yàn)槭澜绫陂g,奶爸要喝啤酒看球,又要帶娃,啤酒和尿布同時(shí)被奶爸所需要,也就是相似商品,可以放在一起銷售。

模型協(xié)同過濾:使用矩陣分解模型來學(xué)習(xí)用戶和物品的協(xié)同過濾信息。一般這種協(xié)同過濾模型有:SVD,SVD++等。這種協(xié)同過濾要比前兩個(gè)來得抽象些,這里先不解釋,后面詳述。

下面按照物品協(xié)同過濾,用戶協(xié)同過濾和模型協(xié)同過濾的順序,詳細(xì)解釋這幾種算法。

二、物品協(xié)同過濾的計(jì)算

2003年,亞馬遜發(fā)表了一篇論文,闡述了他們?nèi)绾斡梦锲穮f(xié)同過濾算法(Item-to-Item Collaborative Filtering),搭建他們“看了又看”功能。如下圖:鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

這是17年前的截圖,圖跟紙質(zhì)老照片那樣變得斑駁。圖中是在購物車關(guān)聯(lián)頁面的相關(guān)推薦。那么,這個(gè)協(xié)同過濾推薦是如何做計(jì)算出來的呢?

前面第一章說到,人工智能實(shí)踐過程三個(gè)步驟:數(shù)據(jù),學(xué)習(xí)和決策。這里也將用同樣步驟,以圖書銷售推薦為例,解釋物品協(xié)同過濾的過程。為了簡單化,假設(shè)某圖書銷售平臺(tái)總共有6本書銷售,有6個(gè)用戶購買。

數(shù)據(jù):用戶的評(píng)分?jǐn)?shù)據(jù),分值1-5分。每個(gè)用戶對(duì)圖書的評(píng)分如下圖矩陣所示。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營學(xué)習(xí)算法:前面說到ItemCF的定義是,相似的物品可能被同個(gè)用戶喜歡。反過來講,就是被同個(gè)用戶喜歡的物品是相似商品。如上圖中,圖書1和圖書2兩本書,被用戶A同時(shí)喜歡,這兩本書具有相似性。而圖書5和圖書6,沒有被同個(gè)用戶同時(shí)喜歡,不具有相似性。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

如果用余弦相似度計(jì)算圖書1和圖書2的相似度,也叫做cosine距離,計(jì)算過程為:

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

回想高中時(shí)候的課本我們就可以知道,上面的similarity計(jì)算公式,實(shí)際上就是計(jì)算書籍1的評(píng)分向量(4,5,4,0,0,0)和書籍2的評(píng)分向量(3,0,3,3,4,0)的 cos 夾角。

用同樣的方式,可以算出圖書1跟其他五本圖書相似度分別為0.27, 0 .79,0.32,0.99和0。對(duì)每兩本書計(jì)算完這個(gè)相似度后,就可以獲得全部圖書的相似矩陣。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

一個(gè)平臺(tái)不僅僅有6本圖書6個(gè)用戶,我們?cè)贁U(kuò)展到一般的情況。計(jì)算物品的相似度,實(shí)際是計(jì)算每兩個(gè)物品評(píng)分向量的cosine距離,評(píng)分向量的每一維,代表了一個(gè)用戶,下圖中,表格的第一行代表了所有用戶對(duì)物品A的評(píng)分。當(dāng)有100萬個(gè)用戶時(shí),也就是計(jì)算每兩個(gè)100萬維向量的距離。這樣就導(dǎo)致計(jì)算量很大,而且很多平臺(tái)不僅僅只有100萬用戶,因而這個(gè)低效的計(jì)算方式需要改進(jìn)。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

預(yù)測決策:

有了評(píng)分矩陣之后,預(yù)測決策一般有兩種場景。

一種是根據(jù)相似度排序推薦最近鄰物品。類似于“看了還看”,“買了還買”場景。在這里的例子中,我們知道圖書1和其他圖書的相似度排序分別是圖書5,圖書3,圖書4和圖書2。當(dāng)用戶點(diǎn)擊了圖書1時(shí),就可以按照相似順序從高到低推薦。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營第二種是根據(jù)相似度預(yù)測評(píng)分推薦物品。如何決策要不要給用戶B推薦圖書2,圖書4和圖書6呢?如下圖,通過用戶B對(duì)圖書1的評(píng)分 * 未知圖書與圖書1的相似度來預(yù)測用戶B對(duì)剩下圖書的評(píng)分。如圖書2的預(yù)測評(píng)分 =  圖書1的評(píng)分5分 * 圖書1和圖書2的相似度0.27 ,從而用戶B對(duì)圖書2的評(píng)分是:5*0.27=1.35。同樣方式計(jì)算出其他圖書的評(píng)分預(yù)測。鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

從上面的結(jié)果來看,用戶B對(duì)其他圖書評(píng)分比較低,這幾本圖書推薦的可能性大大減少。

物品協(xié)同過濾實(shí)際使用

這是推薦系統(tǒng)里最樸素的算法,因?yàn)樗挠?jì)算量會(huì)隨著用戶和物品的數(shù)量呈指數(shù)增長,所以它并不適合在大量用戶或大量物品的場景使用。在它誕生的年代,還沒有大數(shù)據(jù),這種計(jì)算方式耗費(fèi)大量內(nèi)存,需要做大量的優(yōu)化。我嘗試過用100萬用戶,100萬物品和500萬條的數(shù)據(jù)在256G內(nèi)存的機(jī)器上做過嘗試,計(jì)算一分鐘后就宣告內(nèi)存耗盡。確實(shí)需要計(jì)算的話,一般使用Spark來實(shí)現(xiàn)。

因?yàn)檫@個(gè)缺點(diǎn),就需要新的算法來計(jì)算物品的協(xié)同過濾。

前面提到,計(jì)算任意兩物品之間的相似度后,有兩個(gè)使用場景。針對(duì)這兩個(gè)場景,分別有不同的迭代算法:

  • 根據(jù)相似度排序推薦最近鄰物品:使用如Word2vec,Item2vec等Embedding類的算法,將物品嵌入固定的向量空間中,再使用LSH算法(局部敏感哈希算法)取最近鄰物品。這個(gè)后續(xù)文章會(huì)介紹。

  • 根據(jù)相似度預(yù)測評(píng)分推薦物品:本章后續(xù)介紹的SVD算法。

雖然這個(gè)算法使用較少了,但是物品協(xié)同過濾的思想都是一脈相乘的,理解了這個(gè)簡單的cosine相似度計(jì)算方式,可以更好理解后續(xù)的迭代算法。

最后補(bǔ)充一下,物品協(xié)同過濾的一個(gè)缺點(diǎn),或者說是協(xié)同過濾的缺點(diǎn),對(duì)于一個(gè)新物品,協(xié)同過濾是無法推薦的。因?yàn)樾挛锲酚脩魺o評(píng)分,導(dǎo)致它跟所有物品的相似度都是為0。這個(gè)是使用這個(gè)算法時(shí)非常需要注意的一個(gè)點(diǎn)。

三、用戶協(xié)同過濾計(jì)算

用戶協(xié)同過濾(UserCF)的計(jì)算方式跟物品協(xié)同過濾(ItemCF)的計(jì)算方式類似。不同的是由計(jì)算兩兩物品的相似度,轉(zhuǎn)換成計(jì)算兩兩用戶的相似度。如下圖所示:

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營評(píng)分了相同圖書的用戶為相似用戶,他們的相似度同樣也用cosine相似度公式來計(jì)算。計(jì)算完相似度后,就可以根據(jù)用戶間的相似性,預(yù)測用戶對(duì)未評(píng)分圖書進(jìn)行評(píng)分預(yù)測。

但是在亞馬遜上,由于用戶評(píng)分的稀疏性(很多用戶壓根不評(píng)分),沒有評(píng)分的用戶無法跟其他用戶計(jì)算相似性,從而導(dǎo)致很多用戶之間沒有相似度。所以2001年的時(shí)候,亞馬遜選擇物品協(xié)同過濾算法來做推薦,并發(fā)表了論文。這個(gè)論文也導(dǎo)致大家一度認(rèn)為物品協(xié)同過濾優(yōu)于用戶協(xié)同過濾。

其實(shí)只有最合適的算法,沒有最優(yōu)的算法

時(shí)間到了移動(dòng)互聯(lián)網(wǎng)的今天,我們更多是用點(diǎn)擊數(shù)據(jù),用戶好友關(guān)系,通訊錄或者甚至是同一個(gè)WIFI地址來計(jì)算用戶協(xié)同過濾,數(shù)據(jù)稀疏性得到一定程度上的解決?,F(xiàn)在,用戶的協(xié)同過濾在信息流內(nèi)容推薦,社交性的推薦系統(tǒng)有著很好的利用。比如抖音,因?yàn)閮?nèi)容更新頻繁,用戶協(xié)同過濾可以作為很好的召回手段,所以也就會(huì)出現(xiàn)老公點(diǎn)贊的視頻會(huì)被推薦給他老婆的情景。

同樣地,這里介紹的cosine相似度的算法,也不是工業(yè)界現(xiàn)在最佳實(shí)踐的用戶相似度計(jì)算方式了。用戶相似度的計(jì)算,現(xiàn)在的最佳實(shí)踐也同樣也是用Embedding的方式實(shí)現(xiàn)。

而且,用戶相似度的計(jì)算,最有效的方式不一定是通過本節(jié)中介紹的計(jì)算方式,帶社交功能的APP可以通過用戶的好友關(guān)系,一般的APP可以通過獲取用戶的通訊錄實(shí)現(xiàn)用戶協(xié)同過濾。這些方式都來的更加簡單和直接。

四、模型協(xié)同過濾-矩陣分解(SVD)

對(duì)于很多沒有計(jì)算機(jī)專業(yè)背景的人來說,直接理解SVD算法是很困難的。需要有高等數(shù)學(xué),線性代數(shù),還要理解機(jī)器學(xué)習(xí)模型中的目標(biāo)函數(shù),損失函數(shù),梯度,正則化,最小二乘法等概念。很多文章介紹SVD都很技術(shù),這里不準(zhǔn)備采用技術(shù)大咖們的方式。我還是繼續(xù)用圖文的方式介紹,這也許是世界上最簡單的理解SVD的方式。

首先介紹一下背景。

SVD算法的誕生,跟美國Netflix公司有關(guān)。這家公司中文名叫網(wǎng)飛,拍了大家熟悉的網(wǎng)劇《紙牌屋》。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

時(shí)間來到2006年,Netflix發(fā)起一個(gè)推薦系統(tǒng)的懸賞競賽。他們公開了自己網(wǎng)站的用戶數(shù)據(jù)評(píng)分?jǐn)?shù)據(jù)包,并放出100萬美元懸賞優(yōu)化推薦算法。凡是能在Netflix現(xiàn)有的推薦系統(tǒng)基礎(chǔ)上,把均方根誤差降低10%的人,都能參與瓜分這100萬美元。消息一放出,引來了無數(shù)高手參加。這場比賽中,最佳算法就是SVD。

背景介紹完了,接下來直接介紹SVD是怎么計(jì)算的。

還是跟前面那樣,簡單化問題:假設(shè)一個(gè)平臺(tái)只有4個(gè)用戶和4本圖書。

1、數(shù)據(jù):用戶對(duì)物品評(píng)分1-5分,且有以下評(píng)分記錄。

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

2、學(xué)習(xí)算法

根據(jù)線性代數(shù)我們知道,一個(gè)矩陣可以分解為多個(gè)矩陣的乘積。SVD英文全稱叫做Singular Value Decomposition,這個(gè)算法是個(gè)矩陣分解的通用名稱,在不同領(lǐng)域有不同的形式。在推薦系統(tǒng)領(lǐng)域,可以簡單的認(rèn)為,SVD就是將一個(gè)矩陣,在一定的精度損失下,將一個(gè)矩陣分解成兩個(gè)矩陣。運(yùn)用這個(gè)算法,我們可以將上圖的矩陣做以下的近似分解:

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

其中,用戶矩陣部分代表著每個(gè)用戶的偏好在一個(gè)二維隱語義空間上的映射。同樣地,物品矩陣代表著每本圖書的特性在一個(gè)二維隱語義空間上的映射。這兩個(gè)矩陣也就是模型的結(jié)果。這樣,我們訓(xùn)練模型的時(shí)候,就只需要訓(xùn)練用戶矩陣中的8個(gè)參數(shù)和物品矩陣中的8個(gè)參數(shù)即可。大大減少了計(jì)算量。

模型訓(xùn)練的過程,簡單地說,就是通過最小二乘法,不斷將用戶評(píng)分?jǐn)?shù)據(jù)迭代入矩陣中計(jì)算,直到把均方誤差優(yōu)化到最小。上圖的結(jié)果是我通過Spark的ML庫ALS模塊直接計(jì)算的。

算法的具體目標(biāo)函數(shù),損失函數(shù)和梯度等,詳述則涉及很多機(jī)器學(xué)習(xí)知識(shí)點(diǎn),這里就不作介紹了。技術(shù)方面有很多解讀文章,需要進(jìn)一步理解的同學(xué),可以搜索相關(guān)文章閱讀。

3、預(yù)測決策:

通過模型訓(xùn)練,我們得到用戶矩陣Q和物品矩陣P后,全部用戶對(duì)全部圖書的評(píng)分預(yù)測可以通過R = PQ來獲得。如上圖中,用戶A的向量(1.40,-1.18)乘以物品2的向量(2.19,0.73)則可得用戶A對(duì)物品1的評(píng)分預(yù)測為:1.40×(-1.18)+2.19×0.73=2.21。

對(duì)所有的用戶和物品都執(zhí)行相同操作,可以得到全部用戶對(duì)全部物品的評(píng)分。如下圖右側(cè)矩陣:

鳥哥筆記,用戶運(yùn)營,菠蘿王子,產(chǎn)品運(yùn)營

得到全部的評(píng)分預(yù)測后,我們就可以對(duì)每本圖書進(jìn)行擇優(yōu)推薦。需要注意的是,用戶矩陣和物品矩陣的乘積,得到的評(píng)分預(yù)估值,與用戶的實(shí)際評(píng)分不是全等關(guān)系,而是近似相等的關(guān)系。如上圖中兩個(gè)矩陣綠色部分,用戶實(shí)際評(píng)分和預(yù)估評(píng)分都是近似的,有一定的誤差。

在現(xiàn)在的實(shí)際應(yīng)用中,SVD一般作為協(xié)同過濾的離線召回使用。一般地,將需要給用戶推薦的物品提前離線計(jì)算好,存在HBASE中,在用戶有請(qǐng)求的時(shí)候,直接讀取推薦的結(jié)果,放入初排階段的召回集中。

五、總結(jié)

1、協(xié)同過濾優(yōu)點(diǎn):

協(xié)同推薦是應(yīng)用最廣泛的推薦算法?;趦?nèi)容推薦的算法,需要給物品打上標(biāo)簽和給用戶建用戶畫像,才能實(shí)現(xiàn)匹配推薦。相比之下,協(xié)同過濾簡單了許多。它是僅使用用戶行為的進(jìn)行推薦,我們不需要對(duì)物品或信息進(jìn)行完整的標(biāo)簽化分析,避免了一些人可能難以量化描述的概念的標(biāo)簽構(gòu)建,又可以很好地發(fā)現(xiàn)用戶的潛在興趣偏好。

2、協(xié)同過濾缺點(diǎn):

因?yàn)閰f(xié)同過濾依賴用戶的歷史數(shù)據(jù),面對(duì)新的用戶或者新的物品,在開始的時(shí)候沒有數(shù)據(jù)或數(shù)據(jù)較少時(shí),協(xié)同過濾算法無法做出推薦。需要等數(shù)據(jù)積累,或者其他方案進(jìn)行彌補(bǔ)缺陷,也就是常說的冷啟動(dòng)的問題。

3、機(jī)器學(xué)習(xí)領(lǐng)域

當(dāng)精確的方式不行難以計(jì)算或者速度太慢的時(shí)候,往往會(huì)選擇犧牲一點(diǎn)精度,達(dá)到差不多但非常快速的效果。SVD就是其中的一個(gè)例子。

4、沒有完美的算法,只有最合適的算法

現(xiàn)在的實(shí)踐,也不是單純用協(xié)同過濾來做推薦,而是將他們作為其中的一個(gè)或幾個(gè)召回策略來使用。

文章來源:鳥哥筆記

【轉(zhuǎn)載說明】   若上述素材出現(xiàn)侵權(quán),請(qǐng)及時(shí)聯(lián)系我們刪除及進(jìn)行處理:[email protected]

評(píng)論

相關(guān)文章推薦

SELECT dw_posts.ID,dw_posts.post_title,dw_posts.post_content FROM dw_posts INNER JOIN dw_term_relationships ON (dw_posts.ID = dw_term_relationships.object_id) WHERE 1=1 AND dw_posts.ID not in (275060) AND(dw_term_relationships.term_taxonomy_id = 6593 ) AND dw_posts.post_type = 'post' AND (dw_posts.post_status = 'publish') GROUP BY dw_posts.ID ORDER BY RAND() LIMIT 0, 5

京ICP備15063977號(hào)-2 ? 2012-2018 aiyingli.com. All Rights Reserved. 京公網(wǎng)安備 11010102003938號(hào)