文章目录
核心思想
特征
计算广告业务
计费方式
CPM (Cost Per Mille):每千人成本。按展示数量收费。
CPC(Cost Per Click):每点击成本。按点击数量收费。
CPA(Cost Per Action):每行动成本。按用户行动来收费。注意,是消费量/转化量,CPA=CPC\CVR。例如,每次点击广告主出10块钱,而cvr是0.1,那么对于广告主来说,cpa就是100,也就是拉一个客户的成本是100元。
oCPC和CPC之间的区别
也就是第一阶段以CPC计价计算ecpm,然后第二阶段以CPA出价计算ecpm,而由于cpa*cvr=cpc从而动态调整cvr低的广告的CPC。而腾讯的两阶段广告也累死,第一阶段可能是浅层转化,第二阶段深层。
如何快速了解OCPC的推广模式? - App Growing的回答 - 知乎
一文了解信息流广告的eCPM计算公式
ocpa,ocpc什么的,都是用户的收费方式不同,排序都是ecpm。
什么是CPA、CPC、CPM、CVR、CTR、PV、UV、GMV定义以及相关计算公式
消费量指的就是广告主要给平台的钱
oCPA、oCPM竞价的本质是什么? - 马超的回答 - 知乎
理想状态中广告主预期成本(CPA)为广告主的底价(广告主能接受的最高CPA成本) ,假设广告主的预期成本没有波动,根据eCPM公式可以推到出来无论是按照CPC付费 还是CPM付费 广告主预期成本不变 pCVR越高 eCPM 与CPC越高 ;
竞价策略
Myerson auction 是什么意思?解决了什么问题? - 蛋堡学长的回答 - 知乎
那个y的最大值是求导为0得到的。
评价指标
CTR (Click Through Rate): 点击率。
pCTR(Predict Click-Through Rate): 预测转化率。
CVR (Click Value Rate): 转化率。点击转化成注册的比率。
pCVR(Predict Click Value Rate): 预测转化率。
广告流量分析之评价指标的选择(二)
广告归因
广告归因的几种方式
互联网广告的归因分析(Attribution Analysis)
综合介绍
腾讯广告oCPA 双出价 两阶段 自动扩量 系统优选
腾讯广告学习中心
腾讯广告oCPA两阶段出价用的溜,深度转化不用愁
字节跳动穿山甲联盟的“付费双出价”究竟是什么?
字节的双出价与腾讯的两阶段好像是对应的
DMP
推荐算法概述
处理冷启动:用户冷启动:方案1,从其他地方获取信息比如性别年龄朋友关系等作为特征,然后用常规算法进行推荐;方案2,如果用户喜欢了一样东西,然后,我们把与这个商品相似的商品推荐给这个用户。
商品冷启动:方案1,读取这个商品的内容,计算相似度,比如电影的演员,语言等等;方案2,这个商品被某人喜欢了,那么我们把与这个人相似的其他用户推荐给这个商品。
推荐算法入门
推荐系统中使用ctr预估模型的发展
协同过滤
协同过滤推荐算法的原理及实现
基于用户的协同过滤:给商品推荐相似的人。一个人的打分列表可以作为这个人的特征序列。人与人之间的相似性通过给相同的物品的打分情况来判定,因为如果两个人在很多物品上都是同时喜欢或者不喜欢,那么这两个人就相似。
基于物品的协同过滤:给人推荐相似的商品。一个商品的得分序列可以作为这个商品的特征序列。物品与物品的相似性通过被相同的人的打分情况来判定,因为如果很多人都认为两个东西同时好或者同时不好,那么这两个东西就是相似的。例如物品A得到的打分是[1,3,3,1,4],物品B得到的打分是[2,1,3,1,4],如果一个新的用户买了A,那给他推荐B,也就是说,不需要等这个新用户积累一定的购买信息,就能给他推荐东西了,这解决的就是用户冷启动。
上面博客里基于物品的协同过滤是先找的与物品3最相似的物品4、5,然后在找物品4和5最相似的
深度推荐
矩阵分解
SVD
奇异值分解SVD简介及其在推荐系统中的简单应用
就是用特征向量矩阵来表示一个商品,然后计算相似度,把相似的商品推荐过去;那= =特么,为啥不直接用某一个商品的打分序列作为特征呢;哦因为稀疏,用户A看到过商品1,但是用户B可能没见过
A
n
∗
m
≈
U
n
∗
k
Σ
k
∗
k
V
k
∗
m
T
A_{n*m} \approx U_{n*k}\Sigma_{k*k} V_{k*m}^T
An∗m≈Un∗kΣk∗kVk∗mT 如果
A
A
A表示的是
n
n
n个人对
m
m
m个物品的评分,那么
U
n
∗
k
U_{n*k}
Un∗k就代表了
n
n
n个用户在某
k
k
k个属性上的表现,
V
k
∗
m
V_{k*m}
Vk∗m就代表了
m
m
m个物品在某
k
k
k个属性上的表现,而
Σ
\Sigma
Σ代表的是用户和物品在这
k
k
k个物品上的转化关系
进而可以把
V
m
∗
k
=
A
T
U
Σ
−
1
V_{m*k}=A^TU\Sigma^{-1}
Vm∗k=ATUΣ−1用于计算
m
m
m个物品之间的相似性上
为什么可以这样考虑呢?是时候真正理解PCA和SVD了,想象
A
A
A是一个
n
∗
2
n*2
n∗2的矩阵,就是说我们手上只有两个物品,画出坐标轴,横轴是用户对物品1的喜好程度,纵轴是用户对物品2的喜好长度,坐标中每一个点都是一个用户对两者的喜好程度,并且假设这些点都处于一条直线上,我们现在要对列用PCA进行降成一维:首先求
A
T
A
A^TA
ATA的最大的特征向量
λ
1
=
[
3
/
5
,
4
/
5
]
T
\lambda_1=[3/5,4/5]^T
λ1=[3/5,4/5]T,然后把坐标中每一个点映射到
λ
1
\lambda_1
λ1代表的坐标轴上就行了。
PCA相当于说找到了一个新的物品3,把原始的用户对物品1和物品2的喜好程度变成了用户对物品3的喜好程度。物品3可以看做物品1和物品2的共性,那么反过来看,物品1和物品2可以看做物品3的体现,
λ
1
\lambda_1
λ1的意义是什么,举例来讲,用户有1分喜欢物品3,他就会有3/5分喜欢物品1,有4/5分喜欢物品2,也就是说物品1有3/5像物品3,物品2有4/5像物品4(给自己鼓个掌);如果把物品3称为属性3,例如物品1是玉子的手办,物品2是平泽唯的手办,那物品3就可以看做是萌(卖萌)。那么3/5就代表着,玉子的手办有3/5这么萌。喏,这就是为什么
V
V
V可以看做物品的属性矩阵了。
二刷SVD+PCA关系,进一步理解:假如说一个特征矩阵
A
n
∗
m
=
{
x
1
,
.
.
.
,
x
m
}
A_{n*m}=\{x_1,...,x_m\}
An∗m={x1,...,xm},
x
x
x为列向量
n
n
n个特征
m
m
m个样本,
A
A
T
AA^T
AAT的
k
k
k个特征值最大的特征向量构成的矩阵就是svd里的
U
=
{
u
1
,
.
.
.
,
u
k
}
U=\{u_1,...,u_k\}
U={u1,...,uk},
u
u
u为列向量,也是PCA里的投影矩阵(或者说低维空间的基向量),从PCA里我们可以知道,假如要对
x
1
x_1
x1降维,那么降维后的新样本就是
x
ˉ
1
=
{
u
1
T
x
1
,
.
.
.
,
u
k
T
x
1
}
\bar{x}_1=\{u_1^Tx_1,...,u_k^Tx_1\}
xˉ1={u1Tx1,...,ukTx1},我们来观察
x
ˉ
1
\bar{x}_1
xˉ1的组成,假设
x
11
x_{11}
x11为
x
1
x_1
x1的第一个特征的值,
u
k
1
u_{k1}
uk1记为
u
k
u_k
uk的第一个值,进一步可以发现,
u
k
T
x
1
u_k^Tx_1
ukTx1实际是一个求和项,其中有一项就是
x
11
u
k
1
x_{11}u_{k1}
x11uk1,这可以看成,单位大小的原始样本
x
1
x_1
x1的第一个特征,会给新样本
x
ˉ
\bar{x}
xˉ的第
k
k
k个特征维度(或者说主题)做出
u
k
1
u_{k1}
uk1这么大小的贡献。因此
U
U
U矩阵的第一行,可以用来描述原始特征空间中第一个特征在
k
k
k个主题上的分布情况。进一步类比推荐就很好理解了。
LFM
推荐系统之LFM(Latent Factor Model)
推荐系统(2)—LFM(Latent Factor Model)模型
用已知的评分和梯度下降的方法来求取那两个矩阵,然后用求出来的那两个矩阵相乘去模拟原评分矩阵,然后根据评分来推荐
和SVD还是有区别的,LFM认为未评分的位置是空的,只用已知的去求两个矩阵;而SVD认为未打分就是0,然后在特征矩阵里求相似度
分解机
分解机(Factorization Machines)推荐算法原理
FM本质上是一种非线性拟合模型,之所以是说非线性,是指拟合的时候用到了高阶乘积,如
x
i
x
j
x
k
.
.
.
x_ix_jx_k...
xixjxk...,这个模型隐含了一个假设是,打分
Y
Y
Y和特征向量
X
X
X是相关的,所以这个模型做的无非就是一个线性拟合的高阶版本,并且引入非线性可以提高拟合能力。
文中的那个电影的例子是作者举的一个例子,如果用户
i
i
i根本没看过电影
j
j
j,那么
x
i
j
x_{ij}
xij实际上是一个缺失数据,贸然认为其为0会让
w
i
j
w_{ij}
wij为0。正是为了解决数据的稀疏性,才引入了
v
i
T
v
j
v_i^Tv_j
viTvj,通过矩阵分解,可以学习到
x
i
,
x
j
x_i,x_j
xi,xj的关系到底是什么样的
刷了一下论文对于拆解
v
i
,
v
j
v_i,v_j
vi,vj的解释,实际上是通过矩阵学习
v
i
,
v
j
v_i,v_j
vi,vj。
v
i
v_i
vi代表的是第
i
i
i个维度的内部特征,有点像SVD那样,把一个用户或者商品转换成dense向量,这个向量可能代表的是柱体或者兴趣什么的。然后用內积去计算两个特征的相关性。
v
i
v_i
vi的学习过程就是在类比,如果
v
i
和
v
j
v_i和v_j
vi和vj有相似的行为(比如两个用户的评分差不太多),那么
v
i
,
v
j
v_i,v_j
vi,vj就应该差不多,那么当计算用户
i
i
i和商品
a
a
a的关系的时候,用的就是
v
i
,
v
a
v_i,v_a
vi,va,这个
v
i
v_i
vi是从
v
j
v_j
vj那里学到的。直接使用
w
i
a
w_{ia}
wia,是没法让这个参数向用户
j
j
j去学习的。
FM的求解使用的梯度下降或者最小二乘,具体求解方法暂时没看
ALS求解过程就是,先对
w
0
w_0
w0进行最小二乘(即梯度为0),然后对
w
i
w_i
wi进行最小二乘,再对
v
i
j
v_{ij}
vij最小二乘,交替进行,因为这是个凸优化问题嘛,所以可以这样做
FM有啥用呢,有了这个模型的话(就是参数
Θ
=
{
w
0
,
w
i
,
v
j
}
\Theta=\{w_0,w_i,\bf{v}_j\}
Θ={w0,wi,vj}已知),我们就可以对新的样本进行预测了,比如上述博客中的图一,我们就可以预测Alice对于StarTreck的评分了。
FM算法(一):算法理论
FM对比SVM的优点,对于稀疏性的处理,SVM并没有把系数拆分开,所以没有出现过的特征pair的特征就是0了,SVM的模型使得不是支持向量的样本对模型没影响,这不是一个好的推荐系统应该有的属性,另外SVM只用一种参数,不能很好反应两个变量之间的关系
FM在做回归的时候很简单,分类的时候,论文里说可以用hinge loss和logit loss,然后输出的正负代表二分类的结果,但我估么着,由于这个输出
y
^
\hat{y}
y^并不在0~1之间,因此我觉得应该让输出在过一个
s
i
g
m
o
i
d
sigmoid
sigmoid,输出的结果作为
P
P
P,就像logistics regression一样;ranking的时候就是把两个样本的特征进行拼接,然后做二分类
点击率预估算法:FM与FFM
FFM就是每个参数的每个取值使用两个隐向量做內积求出来的,在FM里,每个特征对应1个隐向量,FFM里,每个特征对应n个,n就是field的个数,用的时候要小心,比如特征
i
i
i的field为
f
i
f_i
fi,特征
j
j
j对应的field是
f
j
f_j
fj,那么两者的向量内积是
V
i
,
f
j
T
V
j
,
f
i
V_{i,f_j}^TV_{j,f_i}
Vi,fjTVj,fi,
V
i
,
f
j
V_{i,f_j}
Vi,fj代表的是特征
i
i
i对应特征
j
j
j的特征field的隐向量。
FFM里的假设是,由于FM里用到了两个特征的乘积,并且系数由两个向量的内积决定,那么每个特征的那个向量,在对应另一个不同特征的时候,也应该是不同的。因此有几个field,就有几个向量
[FwFM论文]Field-weighted Factorization Machines
文本主题模型
主题模型的最简单解释
每一篇文章不是仅仅拥有唯一的主题,而是融合了好多个主题,并且不同的主题占比不同,比如说某一篇脱口秀报道里,娱乐性质主题占比百分之40、体育性质主题占比百分10、剩下的都是新闻性质的主题。
而文章中每个词是怎样产生的呢,是根据这些主题生成的,并且在每个主题中,使用同一个词汇的概率是不同的。比如说百分百娱乐性质主题的文章使用“有趣”这个词的概率有0.5这么高,而是在百分百新闻性质主题的文章里,“有趣”这个词几乎不会被使用,好比说概率是0.00001。
所以,一篇文章有好多个词,每个词都有可能是从不同的主题里跑出来的,比如说在刚刚的脱口秀报道例子里,出现了一个“射门”,那么这个词代表的是“体育性质主题”,也有可能是从“新闻性质主题”里跑出来的,因为这两个主题都有可能会用到这个词。
文本主题模型之潜在语义索引(LSI)
汗,其实就是SVD的解释,看到这的时候我在想,如果表征一篇文档呢?用词袋模型可以,比如说一个m*n的矩阵,m是字典大小,n是文档个数,那么每一列都代表一个文档
LSA,pLSA原理及其代码实现
首先,看pLSA的概率图模型,当给定主题Z的时候,文档d与词w无关,因此有
p
(
w
∣
z
,
d
)
=
p
(
w
∣
z
)
p(w|z,d)=p(w|z)
p(w∣z,d)=p(w∣z),数学推导也行,复习一下贝叶斯网络的条件独立性推导,
p
(
w
∣
z
,
d
)
=
p
(
w
,
z
,
d
)
/
p
(
z
)
p
(
z
,
d
)
/
p
(
z
)
=
p
(
w
∣
z
)
∗
1
p(w|z,d)=\frac{p(w,z,d)/p(z)}{p(z,d)/p(z)}=p(w|z)*1
p(w∣z,d)=p(z,d)/p(z)p(w,z,d)/p(z)=p(w∣z)∗1
PLSA的思路:每个文档有都有一个主题分布,
P
(
z
i
∣
d
i
)
P(z_i|d_i)
P(zi∣di)代表的就是第
i
i
i个文档里包含
z
i
z_i
zi的概率,然后每个主题都对应了很多词,
P
(
w
i
∣
z
i
)
P(w_i|z_i)
P(wi∣zi)代表了主题
z
i
z_i
zi中选中词
w
i
w_i
wi的概率,俩一联合就能求出
P
(
w
i
∣
d
i
)
P(w_i|d_i)
P(wi∣di)代表的就是这篇文档中存在词语
w
i
w_i
wi的概率
EM算法中的E步,实际应该为 E = ∑ m ∑ n n ( d m , w n ) ∑ k p t ( z k ∣ d m , w n ) l o g p ( w n , z k , d m ) E=\sum_m \sum_n n(d_m,w_n) \sum_k p_t(z_k|d_m,w_n)log~p(w_n,z_k,d_m) E=∑m∑nn(dm,wn)∑kpt(zk∣dm,wn)log p(wn,zk,dm),但是由于 p t ( w n , z k , d m ) = p t ( w n ∣ z k ) p t ( z k ∣ d n ) p ( d n ) p_t(w_n,z_k,d_m)=p_t(w_n|z_k)p_t(z_k|d_n)p(d_n) pt(wn,zk,dm)=pt(wn∣zk)pt(zk∣dn)p(dn),并且 p ( w n ∣ z k ) , p ( z k ∣ d n ) p(w_n|z_k),p(z_k|d_n) p(wn∣zk),p(zk∣dn)是目标参数,
p t ( z k ∣ d m , w n ) p_t(z_k|d_m,w_n) pt(zk∣dm,wn)可以由当前的 p t ( w n ∣ z k ) , p t ( z k ∣ d n ) p_t(w_n|z_k),p_t(z_k|d_n) pt(wn∣zk),pt(zk∣dn)参数值导出, p ( d n ) p(d_n) p(dn)是已知变量对于最大化 p ( w n ∣ z k ) , p ( z k ∣ d n ) p(w_n|z_k),p(z_k|d_n) p(wn∣zk),p(zk∣dn)没影响,又在log里,所以可以扔了
但是我搞不清楚的是,对于完全数据的最大化那前面的 n ( d m , w n ) n(d_m,w_n) n(dm,wn)为啥没带 z k z_k zk
PLSA模型以及推荐中的应用
PLSA是一个词袋模型(BOW, Bag Of Word),它不考虑词在文档中出现的顺序,但可以把词在文档中的权重考虑进来。我们把这些概念平行推广到推荐系统中来,一个用户的购买记录看作是一个文档,购买的每一件商品看作是一个词,用户对商品的评分看作是词在文档中的权重。套用PLSA算法就可以得到用户在各个隐含主题上的向量表示
p
(
z
k
∣
d
i
)
p(z_k|d_i)
p(zk∣di),基于这个向量再去计算相似用户,接着套用协同过滤算法给用户推荐商品。
隐语义模型的核心思想是通过隐含特征联系用户兴趣的物品。先得到用户的兴趣分类,从兴趣中挑选可能喜欢的物品。协同过滤算法是基于统计的,而隐语义模型是基于自动聚类的,从用户群的意见出发,发现两个物品是否属于同一类,通过最终聚类的数量来区分不同粒度的分类。有了分类以后,再计算物品所属不同类的权重。当物品对于某一分类的权重较高(就是计算每个商品在各个主题上的权重),且与其他分类有区分度时,可以作为该分类下的典型物品,所以相当于聚类。当用户对典型物品有行为时,即可以确定该用户的兴趣分类。隐语义模型的具体算法有:PLSA、LDA、隐含类别模型、隐含主题模型、矩阵分解。
文本主题模型之非负矩阵分解(NMF)
汗,其实就是LFM
通俗理解LDA主题模型
这TM是我见过的最难的算法了。
解释一下,在LDA模型的假设是这样的,文章的主题分布不再确定,而是一个随机变量,同样的,每个词在同一个主题下的分布也不在确定,也是一个随机变量
在LDA模型里,第
i
i
i篇文章是这样产生的,1)首先从分布
α
\alpha
α里采样生成
θ
i
\theta_i
θi,把这个作为这篇文章的主题分布情况;2)然后基于这个主题分布情况
θ
i
\theta_i
θi,要为这篇文档生成第
j
j
j个词,但是先不急于直接生成这个词,而是缓一步,先去想这第
j
j
j个词应该属于什么主题,这个
z
i
,
j
z_{i,j}
zi,j就代表了,在整体主题分布为
θ
i
\theta_i
θi的前提下,第
j
j
j个词的主题的概率分布;3)然后从
β
\beta
β里采样,生成关于主题
z
i
,
j
z_{i,j}
zi,j的各个词语的使用分布,得到
ϕ
z
i
,
j
\phi_{z_{i,j}}
ϕzi,j;4)最后,采样生成词语。
先理解到这
基于图的推荐
PersonalRank:一种基于图的推荐算法
该算法的核心目的是衡量出对某一固定结点,其余结点的重要程度。从而得出推荐顺序。最终算出的某个商品的pr越大,说明这个商品与这个用户的相关性越高
节点c分得A
1
/
2
∗
α
1/2∗\alpha
1/2∗α,前面那个1/2是因为从A可以向外指两个路径,
α
\alpha
α是转移概率,最终c的得分应该是A的分数诚意
1
/
2
∗
α
1/2*\alpha
1/2∗α
论文阅读:Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba
排序学习
简介
Learning to Rank简介
NDCG通过评价一个排序中每个位置的文档的好坏,进而评价整个排序的好坏:
π
i
(
j
)
\pi_i(j)
πi(j)代表的是对于
q
i
q_i
qi,
d
j
d_j
dj处于的位置;
y
i
,
j
y_{i,j}
yi,j代表的是
q
i
q_i
qi与
d
j
d_j
dj的相关性;
G
(
j
)
D
(
π
i
(
j
)
)
G(j)D(\pi_i(j))
G(j)D(πi(j))表示的是,对于查询
i
i
i得到的排序,文档
j
j
j处于
π
i
(
j
)
\pi_i(j)
πi(j)时的得分:
G
(
j
)
G(j)
G(j)与query-doc pair相关性成正相关;
D
(
π
i
(
j
)
)
D(\pi_i(j))
D(πi(j))与所处位置负相关。
MAP也用于评价一个排序的好坏:MAP中
y
i
,
j
y_{i,j}
yi,j只能取{0,1},这个的意义在于保证
P
(
j
)
P(j)
P(j)在0到1之间,
P
(
j
)
P(j)
P(j)表示的是对于
q
i
q_i
qi的结果中,排在
d
j
d_j
dj之前的所有文档的排序准确性,比如现在
π
(
j
)
=
4
\pi(j)=4
π(j)=4,然后排序结果的前四位的得分分别是{1,0,1,1},于是
P
(
j
)
=
0.75
P(j)=0.75
P(j)=0.75,也就是说前面4个排对了百分之75,
P
P
P越高,说明前面的排序效果越好;AP代表着对于
q
i
q_i
qi得到的排序结果的前
n
i
n_i
ni位中,相关的文档的准确率的和除以相关的文档个数,所以就是平均准确率;
risk function的解释:对于
q
i
q_i
qi得到的文档序列记为
D
i
=
{
d
i
1
,
d
i
2
,
.
.
.
,
d
i
n
}
T
D_i=\{d_{i1},d_{i2},...,d_{in}\}^T
Di={di1,di2,...,din}T,那么
(
q
i
,
D
i
)
(q_i,D_i)
(qi,Di)可以被映射为一个特征向量
x
i
=
{
x
i
1
,
x
i
2
,
.
.
.
,
x
i
n
}
T
\mathbf{x}_i=\{x_{i1},x_{i2},...,x_{in}\}^T
xi={xi1,xi2,...,xin}T,如果
f
f
f是我们的模型,那么
f
(
x
i
k
)
f(x_{ik})
f(xik)代表着一个预测,也就是对
q
i
,
d
i
k
q_i,d_{ik}
qi,dik的相关性的预测,而
y
i
=
{
y
i
1
,
y
i
2
,
.
.
.
,
y
i
n
}
T
\mathbf{y}_i=\{y_{i1},y_{i2},...,y_{in}\}^T
yi={yi1,yi2,...,yin}T代表着
q
i
,
d
i
k
q_i,d_{ik}
qi,dik的真实相关性。于是对于
q
i
q_i
qi最终的输出是
F
(
x
i
)
=
{
f
(
x
i
1
)
,
f
(
x
i
2
)
,
.
.
.
,
f
(
x
i
n
)
)
}
T
\mathbf{F}(\mathbf{x}_i)=\{f(x_{i1}),f(x_{i2}),...,f(x_{in}))\}^T
F(xi)={f(xi1),f(xi2),...,f(xin))}T。进而对于
q
i
q_i
qi有了损失函数
L
′
(
F
(
x
i
)
,
y
i
)
L'(\mathbf{F}(\mathbf{x}_i),\mathbf{y}_i)
L′(F(xi),yi)
pointwise loss:
L
′
(
F
(
x
i
)
,
y
i
)
=
∑
j
=
1
n
(
f
(
x
i
j
)
−
y
i
j
)
2
L'(\mathbf{F}(\mathbf{x}_i),\mathbf{y}_i)=\sum_{j=1}^n(f(x_{ij})-y_{ij})^2
L′(F(xi),yi)=∑j=1n(f(xij)−yij)2
pairwise loss:
L
′
(
F
(
x
i
)
,
y
i
)
=
∑
j
=
1
n
−
1
∑
k
=
j
+
1
n
ϕ
(
s
i
g
n
(
y
i
j
−
y
i
k
)
,
f
(
x
i
j
)
−
f
(
x
i
k
)
)
L'(\mathbf{F}(\mathbf{x}_i),\mathbf{y}_i) = \sum_{j=1}^{n-1}\sum_{k=j+1}^n \phi (sign(y_{ij}-y_{ik}),f(x_{ij})-f(x_{ik}))
L′(F(xi),yi)=∑j=1n−1∑k=j+1nϕ(sign(yij−yik),f(xij)−f(xik)),其中
ϕ
\phi
ϕ可以是hinge loss, exponential loss或者logistic loss等,共性就是
s
i
g
n
(
y
i
j
−
y
i
k
)
,
f
(
x
i
j
)
−
f
(
x
i
k
)
sign(y_{ij}-y_{ik}),f(x_{ij})-f(x_{ik})
sign(yij−yik),f(xij)−f(xik)同时大或者同时小,整体损失就小;是对排序的结果进行两两比较。所以本质上还是传统机器学习模型,只不过pairwise模型中带有“保证某两个文档的评分大小关系正确”的意味。举例来讲,某个预测相关性的模型,单看预测结果并不好,一个实际相关性一般的文章
d
i
d_i
di会被预测为很相关,但是pairwise说没关系,
d
i
d_i
di的预测结果只要比实际相关性更差的文档的预测结果高,就可以了。
可以看到这个上面式子没考虑排序内部的文档之间的前后顺序和关系,只要对应位置上的相关性预测真实相关性对上了,损失就低;但我们要的是好的在前面坏的在后面啊。
listwise loss:
L
′
(
F
(
x
i
)
,
y
i
)
=
e
x
p
(
−
N
D
C
G
)
L'(\mathbf{F}(\mathbf{x}_i),\mathbf{y}_i)=exp(-NDCG)
L′(F(xi),yi)=exp(−NDCG),考虑了每个文档的位置
搜索评价指标——NDCG
BM25相关度打分公式
Introduction to Learning to Rank
Pairwise
Learning to Rank算法介绍:RankSVM 和 IR SVM
Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
RankNet中:预测相关性概率
P
i
j
P_{ij}
Pij,代表着
U
i
U_i
Ui比
U
j
U_j
Uj更相关的概率,两者相关性得分差距越大,
U
i
U_i
Ui的相关性更有可能比
U
j
U_j
Uj高
ERR评分:
R
i
R_i
Ri指的是第
i
i
i个文档有多大可能是相关的,而
R
r
∏
i
=
1
r
−
1
(
1
−
R
i
)
R_r\prod_{i=1}^{r-1}(1-R_i)
Rr∏i=1r−1(1−Ri)就代表了钱
r
−
1
r-1
r−1的文档不相关,但第
r
r
r个文档相关的概率,除以一个
r
r
r表示,排序越远端的文档(r大),对整体的ERR影响越小
机器学习排序算法:RankNet to LambdaRank to LambdaMART
Ranknet用的是神经网络,每次输入一个文档对,但两个文档用的是同一个网络,如
s
i
=
f
(
x
i
)
,
s
j
=
f
(
x
j
)
s_i=f(x_i),s_j=f(x_j)
si=f(xi),sj=f(xj),然后根据doc pair自己定义了一个损失,这个损失类似于cross_entropy,然后用每个doc pair的损失对参数求导,对导数进行因式分解,拆出来了个
λ
\lambda
λ,把这个
λ
\lambda
λ可以看做力(为啥这样呢,你看剩下的那项,就是一个差)
然后lambdaRank把
λ
\lambda
λ进行了一点修改,纯经验的修改,加了个
N
D
C
G
NDCG
NDCG的差,接下来一样,做梯度
CTR预估
科普|大家都看得懂的CTR预估解析
CTR预估入门及各种模型介绍
CTR预估就是在预测用户点击还是不点击
计算广告CTR预估的特征处理方法
计算广告CTR预估系列(六)–阿里Mixed Logistic Regression
Behavior Sequence Transformer for E-commerce Recommendation in Alibaba简析
FiBiNET:结合特征重要性和双线性特征交互进行CTR预估
一种能自动抽取特征与特征interaction重要性的CTR模型
你真的懂点击率(CTR)建模吗?
简化2 举个例子 上一时刻的我 和这一时刻的我 不是同一个我
CTR校准
面向稀有事件的 Logistic Regression 模型校准
CTR预估值校正 - xiaobao的文章 - 知乎
CTR预估中负采样修正
数据
Introducing LETOR 4.0 Datasets
LETOR: Learning to Rank for Information Retrieval
优化
FTRL
提到了投影,比如投影集合C是约束空间(例如可能是1范数的约束空间),所谓1范数约束空间,我理解就是,例如 w 1 ≤ 2 w_1\le2 w1≤2这样
FTRL算法
这其实就是一个在线学习过程中的参数学习算法,解决的是在线学习中,数据是一个一个来的或者说一些一些来的,数据量比较小的时候,如何用这个比较小的数据量来实时地更新参数。第一篇博客里写到说梯度都是按样本一个一个来计算的,但是我觉得,也可以小批次小批次的来计算
普通的OGD是先求梯度,然后对这个梯度进行投影,OGD仍然不够稳定,所以就提出了FOBOS和FTRL,稳定、保证正则化、并且根据伪代码可以看出,FTRL可以保证稀疏性
做截断就是,当更新了k次以后,下一次如果某个参数仍然不满足要求,就对他进行手动的处理
理解FOBOS算法对后续理解很有帮助,简单理解就是先求一个梯度,然后基于这个梯度更新一次参数,然后不直接用这个参数,而是用这个参数再去解一个优化问题,用这个优化问题的输出作为下一次的模型参数
从最后的伪代码可以看出,梯度更新是按特征轴进行的,比如10个特征,先更新特征1对应的参数w_1,以此类推
参数更新不要偏离历史太远,可以看到FTRL的第二项最小的时候就是均值
understanding-FTRL-algorithm
多任务学习
丹
阿里CVR预估模型之ESMM
详解谷歌之多任务学习模型MMoE(KDD 2018)
推荐系统遇上深度学习(九十二)-[腾讯]RecSys2020最佳长论文-多任务学习模型PLE
多目标学习在推荐系统的应用(MMOE/ESMM/PLE)
联合训练(Joint Training) 这里 实际上就是将损失换为对数似然的相反数,因为降低损失,实际上也就是在极大似然