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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

聊聊如何提升推荐系统的结果多样性

發(fā)布時(shí)間:2024/7/5 windows 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊聊如何提升推荐系统的结果多样性 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文 | 洪九(李戈)

源 | 知乎


個(gè)性化推薦系統(tǒng)的出現(xiàn)為處理信息過(guò)載問(wèn)題提供了一個(gè)有效的工具,已經(jīng)成為互聯(lián)網(wǎng)各大平臺(tái)(電商、信息流等)的標(biāo)配,并在技術(shù)(個(gè)性化召回、個(gè)性化排序等)上取得了長(zhǎng)足的發(fā)展,逐漸從傳統(tǒng)模型過(guò)度到深度學(xué)習(xí)時(shí)代。但是,當(dāng)前個(gè)性化推薦以及相關(guān)算法的關(guān)注點(diǎn)大多數(shù)在提高推薦的精準(zhǔn)性,而忽略了推薦結(jié)果的多樣性,導(dǎo)致容易出現(xiàn)"high similar items were clustered together"現(xiàn)象,即相似的Item扎堆,用戶(hù)的興趣被局限到一個(gè)相對(duì)"較窄"(信息量為0的"精準(zhǔn)推薦")的推薦視野中,進(jìn)而傷害了用戶(hù)體驗(yàn)(尤其是興趣寬泛、偏逛、需求不明確的用戶(hù))。如下圖,可以看到在手淘的首頁(yè)推薦流中展示了多個(gè)類(lèi)目的商品,比如3C、衛(wèi)衣、化妝品等,可見(jiàn)已經(jīng)關(guān)注了多樣性問(wèn)題。

▲手淘首頁(yè)推薦流

推薦系統(tǒng)的多樣性反應(yīng)了一個(gè)推薦列表中內(nèi)容不相似的程度。通過(guò)推薦多樣性更高的內(nèi)容,既能夠給用戶(hù)更多的機(jī)會(huì)去發(fā)現(xiàn)新內(nèi)容,也能夠讓推薦系統(tǒng)更容易發(fā)現(xiàn)用戶(hù)潛在的興趣。但需要注意的是,精確性和多樣性是一對(duì)Trade Off,提升多樣性的代價(jià)往往以犧牲準(zhǔn)確性為代價(jià),因此如何平衡準(zhǔn)確性和多樣性是一個(gè)需要權(quán)衡的地方,或者從另一個(gè)角度講如何在短期目標(biāo)和長(zhǎng)期目標(biāo)間做平衡。 對(duì)比專(zhuān)賣(mài)店和大型綜合超市(銀座、萬(wàn)達(dá)等),專(zhuān)賣(mài)店(Nike專(zhuān)賣(mài)店、蘋(píng)果專(zhuān)賣(mài)店等)的購(gòu)買(mǎi)準(zhǔn)確率高于大型綜合超市,但由于大型綜合超市的多樣性比較好,客人在超市內(nèi)可以有購(gòu)物、看電影等多種選擇,因此客人在超市內(nèi)花費(fèi)的時(shí)間就約長(zhǎng),留存也就越高。

需要特別注意的是:多樣性不是目標(biāo),但是實(shí)踐證明多樣性可以幫助提升時(shí)長(zhǎng)、點(diǎn)擊、用戶(hù)長(zhǎng)期留存等核心業(yè)務(wù)指標(biāo)。此外,與精排階段的點(diǎn)擊率預(yù)估(用戶(hù)是否點(diǎn)擊)任務(wù)不同,多樣性處理通常是沒(méi)有g(shù)roudtruth(真值)的,通常需要A/B實(shí)驗(yàn)來(lái)確定多樣性策略的優(yōu)劣。

▲推薦系統(tǒng)目標(biāo)

推薦多樣性問(wèn)題的本質(zhì)是排序中CTR(點(diǎn)擊率)或類(lèi)似(CVR轉(zhuǎn)化率等)預(yù)估問(wèn)題是單點(diǎn)(Point-wise)最優(yōu)預(yù)測(cè),而通常真實(shí)業(yè)務(wù)中往往是給到用戶(hù)一個(gè)列表(List-wise排列組合優(yōu)化),即Point-wise和List-wise之間往往存在著較大的Gap。

▲推薦系統(tǒng)主要流程

如上圖是典型推薦系統(tǒng)的核心流程,為了增強(qiáng)推薦結(jié)果的多樣性,通常可以在各個(gè)階段采取不同的改進(jìn)策略。比如在召回階段,可以融合不同推薦召回算法的推薦結(jié)果,即多路召回。在重排序階段多樣性?xún)?yōu)化策略,工業(yè)界的代表性方法有:MRR(Maximal Marginal Relevance), Google、Youtube和Hulu推薦的DPP(Determinantal Point Process),阿里提出的基于Transformer的PRM,Google、Youtube提出的基于強(qiáng)化學(xué)習(xí)的模型SlateQ等。

