日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

推荐算法概述(01)

發(fā)布時(shí)間:2023/12/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐算法概述(01) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是推薦系統(tǒng)

用戶沒有明確的需求,你需要的是一個(gè)自動(dòng)化的工具,它可以分析你的歷史興趣,從龐大的電影庫中找到幾部符合你興趣的電影供你選擇。這個(gè)工具就是個(gè)性化推薦系統(tǒng)。

推薦系統(tǒng)的主要任務(wù)
推薦系統(tǒng)的任務(wù)就是聯(lián)系用戶和信息,一方面幫助用戶發(fā)現(xiàn)對(duì)自己有價(jià)值的信息,另一方面讓信息能夠展現(xiàn)在對(duì)它感興趣的用戶面前,從而實(shí)現(xiàn)信息消費(fèi)者和信息生產(chǎn)者的雙贏
推薦系統(tǒng)與搜索引擎的區(qū)別
和搜索引擎一樣,推薦系統(tǒng)也是一種幫助用戶快速發(fā)現(xiàn)有用信息的工具。和搜索引擎不同的是,推薦系統(tǒng)不需要用戶提供明確的需求,而是通過分析用戶的歷史行為給用戶的興趣建模,從而主動(dòng)給用戶推薦能夠滿足他們興趣和需求的信息。因此,從某種意義上說,推薦系統(tǒng)和搜索引擎對(duì)于用戶來說是兩個(gè)互補(bǔ)的工具。搜索引擎滿足了用戶有明確目的時(shí)的主動(dòng)查找需求,而推薦系統(tǒng)能夠在用戶沒有明確目的的時(shí)候幫助他們發(fā)現(xiàn)感興趣的新內(nèi)容。

從物品的角度出發(fā),推薦系統(tǒng)可以更好地發(fā)掘物品的長(zhǎng)尾( long tail)
需要推薦的兩個(gè)因素
1.信息過載
2.用戶沒有明確的需求

2.個(gè)性化推薦系統(tǒng)的應(yīng)用

相信個(gè)性化推薦系統(tǒng)對(duì)每一個(gè)經(jīng)常使用互聯(lián)網(wǎng)的人來說都不陌生,購物時(shí)有個(gè)性化商品推薦、聽歌/看電影時(shí)有猜你喜歡的歌曲/電影推薦、逛論壇時(shí)有你想看的個(gè)性化熱帖推薦……隨著信息技術(shù)的飛速發(fā)展,人們逐漸走進(jìn)了信息過載的時(shí)代,從大量的信息中找出自己感興趣的東西成了一件困難的事情。一個(gè)好的推薦系統(tǒng),可以在用戶面前展示他感興趣的東西,為商家推廣產(chǎn)品,為平臺(tái)(網(wǎng)站或手機(jī)應(yīng)用)帶來流量……可以說是實(shí)現(xiàn)了三方的共贏。
那么問題來了,推薦系統(tǒng)向用戶推薦物品的依據(jù)有哪些呢?其中哪一種又是最優(yōu)的?如何評(píng)價(jià)一個(gè)推薦系統(tǒng)是好是壞呢?

3.推薦系統(tǒng)評(píng)測(cè)

實(shí)驗(yàn)方法

