推荐算法:重排

1.物品的相似性度量、提升多样性的方法

物品相似性度量

基于属性、基于物品向量

基于图文的(CNN+BERT)

CLIP 最有效的预训练方法

n对图片+文字,组成n(n-1)对负样本

提升多样性的方法

精排:给定n个候选物品,模型打分reward1,…rewardn

从n个中选k个

2.Maximal Marginal Relevance(MMR)[两两相似度]

精排给定n个候选物品,模型打分reward1,…rewardn

相似性sim(i,j)

选中集合S,未选中集合R

计算集合中每个物品i的Marginal Relevance分数:
MRi=θ⋅rewardi−(1−θ)⋅max⁡j∈Ssim(i,j) MR_i=\theta\cdot reward_i-(1-\theta)\cdot \mathop{\max}\limits_{j\in S} sim(i,j) MRi=θrewardi(1θ)jSmaxsim(i,j)
MMR:
arg⁡max⁡i∈RMRi \arg \mathop{\max}\limits_{i\in R} MR_i argiRmaxMRi
把选中的有从R移动到S

算法流程

S为空集,R为全集

选择精排分数最高的物品,从R移到S

做k-1轮循环:

a.计算R中所有物品的分数{MRi}i∈R\{MR_i\}_{i\in R}{MRi}iR

b.选出分数最高的物品,从R移到S

滑动窗口

因为随着S增大,sim约等于1,MMR失效

设置滑动窗口W,选中最近的10个物品,用W代替S

3.业务规则下的多样性算法

重排的规则

最多连续出现k篇某种(图文、视频)笔记

每k篇笔记最多出现1篇某种笔记(运营推广笔记boost>1)

前t篇笔记最多出现k篇某种笔记

MMR+重排规则

MMR每轮选出一个物品

重排结合MMR和规则,在满足规则的前提下最大化MR

每一轮先用规则排除掉R中的部分物品,得到子集R’

4.5.DPP多样性算法[整个S相似度]

数学基础

k个向量(线性独立)决定k维超平形体

面积:底×高(根据投影计算),衡量多样性,面积/体积大→多样性
det(VTV)=vol(P(v1,...vk))2 det(V^\mathrm T V)=vol(P(v_1,...v_k))^2 det(VTV)=vol(P(v1,...vk))2

DPP解决多样性问题

精排打分reward1,…rewardn,选k个

价值大:∑reward\sum rewardreward

多样性好:P(S)P(S)P(S)体积大

推荐系统:arg⁡max⁡S:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅log⁡det⁡(VSTVS)\arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (V^\mathrm T_S V_S)argS:S=kmaxθ(jSrewardj)+(1θ)logdet(VSTVS)

求解过程

arg⁡max⁡S:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅log⁡det⁡(VSTVS) \arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (V^\mathrm T_S V_S) argS:S=kmaxθ(jSrewardj)+(1θ)logdet(VSTVS)

arg⁡max⁡S:∣S∣=kθ⋅(∑j∈Srewardj)+(1−θ)⋅log⁡det⁡(AS) \arg \mathop{\max}\limits_{S:|S|=k} \theta\cdot (\sum_{j\in S}{reward_j})+(1-\theta)\cdot \log \det (A_S) argS:S=kmaxθ(jSrewardj)+(1θ)logdet(AS)

组合优化问题,从集合1…n中选中k个

贪心算法求解

arg⁡max⁡i∈Rθ⋅rewardi+(1−θ)⋅log⁡det⁡(AS∪{i}) \arg \mathop{\max}\limits_{i\in R} \theta\cdot reward_i+(1-\theta)\cdot \log \det (A_{S\cup\{i\}} ) argiRmaxθrewardi+(1θ)logdet(AS{i})

每轮选一个物品i

暴力求解

对于单个i,计算AS∪{i}A_{S\cup\{i\}}AS{i}需要O(∣S∣3)O(|S|^3)O(S3)时间

对于所有i,计算AS∪{i}A_{S\cup\{i\}}AS{i}需要O(∣S∣3⋅∣R∣)O(|S|^3 \cdot |R|)O(S3R)时间

要求k个物品,需要求解公式k次,总时间复杂度O(∣S∣3⋅∣R∣⋅k)=O(nk4)O(|S|^3 \cdot |R|\cdot k)=O(nk^4)O(S3Rk)=O(nk4)

总时间复杂度:O(n2d+nk4)O(n^2d+nk^4)O(n2d+nk4)

Hulu快速算法

Cholesky分解:AS=LLTA_S=L L^\mathrm TAS=LLT,L是下三角矩阵(对角线以上的元素全0

Cholesky分解可供计算AS{A_S}AS的行列式:det⁡(L)\det(L)det(L)等于L对角线元素乘积;det⁡(AS)=det⁡(L)2=∏ilii2\det(A_S)=\det(L)^2=\prod_i{l^2_{ii}}det(AS)=det(L)2=ilii2

添加一行或一列的Cholesky分解变化小

DPP扩展

随着S变大,相似物品越来越多,物品向量趋近线性相关,det⁡(AS)\det(A_S)det(AS)坍缩到0,对数趋于负无穷

滑动窗口

用滑动窗口W代替S

规则约束

贪心算法每轮从R中选一个,先用规则排除一部分得到R‘,再求解选择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值