下面會(huì)分別介紹:

  • 推薦多樣性類(lèi)型

  • 推薦多樣性評(píng)價(jià)指標(biāo)

  • 推薦多樣性策略

    • 召回多樣性策略

    • 精排層(Rank)多樣性策略

    • 重排序(Rerank)多樣性策略

    • 于用戶(hù)多樣性偏好的策略

1.推薦多樣性類(lèi)型

推薦多樣性類(lèi)型包括個(gè)體多樣性、總體多樣性、時(shí)序多樣性。

  • 個(gè)體多樣性

個(gè)體多樣性從單個(gè)用戶(hù)的視角衡量推薦的多樣性,考察系統(tǒng)能夠找到用戶(hù)喜歡的冷門(mén)項(xiàng)目的能力

  • 總體多樣性

總體多樣性主要強(qiáng)調(diào)針對(duì)不同用戶(hù)的推薦應(yīng)盡可能的不同。也就是所謂的"千人千面"。

  • 時(shí)序多樣性

時(shí)序多樣性是指用戶(hù)興趣的動(dòng)態(tài)進(jìn)化或者用戶(hù)情景的時(shí)變,即與過(guò)去的推薦相比,新的推薦體現(xiàn)出的多樣性。

評(píng)價(jià)一個(gè)推薦系統(tǒng)的多樣性可以從以上三個(gè)維度考量。

2. 推薦多樣性評(píng)價(jià)指標(biāo)**

無(wú)法衡量就無(wú)法優(yōu)化,對(duì)于多樣性通常可以參考如下衡量指標(biāo)。

2.1 ILS(intra-list similarity)

ILS主要是針對(duì)單個(gè)用戶(hù),一般來(lái)說(shuō)ILS值越大,單個(gè)用戶(hù)推薦列表多樣性越差。

其中, 和 為Item,為推薦列表長(zhǎng)度, 為相似性度量。

2.2 海明距離(Hamming distance)

其中, 為推薦列表長(zhǎng)度, 為系統(tǒng)推薦給用戶(hù) 和 兩個(gè)推薦列表中相同Item的數(shù)量。 衡量了不同用戶(hù)間的推薦結(jié)果的差異性,其值越大說(shuō)明不同用戶(hù)間的多樣性程度越高。

2.3 SSD (self-system diversity)

SSD指推薦列表中沒(méi)有包含在以前的推薦列表中的比例,主要考察推薦結(jié)果的時(shí)序多樣性。

其中, 是的上一次推薦, 。SSD值越小,推薦列表的時(shí)序多樣性越好。

2.4 覆蓋率(coverage)

覆蓋率是推薦給用戶(hù)的Item占所有Item的比例,用來(lái)衡量對(duì)長(zhǎng)尾Item的推薦能力。

2.5 次重復(fù)率

在一次推薦請(qǐng)求中,同一類(lèi)別的Item連續(xù)出現(xiàn) 次的比率。

2.6 Hellinger距離

通過(guò)計(jì)算生成的topK結(jié)果的多樣性分布和理想的多樣性分布之間的Hellinger距離,來(lái)衡量top K結(jié)果多樣性的好壞。

其中, 和 為離散概率分布。

對(duì)于特定維度的理想多樣性分布,可以基于用戶(hù)反饋統(tǒng)計(jì)。可以參考下文中介紹的思路。

谷育龍Eric:Airbnb搜索:重排序階段如何優(yōu)化搜索結(jié)果多樣性?(https://zhuanlan.zhihu.com/p/239824669)

3.推薦多樣性策略

3.1 召回多樣性策略

3.1.1 多路召回策略

俗話(huà)說(shuō)"巧婦難為無(wú)米之炊",從上圖召回階段(紅色框)在推薦系統(tǒng)流程中的位置可以看出,如果召回階段候選集本身不具備多樣性,例如只有開(kāi)心內(nèi)容,就無(wú)法保證整個(gè)推薦系統(tǒng)的多樣性。因此解決推薦系統(tǒng)的多樣性問(wèn)題,首先需要考慮的是召回階段的多樣性。實(shí)踐中通常使用多路召回保證更多樣的內(nèi)容可以進(jìn)入后續(xù)階段,工程上可以采用多線(xiàn)程并發(fā)召回。

▲多路召回

不同召回策略在準(zhǔn)確性、多樣性、新穎性、覆蓋率等指標(biāo)上存在較大差異,綜合利用各路召回給后面的策略更大的發(fā)揮空間。

▲召回策略詞云

3.1.2 長(zhǎng)尾多樣性?xún)?yōu)化

常見(jiàn)的基于協(xié)同過(guò)濾的召回算法(ItemCF、DSSM等)容易導(dǎo)致"熱門(mén)"推薦"熱門(mén)",使得長(zhǎng)尾的"利基"Item被淹沒(méi),因而不利于推薦多樣性,此時(shí)可以考慮如下策略緩解。

  • 熱度降權(quán)