在推薦系統(tǒng)中,主要有三種評(píng)測(cè)推薦效果的實(shí)驗(yàn)方法:離線實(shí)驗(yàn),用戶調(diào)查和在線實(shí)驗(yàn)。
離線實(shí)驗(yàn)
離線實(shí)驗(yàn)通過日志系統(tǒng)獲得用戶行為數(shù)據(jù),生成數(shù)據(jù)集,將數(shù)據(jù)集劃分成訓(xùn)練集和測(cè)試集,在訓(xùn)練集上訓(xùn)練模型,測(cè)試集上進(jìn)行預(yù)測(cè),最后對(duì)預(yù)測(cè)結(jié)果進(jìn)行評(píng)測(cè)。
離線實(shí)驗(yàn)的優(yōu)點(diǎn)是,不需要用戶的實(shí)時(shí)參與,可以快速地進(jìn)行大量不同算法的測(cè)試;它的主要缺點(diǎn)是無法獲得點(diǎn)擊率、轉(zhuǎn)化率等很多商業(yè)上關(guān)注的指標(biāo),離線實(shí)驗(yàn)的指標(biāo)和商業(yè)指標(biāo)還存在著差距,比如高預(yù)測(cè)準(zhǔn)確率不等于高用戶滿意度。
用戶調(diào)查
用戶調(diào)查是推薦系統(tǒng)評(píng)測(cè)的一個(gè)重要工具,很多離線時(shí)沒有辦法評(píng)測(cè)的與用戶主觀感受有關(guān)的指標(biāo)都可以通過用戶調(diào)查獲得。選擇測(cè)試用戶時(shí),需要盡量保持測(cè)試用戶的分布與真實(shí)用戶的分布相同,同時(shí)要盡量保證是雙盲實(shí)驗(yàn)(實(shí)驗(yàn)人員和用戶事先不知道測(cè)試的目標(biāo)),避免實(shí)驗(yàn)結(jié)果受主觀成分的影響。
用戶調(diào)查的優(yōu)點(diǎn)是可以獲得體現(xiàn)用戶主管感受的指標(biāo),彌補(bǔ)離線實(shí)驗(yàn)的不足,同時(shí)相對(duì)在線實(shí)驗(yàn)風(fēng)險(xiǎn)較低;它的主要缺點(diǎn)是招募測(cè)試用戶代價(jià)大,因此會(huì)使測(cè)試結(jié)果的統(tǒng)計(jì)意義不足,此外,在很多時(shí)候設(shè)計(jì)雙盲實(shí)驗(yàn)非常困難,而且用戶在測(cè)試環(huán)境下的行為和真實(shí)環(huán)境下可能有所不同。
在線實(shí)驗(yàn)
在完成離線實(shí)驗(yàn)和必要的用戶調(diào)查后,可以將推薦系統(tǒng)上線做AB測(cè)試,AB測(cè)試是一種常用的在線評(píng)測(cè)算法的實(shí)驗(yàn)方法,它通過一定的規(guī)則將用戶隨機(jī)分成幾組,并對(duì)不同組的用戶采用不同的算法,然后通過統(tǒng)計(jì)不同組用戶的各種不同的評(píng)測(cè)指標(biāo)比較不同算法。

上圖是一個(gè)簡(jiǎn)單的AB評(píng)測(cè)系統(tǒng):用戶進(jìn)入網(wǎng)站后,流量分配系統(tǒng)(由后臺(tái)實(shí)驗(yàn)人員配置)決定用戶是否需要被進(jìn)行AB測(cè)試,然后用戶瀏覽網(wǎng)頁,瀏覽網(wǎng)頁時(shí)的行為都會(huì)被通過日志系統(tǒng)發(fā)回后臺(tái)數(shù)據(jù)庫,實(shí)驗(yàn)人員在后臺(tái)統(tǒng)計(jì)日志數(shù)據(jù)庫中的數(shù)據(jù),通過評(píng)測(cè)系統(tǒng)生成不同分組用戶的實(shí)驗(yàn)報(bào)告,并比較和評(píng)測(cè)實(shí)驗(yàn)結(jié)果。
總結(jié)
一般來說,一個(gè)新的推薦算法最終上線前,需要完成3個(gè)實(shí)驗(yàn):
首先,需要通過離線實(shí)驗(yàn)證明它在很多離線指標(biāo)上優(yōu)于現(xiàn)有的算法;然后,需要通過用戶調(diào)查確定它的用戶滿意度不低于現(xiàn)有算法;最后通過在線測(cè)試確定它在我們關(guān)心的指標(biāo)上優(yōu)于現(xiàn)有的算法。

評(píng)測(cè)指標(biāo)

