一文搞懂工程化協(xié)同推薦算法(一)

? ? ?作者:livan
? ? ?來源:數(shù)據(jù)EDTA
前言

推薦系統(tǒng)的重要性已經(jīng)不需要過多的強(qiáng)調(diào)了,隨處一搜索就能看到各領(lǐng)域的大佬告訴你推薦系統(tǒng)的構(gòu)建方法,面試的時(shí)候不講幾個(gè)協(xié)同都不好意思說自己懂算法,各個(gè)資料都會(huì)對(duì)協(xié)同的每一個(gè)細(xì)節(jié)詳細(xì)描述,但是,不知大家看完之后有沒有一個(gè)感觸:各個(gè)知識(shí)點(diǎn)都了解了,就是串不起了,而且也多少會(huì)有些疑惑,就這么簡(jiǎn)單?被全宇宙的人推崇的推薦算法就是簡(jiǎn)單的幾個(gè)表的來回計(jì)算嗎?那平時(shí)我們應(yīng)用的機(jī)器學(xué)習(xí)的各種算法都去哪里了?


1、協(xié)同推薦算法數(shù)理表達(dá)

市面上能接觸到的推薦內(nèi)容主要有兩類:一類是協(xié)同,多個(gè)表之間的計(jì)算推導(dǎo),有一些機(jī)器學(xué)習(xí)的影子,但是明顯感覺到機(jī)器學(xué)習(xí)算法是對(duì)協(xié)同的一次次補(bǔ)充,不是推薦的主流算法,再深究一下,很多人就開始大肆宣傳深度學(xué)習(xí)的神奇之處,用深度學(xué)習(xí)進(jìn)行推薦推演是多么的精準(zhǔn)高效。一時(shí)間搞的筆者一頭霧水。筆者也就這個(gè)問題咨詢過一些老牌的推薦大佬,得到了各種各樣的答案。深思良久,筆者將自己對(duì)推薦算法的一些理解整理出來,有不足之處歡迎大家批評(píng)指正。


1) 推薦算法本質(zhì)上不是一個(gè)技術(shù)問題,而是一個(gè)用技術(shù)解決問題的解決方案。
推薦的產(chǎn)生是由于產(chǎn)品越來越多,而由于精力、手機(jī)屏幕大小的限制,客戶能看到的范圍有限,長(zhǎng)尾現(xiàn)象越來越嚴(yán)重,為了方便客戶獲取到想要的產(chǎn)品,各個(gè)公司開始考慮根據(jù)用戶的喜好推薦客戶有傾向的產(chǎn)品,盡量減少馬太效應(yīng),推薦系統(tǒng)應(yīng)運(yùn)而生。
2) 推薦算法不是一個(gè)算法,而是一套算法集合,其算法范圍無所不包容。
推薦算法是由一系列算法組合而成,每個(gè)算法應(yīng)用場(chǎng)景不一樣,各個(gè)公司根據(jù)各自的客戶特征和商品屬性,挑選適合本公司使用的推薦邏輯,使用的算法也不完全一樣。協(xié)同推薦算法是比較早被研發(fā)出來的推薦邏輯,因?yàn)槠溥壿嬢^為清晰、可解釋性比較強(qiáng)、數(shù)據(jù)兼容性、可執(zhí)行性和工程化比較好,所以一直被各個(gè)公司應(yīng)用,后期推出的基于模型的推薦、基于深度學(xué)習(xí)的推薦也都能看到協(xié)同推薦的影子,可以說協(xié)同推薦是現(xiàn)在各個(gè)公司推薦系統(tǒng)的基礎(chǔ)邏輯。


????本文從推薦基礎(chǔ)的角度,將各個(gè)協(xié)同推薦的邏輯串聯(lián)在一起,希望能將協(xié)同推薦的基本結(jié)構(gòu)描述清楚,如有不足之處請(qǐng)指正:
協(xié)同推薦的基本內(nèi)容主要有三部分:
1) 基于用戶相似的推薦:
????主要是找尋興趣喜好相似的用戶,然后根據(jù)用戶購買的商品將商品推薦給相似的用戶。


????
????其中,用戶u和用戶v,令N(u)表示用戶u曾經(jīng)有過正面反饋的物品集合。????用戶對(duì)物品的感興趣程度:


2 ) 基于物品相似的推薦:
主要是找尋相似的商品,然后根據(jù)用戶購買的商品清單將相似商品推薦給用戶。


是同時(shí)喜歡物品i和j的用戶數(shù)。用戶對(duì)物品的喜好程度為:


3) 基于標(biāo)簽的推薦:
標(biāo)簽系統(tǒng)的主要原理是通過一定的方式標(biāo)記出用戶和商品的標(biāo)簽,進(jìn)而通過標(biāo)簽關(guān)聯(lián)用戶和商品。

用戶對(duì)標(biāo)簽的喜好程度為Pre(u,t):

其中:

表示用戶u使用所有標(biāo)簽標(biāo)記的次數(shù)和,
表示所有用戶對(duì)所有標(biāo)簽的標(biāo)記計(jì)數(shù)和,
表示所有用戶對(duì)標(biāo)簽t的標(biāo)記計(jì)數(shù)和。
為用戶u的所有評(píng)分的平均值。

4) 基于上下文的推薦:
常規(guī)的基于用戶協(xié)同的推薦為:

在此基礎(chǔ)上修改計(jì)算方法為:

為計(jì)算用戶相似度時(shí)的時(shí)間衰減函數(shù),N(i)為對(duì)物品i產(chǎn)生過行為的用戶個(gè)數(shù),a為時(shí)間衰減因子,
為熱門懲罰函數(shù)。
???
?????其中,
為用戶對(duì)物品評(píng)分時(shí)的時(shí)間衰減函數(shù)。由此可以得出新的推薦計(jì)算方式。


通過上面的描述,大家是不是對(duì)推薦算法有一個(gè)數(shù)理方面的了解呢?不知道有多少大佬看到這里,接下來我們用庫表的語言再進(jìn)行一次匯總描述,畢竟,我們的所有計(jì)算最終都是要落到數(shù)據(jù)倉庫中的,表的形式表達(dá)是IT人員的必經(jīng)之路。


◆?◆?◆ ?◆?◆
長(zhǎng)按二維碼關(guān)注我們
數(shù)據(jù)森麟公眾號(hào)的交流群已經(jīng)建立,許多小伙伴已經(jīng)加入其中,感謝大家的支持。大家可以在群里交流關(guān)于數(shù)據(jù)分析&數(shù)據(jù)挖掘的相關(guān)內(nèi)容,還沒有加入的小伙伴可以掃描下方管理員二維碼,進(jìn)群前一定要關(guān)注公眾號(hào)奧,關(guān)注后讓管理員幫忙拉進(jìn)群,期待大家的加入。
管理員二維碼:
評(píng)論
圖片
表情