在原有相似度計(jì)算公式中對(duì)Item的熱度做降權(quán)。

  • 熱度模型分割

基本思想如下圖所示:

3.1.3 用戶(hù)興趣多樣性探索

在基于用戶(hù)興趣標(biāo)簽的召回策略中,往往使得用戶(hù)興趣標(biāo)簽收斂到固定的標(biāo)簽子集。理想的情況是,對(duì)于用戶(hù)明確表達(dá)出興趣的標(biāo)簽以較大的概率曝光,而對(duì)于用戶(hù)沒(méi)有行為的標(biāo)簽也以一定的概率曝光。

如下圖用戶(hù)-算法-內(nèi)容三者交互圖:

▲用戶(hù)-算法-內(nèi)容三者關(guān)系

由于推薦庫(kù)中娛樂(lè)類(lèi)的數(shù)量和熱度占有較大優(yōu)勢(shì),推薦給用戶(hù)的娛樂(lè)類(lèi)就比較多,同時(shí)用戶(hù)點(diǎn)擊娛樂(lè)的概率越大,會(huì)更加傾向于給用戶(hù)推薦娛樂(lè)類(lèi)內(nèi)容。此外,由于協(xié)同過(guò)濾算法的效應(yīng),導(dǎo)致推薦給其他用戶(hù)的娛樂(lè)類(lèi)內(nèi)容也偏多。為了緩解此問(wèn)題,可以借助MAB(multi-arm bandit)中的EXP3算法。

EXP3,全稱(chēng)是Exponential-weight algorithm for Exploration and Exploitation,即勘探和開(kāi)發(fā)的指數(shù)權(quán)重算法。EXP3簡(jiǎn)要流程如下:

EXP3,初始化各個(gè)"臂"的權(quán)重因子,每一輪:

  • 1). 根據(jù)"臂"的權(quán)重分布隨機(jī)抽樣下一次選擇的臂(比如各個(gè)標(biāo)簽等)。

  • 2). 定義估計(jì)量(比如CTR、CVR、時(shí)長(zhǎng)占比等)。

  • 3). 依據(jù)反饋更新選中臂的權(quán)重因子。

隨機(jī)抽樣保證了每個(gè)臂都有可能被抽取到,避免了收斂到固定的幾個(gè)臂,同時(shí)收益較優(yōu)的臂被抽取的可能性較大,從而確保了推薦的準(zhǔn)確性

▲EXP3算法描述

在推薦系統(tǒng)中的運(yùn)用如下:

Python Code(參考自https://github.com/j2kun/exp3)

from probability import distr, draw import math import random# exp3: int, (int, int -> float), float -> generator # perform the exp3 algorithm. # numActions is the number of actions, indexed from 0 # rewards is a function (or callable) accepting as input the action and # producing as output the reward for that action # gamma is an egalitarianism factor def exp3(numActions, reward, gamma, rewardMin = 0, rewardMax = 1):weights = [1.0] * numActionst = 0while True:probabilityDistribution = distr(weights, gamma)choice = draw(probabilityDistribution)theReward = reward(choice, t)scaledReward = (theReward - rewardMin) / (rewardMax - rewardMin) # rewards scaled to 0,1estimatedReward = 1.0 * scaledReward / probabilityDistribution[choice]weights[choice] *= math.exp(estimatedReward * gamma / numActions)yield choice, theReward, estimatedReward, weightst = t + 1def test():numActions = 10numRounds = 10000biases = [1.0 / k for k in range(2,12)]rewardVector = [[1 if random.random() < bias else 0 for bias in biases] for _ in range(numRounds)]rewards = lambda choice, t: rewardVector[t][choice]# 計(jì)算最優(yōu)的臂(娛樂(lè)、健康類(lèi)目等)bestAction = max(range(numActions), key=lambda action: sum([rewardVector[t][action] for t in range(numRounds)]))bestUpperBoundEstimate = 2 * numRounds / 3gamma = math.sqrt(numActions * math.log(numActions) / ((math.e - 1) * bestUpperBoundEstimate))cumulativeReward = 0bestActionCumulativeReward = 0weakRegret = 0t = 0for (choice, reward, est, weights) in exp3(numActions, rewards, gamma):cumulativeReward += rewardbestActionCumulativeReward += rewardVector[t][bestAction]weakRegret = (bestActionCumulativeReward - cumulativeReward)regretBound = (math.e - 1) * gamma * bestActionCumulativeReward + (numActions * math.log(numActions)) / gammat += 1if t >= numRounds:breakprint(cumulativeReward)

3.2 精排層(Rank)多樣性策略

通過(guò)在精排模型中加入U(xiǎn)ser、Item、環(huán)境特征,達(dá)到在不同的維度的多樣性,一般來(lái)講特征越豐富個(gè)性化越強(qiáng)同時(shí)多樣性越強(qiáng)。

3.3 重排序(Rerank)多樣性策略

重排序的本質(zhì)是最大化list-wise的打分函數(shù),在相關(guān)性和多樣性間取得平衡,從運(yùn)籌學(xué)角度來(lái)講是一個(gè)典型的組合優(yōu)化問(wèn)題,一般也是NP-Hard(不能在有限時(shí)間內(nèi)得到精確最優(yōu)解)。

3.3.1 基于規(guī)則的多樣性策略

1).去重策略

