近期尝试了基于 FTRL 来训练 FM 模型,用于短视频的排序。这篇博客主要总结一下算法的理论推导和工程化的一些心得。
符号约定与常用公式
一、推荐系统常用符号含义
符号表示 | 含义 |
---|---|
$\boldsymbol{x}$ | 输入变量,一般为特征向量 |
$\boldsymbol{x}_i=(x_i^{(1)}, \cdots, x_i^{(n)})^{\top}$ | 第 $i$ 个输入变量的取值,在推导损失函数等场景下,由于每次只考虑一条样本,记样本为 $\boldsymbol{x}=(x_1,\cdots,x_n)$,此时 $x_i$ 表示样本的第 $i$ 维特征 |
输入实例集合 | |
第 $j$ 个输入变量的第 $i$ 维特征取值的 $k$ 次方 | |
$y$ | 输出变量,一般为样本标签 |
$y_i$ | 第 $i$ 个输出变量的取值 |
$\mathcal{Y}={y_1,\cdots,y_N}$ | 输出实例集合 |
$(\boldsymbol{x}_i,y_i)$ | 第 $i$ 个样本点 |
$\mathcal{T}={(\boldsymbol{x}_1,y_1),\cdots,(\boldsymbol{x}_N,y_N)}$ | 训练数据集 |
$\boldsymbol{w}=(w_1,\cdots,w_n)$ | 权重向量 |
$w_i^t$ | 第 $i$ 维特征的权重在第 $t$ 轮迭代的取值 |
$\parallel \boldsymbol{w} \parallel_i^j$ | 权重向量 $\boldsymbol{w}$ 的 Li 范数的 $j$ 次方,例如 L1 范数:$\parallel \boldsymbol{w} \parallel_1$,L2 范数: $\parallel \boldsymbol{w} \parallel_2^2$ |
$\boldsymbol{g}=(g_1,\cdots,g_n)$ | 梯度向量 |
$\psi(\boldsymbol{w})$ | 正则化函数 |
从 SimRank 到 SimRank++
从 SimRank 到 SimRank++
上一篇博客《SimRank与视频相似度计算》 介绍了 SimRank$^{[1]}$ 及其在视频推荐中的应用,这一篇再谈谈 SimRank++。顾名思义,SimRank++ 是在 SimRank 的基础上做了一些优化,在文献 [2] 中提出时是为了解决搜索词改写的问题,本质上也就是计算搜索词的相似度。作者发现,当需要考虑二部图的边权信息时,原始的 SimRank 模型难以评估物品间相似度的可信度,这篇博客从视频推荐的角度来阐释作者的优化点。
SimRank与视频相似度计算
一、应用背景
最近需要对视频的相关推荐进行一些优化。之前尝试过 TagSim、AutoEncoder 和 Word2Vec 等方法,无非是基于元数据相似或基于协同相似的思路。但是在实际应用的时候,由于媒资传过来的信息未必是非常准确的,因此基于元数据相似的方法在数据基础上可能就存在一定的不确定性,因此常常会推出来一些虽然实际上很符合算法预期,但是看起来很奇怪的结果。而基于协同相似的推荐,由于需要比较多的行为数据来估计视频之间的相似度,又往往只能覆盖少量的视频。在应用中,我们往往使用的是两者的混合,但是由于混合比较简单粗暴,仍然有很多 VOC 问题。
因此,团队迫切的需要一种能够提升相关推荐效果的模型。而这种相关又是有强业务语义的,需要能够支持灵活的定制,因此在短时间内先不考虑深度网络(可解释性太差)。在调研中,发现有基于热传导的算法,感觉好像挺符合直观感觉,用了协同数据,同时也支持元数据。但是再顺着这个思路往下找的时候,发现 SimRank 是一种十分成熟且常用于相关推荐的模型,粗看了一下,感觉很符合我们的业务诉求,就迫不及待尝试了一下。
置信区间在推荐中的应用
学过统计的同学都对置信区间的概念非常熟悉,实际上,离开置信区间谈统计值没啥意义,或者说经常会造成很大的误导。简单来讲,置信区间是指基于观测样本来估计一个未知参数(如均值)时,我们相当确定(用置信度来度量)参数可能的取值范围。如果不考虑置信区间的概念,在我们观察到有 2 个用户喜欢一个视频、1 个用户不喜欢一个视频时,会估计该视频的推荐度为 66%,而认为它是一个高质量的视频,如果一旦将它进行大规模推荐时,很可能发现这个视频的实际转化率低的可怜。
因此在推荐里,置信区间是需要密切关注的概念。在推荐领域实践中,我从 3 个简单的算法来分别介绍置信区间的应用。