用戶滿意度
用戶滿意度是評(píng)測(cè)推薦系統(tǒng)的最重要指標(biāo),它可以通過用戶調(diào)查獲得,設(shè)計(jì)問卷時(shí)要注意考慮到用戶在各方面的感受。對(duì)于在線系統(tǒng),用戶滿意度主要由對(duì)用戶行為的統(tǒng)計(jì)得到:設(shè)置用戶反饋按鈕,或者用點(diǎn)擊率、用戶停留時(shí)間和轉(zhuǎn)化率等指標(biāo)度量用戶的滿意度。
預(yù)測(cè)準(zhǔn)確度
預(yù)測(cè)準(zhǔn)確度度量了一個(gè)推薦系統(tǒng)預(yù)測(cè)用戶行為的能力,是最重要的推薦系統(tǒng)離線評(píng)測(cè)指標(biāo)。對(duì)于不同研究方向的離線推薦算法,預(yù)測(cè)準(zhǔn)確度的指標(biāo)也不相同,主要有兩種:
1、評(píng)分預(yù)測(cè)
評(píng)分預(yù)測(cè)的預(yù)測(cè)準(zhǔn)確度一般通過均方根誤差(RMSE)和平均絕對(duì)誤差(MAE)計(jì)算,對(duì)于測(cè)試集中的一個(gè)用戶u和物品i,令rui是用戶u對(duì)物品i的實(shí)際評(píng)分,而r’ui是推薦算法給出的預(yù)測(cè),那么RMSE和MAE的定義分別為:

python代碼如下:

def RMSE(records):return math.sqrt(sum([(rui-pui)*(rui-pui) for u,i,rui,pui in records])/float(len(records)))def MAE(records):return sum([abs(rui-pui) for u,i,rui,pui in records])/float(len(records))

2、個(gè)性化(TopN)推薦列表
TopN推薦列表的預(yù)測(cè)準(zhǔn)確率一般通過準(zhǔn)確率和召回率度量:

其中R(u)是推薦列表,T(u)是用戶在測(cè)試集上的行為列表。
通常來說,TopN推薦比評(píng)分預(yù)測(cè)更符合實(shí)際應(yīng)用。
覆蓋率
覆蓋率描述一個(gè)推薦系統(tǒng)對(duì)物品長(zhǎng)尾的發(fā)掘能力。覆蓋率有不同的定義方法,最簡(jiǎn)單的定義為推薦系統(tǒng)能夠推薦出來的物品占總物品集合的比例:

其中R(u)為用戶u的推薦列表。
個(gè)性化的推薦系統(tǒng)應(yīng)當(dāng)不僅僅能夠向用戶推薦那些熱門的物品,同時(shí)可以發(fā)掘適合用戶的非熱門物品,一個(gè)好的推薦系統(tǒng)不僅需要有比較高的用戶滿意度,也要有較高的覆蓋率。
但是上面的定義過于粗略,為了更細(xì)致地描述推薦系統(tǒng)發(fā)掘長(zhǎng)尾的能力,需要統(tǒng)計(jì)推薦列表中不同物品出現(xiàn)次數(shù)的分布。如果所有物品都出現(xiàn)在推薦列表中,且出現(xiàn)次數(shù)相差不大,那么推薦系統(tǒng)發(fā)現(xiàn)長(zhǎng)尾的能力就很好。信息熵Gini系數(shù)也可以用來定義覆蓋率:

其中p(i)是物品i的流行度除以所有物品流行度之和,ij是按照物品i流行度p()從小到大排序的物品列表中第j個(gè)物品。
多樣性
多樣性描述了推薦列表中物品兩兩之間的不相似性,假設(shè)s(i,j)定義了物品i和j之間的相似度,那么用戶u的推薦列表R(u)的多樣性定義如下:

而推薦系統(tǒng)的整體多樣性可以定義為所有用戶推薦列表多樣性的平均值。
其它評(píng)測(cè)指標(biāo)還有新穎性、驚喜度、信任度、實(shí)時(shí)性、健壯性等,在這里就不一一列舉。

用戶行為數(shù)據(jù)