對(duì)于已經(jīng)推薦的Item,短時(shí)間內(nèi)不再進(jìn)行推薦。在內(nèi)容治理角度講,需要盡量保證推薦源沒(méi)有重復(fù)Item。

2).頻控策略

對(duì)于具有相同屬性的Item,比如作者、類(lèi)別等,短時(shí)間內(nèi)控制推薦的次數(shù)。這里的"短時(shí)間",在不同業(yè)務(wù)場(chǎng)景不同Item類(lèi)型都是不一樣的,比如用戶(hù)一次請(qǐng)求、用戶(hù)session會(huì)話(huà)周期、商品復(fù)購(gòu)周期等。

3).打散策略

  • 最小間隔 ,即最多允許某一類(lèi)別連續(xù)出現(xiàn) 次,盡量避免用戶(hù)感覺(jué)到內(nèi)容的同質(zhì)化。

  • 最多次數(shù), 即最多允許某一類(lèi)別在一次請(qǐng)求中出現(xiàn) 次。

  • 窗口打散,即在大小為 的窗口(下圖中 )內(nèi)不允許出現(xiàn)同一類(lèi)目的Item。

▲推薦結(jié)果列表(盜圖-如侵刪)
  • 分桶打散

該方法把長(zhǎng)度為N的物品序列在關(guān)鍵指標(biāo)維度下進(jìn)行分桶打散,桶內(nèi)可以按相關(guān)性進(jìn)行倒排, 然后依次取桶內(nèi)排序靠前的物品,最終生成topk個(gè)結(jié)果。

推薦看這一篇——《百年芭蕾:推薦系統(tǒng)漫談之多樣性策略》https://zhuanlan.zhihu.com/p/268363776

4).長(zhǎng)尾加權(quán)

降低熱門(mén)Item被推薦的概率,提升冷門(mén)"利基"Item被推薦的概率,提高長(zhǎng)尾新穎性。可以使用逆用戶(hù)頻率做加權(quán):

3.3.2 MMR (Maximal Marginal Relevance)- 最大邊界相關(guān)算法

推薦系統(tǒng)多樣性問(wèn)題需要在準(zhǔn)確性和多樣性之間做平衡(trade off)。在搜索中,MMR算法將排序結(jié)果的相關(guān)性與多樣性綜合在下列公式中:

其中, 表示待查詢(xún)文檔, 表示候選集,表示已經(jīng)選擇的集合, 權(quán)重系數(shù)(用來(lái)調(diào)節(jié)準(zhǔn)確性和多樣性), 表示查詢(xún)文檔和候選集間的相關(guān)度,表示候選文檔間的相似度

上式的含義是從未選擇的集合(R\S)中選擇一個(gè)文檔 加入到 使得相關(guān)性與與已選擇列表集合的相關(guān)性的差值最大,即選擇與用戶(hù)最相關(guān)同時(shí)與已選擇文檔最不相似的文檔。

另外,在搜索中 代表查詢(xún)Query,而在推薦中 可以代表用戶(hù)。在推薦中,可以用預(yù)估CTR表示, 可以計(jì)算兩兩Item間的泛化特征(類(lèi)目、Tag、作者等)相似度。

參考代碼(如侵刪):

def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):s, r = [], list(itemScoreDict.keys())while len(r) > 0:score = 0selectOne = None# 遍歷所有剩余項(xiàng)for i in r:firstPart = itemScoreDict[i]# 計(jì)算候選項(xiàng)與"已選項(xiàng)目"集合的最大相似度secondPart = 0for j in s:sim2 = similarityMatrix[i][j]if sim2 > second_part:secondPart = sim2equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)if equationScore > score:score = equationScoreselectOne = iif selectOne == None:selectOne = i# 添加新的候選項(xiàng)到結(jié)果集r,同時(shí)從s中刪除r.remove(selectOne)s.append(selectOne)return (s, s[:topN])[topN > len(s)]

MMR算法的時(shí)間復(fù)雜度是 ,實(shí)際中一次不需要返回給用戶(hù)太多Item,可以限制下時(shí)間復(fù)雜度。

3.3.3.3 DPP 行列式點(diǎn)過(guò)程多樣性算法

先回顧下行列式的相關(guān)知識(shí)。

  • 行列式定義

行列式是由一些數(shù)據(jù)排列成的方陣經(jīng)過(guò)規(guī)定的計(jì)算方法而得到的一個(gè)數(shù)。在二維平面中,矩陣行列式的絕對(duì)值代表一個(gè)平行四邊形的面積;在三維空間中,矩陣行列式的絕對(duì)值代表一個(gè)平行六面體的體積。

二階行列式:

三階行列式:

幾何意義:

二階行列式的幾何意義就是由行列式的向量所張成的平行四邊形的面積。對(duì)于兩個(gè)推薦Item的語(yǔ)義向量,如果向量間的夾角比較小,則向量所構(gòu)成的面積也就越小,同時(shí)行列式值也就越小。相關(guān)關(guān)系傳遞如下:

語(yǔ)義向量相似=>夾角較小=>面積較小=>行列式較小

如下圖所示:

▲向量間相似與面積大小關(guān)系示意圖

這樣我們就在"向量語(yǔ)義相似"和"矩陣行列式"之間建立起聯(lián)系。

階行列式定義:

泛化到 階行列式就是: 行列式中的行或列向量所構(gòu)成的超平行多面體的有向面積或有向體積。

  • Cholesky Decomposition (Cholesky分解)

如果半正定矩陣且 ,則 可以分解成如下形式:

其中 和 如下:

Cholesky分解在線(xiàn)形代數(shù)中起到非常重要的作用。Cholesky分解把矩陣分解為一個(gè)下三角矩陣以及它的共軛轉(zhuǎn)置矩陣的乘積(類(lèi)比于實(shí)數(shù)求平方根運(yùn)算),與一般的矩陣分解求解方程的方法比較,Cholesky分解效率很高。

▲Python Cholesky分解實(shí)例

Tips:Cholesky是生于19世紀(jì)末的法國(guó)數(shù)學(xué)家,曾就讀于巴黎綜合理工學(xué)院。Cholesky分解是他在學(xué)術(shù)界最重要的貢獻(xiàn)。后來(lái),Cholesky參加了法國(guó)軍隊(duì),不久在一戰(zhàn)初始陣亡。

  • 行列式點(diǎn)過(guò)程(Determinantal point process)

行列式點(diǎn)過(guò)程(Determinantal Point Process, DPP) 是一種性能較高的概率模型,DPP將復(fù)雜的概率計(jì)算轉(zhuǎn)換成簡(jiǎn)單的行列式計(jì)算,在圖片分割、文本摘要和商品推薦系統(tǒng)中均具有較成功的應(yīng)用。在推薦中,DPP通過(guò)最大后驗(yàn)概率估計(jì),找到商品集中相關(guān)性和多樣性最大的子集,從而作為推薦給用戶(hù)的商品集。
(鬼話(huà)連篇~_~) 行列式點(diǎn)過(guò)程 刻畫(huà)的是一個(gè)離散集合 中每個(gè)子集合出現(xiàn)的概率。當(dāng) 給定空集合的概率時(shí),存在一個(gè)由集合 的元素構(gòu)成的半正定矩陣 ,對(duì)于每一個(gè)集合 的子集 ,使得子集出現(xiàn)的概率 ,其中, 表示有行和列的下標(biāo)屬于 構(gòu)成的矩陣 的子矩陣。

接下來(lái)解釋講解,如果將相關(guān)性(準(zhǔn)確性)多樣性融入到上面所講的DPP數(shù)學(xué)模型中。

首先設(shè)列向量 ,其中:

  • 為item i與user之間的相關(guān)性(比如可以為ctr等),且

  • 為item i的語(yǔ)義向量

  • 為item i 與 item j之間的相似度度量,且

接著構(gòu)造 矩陣:

顯然, 為實(shí)對(duì)稱(chēng)矩陣,同時(shí)也是半正定矩陣。從中任意抽取子矩陣 ,那么矩陣也為實(shí)對(duì)稱(chēng)矩陣(半正定矩陣)。

進(jìn)一步由行列式的定義以及運(yùn)算規(guī)則得:

至此,將相關(guān)性和多樣性統(tǒng)一到 的行列式計(jì)算:

即從中任意抽取子矩陣 使得 最大,則集合 就是我們希望的結(jié)果。建立如下的最優(yōu)化問(wèn)題:

然而,從一個(gè)離散集合中選取子集合是一個(gè)組合優(yōu)化問(wèn)題,典型的NP-Hard問(wèn)題。陳拉明團(tuán)隊(duì)則利用貪婪算法,提出了一種能加速行列式點(diǎn)過(guò)程推理過(guò)程的方法。通常NP難的組合優(yōu)化問(wèn)題,由于線(xiàn)上實(shí)時(shí)性的限制,有效解決方法無(wú)非是貪心策略以及更聰明的貪心策略,去尋找一個(gè)近似最優(yōu)解。而貪心策略包含兩個(gè)核心要素:

  • 初始解的選取。好的起點(diǎn)非常重要。

  • 迭代策略。好的方向事半功倍。

為了構(gòu)造有效的貪婪算法,陳拉明將原始最優(yōu)化問(wèn)題變成如下形式:

因此,這里的迭代策略是每次貪心的選取使得 增長(zhǎng)最大的 , 用經(jīng)濟(jì)學(xué)中的概念就叫做"邊際收益",即做出投入產(chǎn)出最大的決策。之所以加 是由于其先增長(zhǎng)較快后增長(zhǎng)緩慢,因此有利于加快迭代的收斂速度,如下圖:

▲log函數(shù)圖像

似乎找到了一個(gè)好的貪心迭代策略,但實(shí)際上行列式 的計(jì)算也是非常time-costed,講到這里,Cholesky分解終于要閃亮登場(chǎng)了。

其中 為可逆的下三角矩陣。對(duì)任意 , 的Cholesky分解可以定為:

其中,等式右邊右上角的子矩陣為0向量,是因?yàn)槭且粋€(gè)下三角矩陣。

根據(jù)矩陣乘法公式(上圖, ),行向量和標(biāo)量滿(mǎn)足:

同時(shí)也可以根據(jù) 的定義得到如下關(guān)系:

附錄推導(dǎo)上述公式所用到的公式如下(自己試著推導(dǎo)下^_^):

  • 分塊上(下)三角矩陣的行列式

表示矩陣 的行列式

  • 矩陣乘積的行列式定義

設(shè) 和 都是 階矩陣,則

也就是說(shuō)候選子集的行列式值可以通過(guò)增量更新的方法計(jì)算,即和是已經(jīng)計(jì)算出來(lái)了的,當(dāng)一個(gè)新item被添加到之后,的Cholesky因子可以被有效更新。

對(duì)于每個(gè),和也是可以被增量更新的,將和定義為新的需求求解的向量和標(biāo)量,其中,其中 為上一個(gè)新添加的item。根據(jù)前面的結(jié)論可以做如下運(yùn)算:

得到 :

進(jìn)而 :

在算法開(kāi)始時(shí),即時(shí) ,根據(jù)前面提到的如下公式:

可以推導(dǎo)出,具體到推薦系統(tǒng)也就是貪心的選擇相關(guān)性(CTR、CVR等)最大item。

參考代碼(出處:絕密伏擊:行列式點(diǎn)過(guò)程DPP在推薦系統(tǒng)中的應(yīng)用https://zhuanlan.zhihu.com/p/95607668):

import numpy as np import mathclass DPPModel(object):def __init__(self, **kwargs):self.item_count = kwargs['item_count']self.item_embed_size = kwargs['item_embed_size']self.max_iter = kwargs['max_iter']self.epsilon = kwargs['epsilon']def build_kernel_matrix(self):rank_score = np.random.random(size=(self.item_count)) # 用戶(hù)和每個(gè)item的相關(guān)性item_embedding = np.random.randn(self.item_count, self.item_embed_size) # item的embeddingitem_embedding = item_embedding / np.linalg.norm(item_embedding, axis=1, keepdims=True)sim_matrix = np.dot(item_embedding, item_embedding.T) # item之間的相似度矩陣self.kernel_matrix = rank_score.reshape((self.item_count, 1)) \* sim_matrix * rank_score.reshape((1, self.item_count))def dpp(self):c = np.zeros((self.max_iter, self.item_count))d = np.copy(np.diag(self.kernel_matrix))j = np.argmax(d)Yg = [j]iter = 0Z = list(range(self.item_count))while len(Yg) < self.max_iter:Z_Y = set(Z).difference(set(Yg))for i in Z_Y:if iter == 0:ei = self.kernel_matrix[j, i] / np.sqrt(d[j])else:ei = (self.kernel_matrix[j, i] - np.dot(c[:iter, j], c[:iter, i])) / np.sqrt(d[j])c[iter, i] = eid[i] = d[i] - ei * eid[j] = 0j = np.argmax(d)if d[j] < self.epsilon:breakYg.append(j)iter += 1return Ygif __name__ == "__main__":kwargs = {'item_count': 100,'item_embed_size': 100,'max_iter': 100,'epsilon': 0.01}dpp_model = DPPModel(**kwargs)dpp_model.build_kernel_matrix()print(dpp_model.dpp())

3.3.3.4 基于概率的啟發(fā)式算法

前面講過(guò)重排序本質(zhì)上是個(gè)組合優(yōu)化問(wèn)題。而MRR、DPP等都是基于貪心的策略,容易陷入局部最優(yōu)解。了解運(yùn)籌學(xué)相關(guān)算法的同學(xué)應(yīng)該聽(tīng)說(shuō)過(guò)模擬退火算法,其以一定概率跳出局部最優(yōu)解,緩解了貪心法的缺點(diǎn)。

算法流程如下:

模擬退火的核心:

  • 初始解,基于貪心法獲得初始解。

  • 鄰域搜索算子,比如隨機(jī)交換兩個(gè)Item。

  • 相關(guān)參數(shù),收斂性判定準(zhǔn)則。

參考谷育龍Eric:Airbnb搜索:重排序階段如何優(yōu)化搜索結(jié)果多樣性?(https://zhuanlan.zhihu.com/p/239824669)?中的Location Diversity Ranker小節(jié)。

3.3.3.5 基于模型的多樣性打分

3.4 基于用戶(hù)多樣性偏好的策略

目前為止我們?cè)谟脩?hù)維度上無(wú)差異的討論多樣性策略,事實(shí)上不同用戶(hù)對(duì)多樣性的訴求也是不同的。例如針對(duì)重度二次元用戶(hù),放寬多樣性限制反而是比較友好的。針對(duì)用戶(hù)多樣性偏好的差異性進(jìn)一步細(xì)化多樣性策略也是一個(gè)優(yōu)化方向