用戶行為數(shù)據(jù)在網(wǎng)站上最簡(jiǎn)單的存在形式就是日志,日志中記錄了用戶的各種行為,比如網(wǎng)頁瀏覽、點(diǎn)擊、購買、評(píng)論、評(píng)分等等。
用戶行為在個(gè)性化推薦系統(tǒng)中一般分為顯性反饋行為隱性反饋行為。顯性反饋行為包括用戶明確表示對(duì)物品的喜好的行為,比如給物品評(píng)分,而隱性反饋行為是指那些不能明確反應(yīng)用戶喜好的行為,比如頁面瀏覽行為。隱性反饋數(shù)據(jù)比顯性反饋不明確,但其數(shù)據(jù)量更龐大。
此外,用戶活躍度和物品流行度的分布都服從長(zhǎng)尾分布,隨著用戶活躍度(物品流行度)的下降,用戶數(shù)量(物品數(shù)量)逐漸下降,但不會(huì)迅速墜落到零,而是極其緩慢地貼近于橫軸,粗看上去幾乎與橫軸平行延伸。

僅僅基于用戶行為數(shù)據(jù)設(shè)計(jì)的推薦算法一般稱為協(xié)同過濾算法,比如基于領(lǐng)域的算法、隱語義模型、基于圖的算法等等,下面對(duì)這幾種方法分別進(jìn)行介紹。

基于鄰域的算法

基于鄰域的算法是推薦系統(tǒng)中最基本的算法,分為兩大類,一類是基于用戶的協(xié)同過濾算法,一類是基于內(nèi)容的協(xié)同過濾算法。

基于用戶的協(xié)同過濾算法(UserCF)

計(jì)算用戶相似度
基于用戶的協(xié)同過濾算法通過找到和目標(biāo)用戶興趣相似的用戶集合,找到這個(gè)集合中的用戶喜歡的,且目標(biāo)用戶沒有聽說過的物品推薦給目標(biāo)用戶。
通過余弦相似度計(jì)算兩個(gè)用戶的興趣相似度

如果對(duì)兩兩用戶都利用余弦相似度計(jì)算,在用戶數(shù)很大時(shí)消耗的時(shí)間將會(huì)非常多,因此可以首先篩選出興趣物品集合交集不為零的用戶對(duì),然后再對(duì)這些情況除以分母計(jì)算興趣相似度。
利用UserCF篩選用戶感興趣的物品
得到用戶之間的興趣相似度后,UserCF算法會(huì)給用戶推薦和他興趣最相似的K個(gè)用戶喜歡的物品,下面的公式度量了UserCF中用戶u對(duì)物品i的感興趣程度:

其中S(u,k)包含和用戶u興趣最接近的K個(gè)用戶,wuv是用戶u和用戶v的興趣相似度,N(i)是對(duì)物品i有過行為的用戶合集,rvi代表用戶v對(duì)物品i的興趣,使用單一行為的隱反饋數(shù)據(jù)時(shí),所有的rvi=1。K值需要通過離線實(shí)驗(yàn),選擇在預(yù)測(cè)數(shù)據(jù)集上預(yù)測(cè)效果最好時(shí)所對(duì)應(yīng)的值。
相似度計(jì)算改進(jìn)
對(duì)一件冷門物品有過相同行為比對(duì)一件熱門物品有過相同行為更能說明兩個(gè)用戶興趣相似,比如,同時(shí)購買《數(shù)據(jù)挖掘?qū)д摗返挠脩麸@然比同時(shí)購買《新華字典》的用戶喜好更相近。因此,需要對(duì)相似度公式進(jìn)行如下的改進(jìn):

該公式通過1/log1+|N(i)|懲罰了用戶u和用戶v共同興趣列表中的熱門物品i,實(shí)驗(yàn)表明,改進(jìn)的UserCF算法的各預(yù)測(cè)指標(biāo)都有所提升。

基于物品的協(xié)同過濾算法(ItemCF)

計(jì)算物品相似度
基于物品的協(xié)同過濾算法是向用戶推薦與他們過去喜歡過的物品相似的物品。那么首先需要計(jì)算物品之間的相似度,可以由下面的公式計(jì)算:

|N(i)|和|N(j)|分別是喜歡物品i和物品j的用戶數(shù),分母之所以這樣設(shè)計(jì),是為了減輕熱門物品會(huì)和很多物品相似的可能性。
和UserCF算法類似,ItemCF算法在計(jì)算物品相似度時(shí)為了避免兩兩物品之間都需要進(jìn)行計(jì)算,首先建立用戶-物品倒排表,對(duì)于每個(gè)用戶,將他物品列表中的物品兩兩在共現(xiàn)矩陣中加1,最后將矩陣歸一化就可以得到物品之間的余弦相似度。
利用ItemCF篩選用戶感興趣的物品
得到物品之間的相似度之后,ItemCF通過以下公式計(jì)算用戶u對(duì)一個(gè)物品j的興趣:

其中S(j,K)包含和物品i最接近的K個(gè)物品,wji是物品i和物品j的相似度,N(u)是用戶喜歡的物品合集,rui代表用戶u對(duì)物品i的興趣,使用單一行為的隱反饋數(shù)據(jù)時(shí),所有的rui=1。
相似度計(jì)算改進(jìn)
試想這樣一種情況:如果有一個(gè)用戶從網(wǎng)上購買了數(shù)十萬本書準(zhǔn)備開書店,這數(shù)十萬本可能覆蓋眾多領(lǐng)域的書兩兩之間就產(chǎn)生了相似性,然而用戶購買這些書并非出于自己興趣,因此John S.Breese提出應(yīng)當(dāng)懲罰活躍用戶對(duì)物品相似度的貢獻(xiàn),將計(jì)算公式改進(jìn)為:

同時(shí),對(duì)于某些過于活躍的用戶,為了避免相似度矩陣過于稠密,通常直接忽略他們的興趣列表,不納入相似度計(jì)算的數(shù)據(jù)集。
物品相似度的歸一化
如果將ItemCF的相似度矩陣按最大值歸一化,可以提高推薦的準(zhǔn)確率、覆蓋率和多樣性。原因是,物品往往歸屬于不同的類,類物品之間的相似度往往比不同類物品之間的相似度要高,類物品之間的相似度都變成1,推薦時(shí)的多樣性和覆蓋率就更好了。歸一化公式如下:

UserCF和ItemCF的綜合比較

  • UserCF適用于用戶較少的場(chǎng)合,因?yàn)橛脩艉芏鄷r(shí)計(jì)算相似度矩陣的代價(jià)會(huì)很大,需要計(jì)算物品相似度矩陣的ItemCF則適用于物品數(shù)明顯小于用戶數(shù)的場(chǎng)合。
  • UserCF的推薦更社會(huì)化,反映了用戶所在的小型興趣群體中物品的熱門程度,ItemCF的推薦更加個(gè)性化,反映了用戶自己的興趣傳承。
  • 當(dāng)用戶有新行為時(shí),UserCF算法中推薦結(jié)果不一定立即變化,而ItemCF中一定會(huì)導(dǎo)致推薦結(jié)果的實(shí)時(shí)變化。
  • UserCF適用于新聞推薦,主要是由于在新聞網(wǎng)站用戶的興趣比較粗粒度且偏向于熱門,同時(shí),新聞的時(shí)效性很強(qiáng),維護(hù)物品相似度矩陣代價(jià)太大。
  • ItemCF適用于圖書、電影、音樂和電子商務(wù)中的推薦,因?yàn)樵谶@些網(wǎng)站中用戶的興趣比較固定,個(gè)性化推薦的任務(wù)是幫助用戶發(fā)現(xiàn)和他研究鄰域相關(guān)的物品。

隱語義模型(LFM)

基于興趣分類方法的核心思想是通過隱含特征聯(lián)系用戶興趣和物品,判斷用戶對(duì)哪些類的物品感興趣,再將屬于這些類的物品推薦給用戶。那么,如何給物品分類,分類的粒度如何確定?如何確定用戶對(duì)哪些類的物品感興趣,以及感興趣的程度?又如何確定物品在一個(gè)類中的權(quán)重呢?
隱語義分析技術(shù)基于用戶行為統(tǒng)計(jì)進(jìn)行自動(dòng)聚類,較好地解決了以上幾個(gè)問題。
LFM是隱語義分析技術(shù)中的一種模型,通過以下公式計(jì)算用戶u對(duì)物品i的興趣:

其中pu,k度量了用戶u的興趣和第k個(gè)隱類的關(guān)系,qi,k度量了第k個(gè)隱類和物品i之間的關(guān)系。計(jì)算這兩個(gè)參數(shù),需要一個(gè)訓(xùn)練集,對(duì)于每個(gè)用戶u,訓(xùn)練集里都包含了用戶u喜歡和不感興趣的物品,通過學(xué)習(xí)這個(gè)數(shù)據(jù)集,就可以獲得模型參數(shù)。

訓(xùn)練集采樣

在隱性反饋數(shù)據(jù)集中,只有正樣本,沒有負(fù)樣本。那么就需要在用戶沒有行為的物品中進(jìn)行負(fù)樣本的采用,經(jīng)過實(shí)驗(yàn),發(fā)現(xiàn)對(duì)負(fù)樣本的采樣應(yīng)該遵循以下原則:對(duì)于每個(gè)用戶,要保證正負(fù)樣本的平衡,對(duì)每個(gè)用戶采樣負(fù)樣本時(shí),選取熱門但用戶沒有行為的物品。
采樣完成后可以得到一個(gè)用戶-物品集K={(u,i)},如果(u,i)是正樣本,則rui=1,否則rui=0。

優(yōu)化損失函數(shù)

對(duì)于采樣完成的訓(xùn)練集,需要優(yōu)化如下?lián)p失函數(shù)來找到最合適的參數(shù)p和q:

最小化損失函數(shù)采用的是隨機(jī)梯度下降法。

基于圖的模型

基于圖的模型首先需要將用戶行為表示成二分圖模型,令G(V,E)表示用戶物品二分圖,其中V由用戶頂點(diǎn)合集VU和物品頂點(diǎn)合集VI組成,E為連接用戶節(jié)點(diǎn)和物品節(jié)點(diǎn)的邊的集合,用戶節(jié)點(diǎn)和物品節(jié)點(diǎn)相連說明該用戶對(duì)相連的物品產(chǎn)生過行為。
度量頂點(diǎn)之間相關(guān)性的方法有很多,主要有:兩個(gè)頂點(diǎn)之間的路徑數(shù),兩個(gè)頂點(diǎn)之間路徑的長(zhǎng)度,兩個(gè)頂點(diǎn)之間的路徑經(jīng)過的頂點(diǎn)。

基于隨機(jī)游走的PersonalRank算法

了解了二分圖模型的基本概念,下面介紹一種計(jì)算圖中頂點(diǎn)之間相關(guān)性的方法。
假設(shè)要給用戶u進(jìn)行個(gè)性化推薦,可以從用戶u對(duì)應(yīng)的節(jié)點(diǎn)vu開始在用戶物品二分圖上進(jìn)行隨機(jī)游走,游走到任何一個(gè)節(jié)點(diǎn)時(shí),首先按照概率決定是繼續(xù)游走還是停止這次游走并從vu節(jié)點(diǎn)重新開始游走。如果決定繼續(xù)游走,那么就從當(dāng)前節(jié)點(diǎn)指向的節(jié)點(diǎn)中按照均勻分布隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為游走下次經(jīng)過的節(jié)點(diǎn)。這樣,經(jīng)過很多次隨機(jī)游走后,每個(gè)物品節(jié)點(diǎn)被訪問到的概率會(huì)收斂到一個(gè)數(shù)。最終的推薦列表中物品的權(quán)重就是物品節(jié)點(diǎn)的訪問概率。
這種方法可以表示成如下公式:

PersonalRank算法可以通過隨機(jī)游走進(jìn)行比較好的理論解釋,但該算法在時(shí)間復(fù)雜度上有明顯的缺點(diǎn),可以通過將PR轉(zhuǎn)化成矩陣的方法進(jìn)行改進(jìn)。

總結(jié)

以上是生活随笔為你收集整理的推荐算法概述(01)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。