經(jīng)驗(yàn)上,對(duì)低活用戶(hù),優(yōu)先考慮準(zhǔn)確率,忽略薦多樣性;對(duì)高活用戶(hù),可以犧牲部分準(zhǔn)確性來(lái)?yè)Q取多樣性。除去經(jīng)驗(yàn)性的認(rèn)知外,對(duì)于行為較豐富的高活用戶(hù)可以設(shè)計(jì)相關(guān)指標(biāo)來(lái)衡量多樣性偏好,可以考慮如下指標(biāo):

1). 用戶(hù)交互物品的平均流行度

推薦結(jié)果的物品流行程度很大程度上和推薦結(jié)果的多樣性是正相關(guān)聯(lián)系的。如果一個(gè)用戶(hù)交互過(guò)的Item的平均流行度相對(duì)較低,則說(shuō)明該用戶(hù)的類(lèi)目偏好性比較強(qiáng),應(yīng)該減弱多樣性。

2). 用戶(hù)多樣性熵

利用信息論中的熵對(duì)多樣性進(jìn)行建模。熵是熱力學(xué)領(lǐng)域的概念,可以度量"無(wú)序化"的程度,在信息論中則用來(lái)衡量不確定程度。如果用戶(hù)訪問(wèn)的各類(lèi)目Item分布比較均勻,則熵值較大,反之熵值較小(比如只點(diǎn)擊二次元內(nèi)容)。

其中, 為用戶(hù)對(duì) 類(lèi)目的訪問(wèn)概率。

在得到用戶(hù)的多樣性熵后就可以針對(duì)不同用戶(hù)采用差異化的多樣性策略了,比如各種超參數(shù)的取值等。

后臺(tái)回復(fù)關(guān)鍵詞【入群

加入賣(mài)萌屋NLP/IR/Rec與求職討論群

后臺(tái)回復(fù)關(guān)鍵詞【頂會(huì)

獲取ACL、CIKM等各大頂會(huì)論文集!

?

[1]推薦系統(tǒng)應(yīng)該如何保障推薦的多樣性?https://www.zhihu.com/question/68299606/answer/776092528

[2]騰訊QQ大數(shù)據(jù):神盾推薦--MAB算法應(yīng)用總結(jié)https://blog.csdn.net/kl28978113/article/details/96303148 http://www.360doc.com/content/18/0714/21/3175779_770404760.shtml

[3]曹歡歡:推薦內(nèi)容的多樣性越好,用戶(hù)的長(zhǎng)期留存概率越大http://scitech.people.com.cn/GB/n1/2019/0712/c1007-31229289.html

[4]信息流推薦多樣性https://blog.csdn.net/chunyun0716/article/details/103376936

[5]推薦多樣性研究講述https://max.book118.com/html/2017/0329/97669662.shtm

[6]個(gè)性化推薦系統(tǒng)的多樣性研究進(jìn)展http://www.doc88.com/p-0137412059454.html

[8]【實(shí)踐】信息流推薦算法實(shí)踐 & 深入https://blog.csdn.net/dengxing1234/article/details/79756265

[9]初讀師兄論文---面向多樣性的推薦算法研究https://blog.csdn.net/qq_28298991/article/details/80697205

[10]Set Cover Problem (集合覆蓋問(wèn)題)https://www.jianshu.com/p/df54fade1269

[11]EXP3算法https://blog.csdn.net/weixin_39550091/article/details/102484513

[12]貪心算法:集合覆蓋問(wèn)題https://blog.csdn.net/zhi_neng_zhi_fu/article/details/101752753

[13]Multi-armed Bandits(多臂老虎機(jī)問(wèn)題)https://blog.csdn.net/wangh0802/article/details/87913867

[14]冷啟動(dòng)中的多臂老虎機(jī)問(wèn)題(Multi-Armed Bandit,MAB)https://blog.csdn.net/Gamer_gyt/article/details/102560272

[15]推薦系統(tǒng)-推薦列表多樣性處理

[16]LTV預(yù)測(cè)模型:如何實(shí)現(xiàn)高質(zhì)量用戶(hù)增長(zhǎng)https://leeguoren.blog.csdn.net/article/details/96989034

[17]通過(guò)實(shí)例運(yùn)營(yíng)策略提升推薦結(jié)果多樣性https://help.aliyun.com/document_detail/171774.html

[18]面向個(gè)性化推薦的偏好多樣性建模研究進(jìn)展https://m.163.com/newsapp/applinks.html

[19]多模態(tài)商品推薦與認(rèn)知智能背后的數(shù)學(xué)https://blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/105248807

[20]Hulu是如何提升推薦多樣性的?https://blog.csdn.net/hulu_beijing/article/details/107538159

[21]基于行列式點(diǎn)過(guò)程的推薦多樣性提升算法的直觀理解https://www.zhihu.com/question/68299606/answer/776092528

[22]Determinantal point process 入門(mén) https://blog.csdn.net/qq_23947237/article/details/90698325

[23]長(zhǎng)尾推薦算法論文閱讀筆記合集https://blog.csdn.net/qq_41536315/article/details/104527428

[24]A Generic Top-N Recommendation Framework For Trading-off Accuracy, Novelty, and Coveragehttps://blog.csdn.net/qq_35771020/article/details/87854554

[25]【論文閱讀筆記】Challenging the Long Tail Recommendation(挑戰(zhàn)長(zhǎng)尾推薦)https://blog.csdn.net/qq_41536315/article/details/103762117

[26]Airbnb搜索:重排序階段如何優(yōu)化搜索結(jié)果多樣性?https://zhuanlan.zhihu.com/p/239824669

[27]矩陣行列式的幾何意義https://www.cnblogs.com/tsingke/p/10671318.html

[28]fast-map-dpp介紹http://d0evi1.com/fast-map-dpp/

[29]《基于行列式點(diǎn)過(guò)程的推薦多樣性提升算法》原理詳解https://blog.csdn.net/yz930618/article/details/84862751

[30]【推薦系統(tǒng)】行列式點(diǎn)過(guò)程(DPP)算法推導(dǎo)https://blog.csdn.net/qq_41629800/article/details/107339054

[31]行列式https://www.pianshen.com/article/94381258640/

[32]基于排序?qū)W習(xí)的Top-N推薦算法研究

[33]行列式點(diǎn)過(guò)程的簡(jiǎn)單介紹https://www.doc88.com/p-8089116412071.html

[34]baidu Query-Ad Matching算法介紹http://d0evi1.com/baidu-matching/

[35]個(gè)性化推薦系統(tǒng)的多樣性研究進(jìn)展http://www.doc88.com/p-0137412059454.html

[36]推薦系統(tǒng)怎樣實(shí)現(xiàn)多路召回的融合排序https://zhuanlan.zhihu.com/p/90796257

[37]召回模塊:多召回策略https://blog.csdn.net/zimiao552147572/article/details/106976141

[38]推薦系統(tǒng)學(xué)習(xí)筆記——八、推薦系統(tǒng)多路召回融合排序https://blog.csdn.net/Lynnzxl/article/details/105251213

[39]推薦系統(tǒng)從0到1[二]:個(gè)性化召回https://cloud.tencent.com/developer/article/1174893

[40]推薦算法總結(jié)(召回+排序+工程化)https://blog.csdn.net/qq_34219959/article/details/104495432

[41]推薦系統(tǒng)召回策略之多路召回與Embedding召回https://juejin.im/post/6854573221707317261

[42]【】轉(zhuǎn)載】搜狗信息流推薦算法實(shí)踐(推薦工作流理解-召回、排序)_敗八-CSDN博客https://blog.csdn.net/ChaosJ/article/details/94302505

[43]基于Embedding的推薦系統(tǒng)召回策略https://www.ctolib.com/amp/topics-138378.html

[44]The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries

[45]wide_deep https://github.com/Lapis-Hong/wide_deep

[46]Contextual Bandit算法在推薦系統(tǒng)中的實(shí)現(xiàn)及應(yīng)用https://zhuanlan.zhihu.com/p/35753281

[47]行列式點(diǎn)過(guò)程DPP在推薦系統(tǒng)中的應(yīng)用https://zhuanlan.zhihu.com/p/95607668

[48]Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity https://proceedings.neurips.cc/paper/2018/file/dbbf603ff0e99629dda5d75b6f75f966-Paper.pdf

[49]UC 信息流推薦模型在多目標(biāo)和模型優(yōu)化方面的進(jìn)展https://zhuanlan.zhihu.com/p/86607378

[50]從貪心選擇到探索決策:基于強(qiáng)化學(xué)習(xí)的多樣性排序https://zhuanlan.zhihu.com/p/56053546

[51]Diversified Retrieval(多樣性檢索,MMR,DPP)https://blog.csdn.net/qq_39388410/article/details/109706683

[52]多樣性算法在58部落的實(shí)踐和思考https://blog.csdn.net/hellozhxy/article/details/108982131

總結(jié)

以上是生活随笔為你收集整理的聊聊如何提升推荐系统的结果多样性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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