![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
推荐算法
文章平均质量分 68
lipku
这个作者很懒,什么都没留下…
展开
-
从多样性谈起到dpp
在推荐算法中,除了要考虑个性化,还要兼顾多样性,不然用户很快就会觉得单调无趣。在衡量推荐结果的多样性时,自然而然能想到的是统计推荐结果中含有不同tag的个数,tag的个数越多,多样性越好。但是这种指标有个问题,它与用户看的内容条数正相关,用户看的内容条数越多,自然tag个数会越多。假设一条feed平均有3个tag,只看了1条feed用户的多样性指标是3;看了10条feed的用户,总共有30个 tag,假设有50%的重合度,有15个不同tag,大大高于看了1条feed的用户。为了抵消feed条数的影响,于原创 2021-04-10 16:54:49 · 1069 阅读 · 1 评论 -
推荐模型可解释性
推荐算法中各种深度学习模型层出不穷,但是万变不离其宗,我们从最原始的矩阵分解模型MF谈起MF模型是求解方程UIT=ZUI^T=ZUIT=Z,Z是label矩阵,格式如下:[10x⋯00x1⋯x⋮⋮⋮⋱⋮x01⋯1]\begin{bmatrix}1&0&\text{x}&\cdots&0\\0&\text{x}&1&\cdots&\text{x}\\\vdots&\vdots&\vdots&\ddots&原创 2021-03-28 15:39:48 · 325 阅读 · 1 评论 -
EE探索在推荐召回中应用
bandit EE的算法网上有很多文章介绍,这里就不再赘述了。本文主要介绍EE UCB算法在推荐召回中的实际应用。UCB的公式如下:C:topic点击次数; T:topic展示次数; t:该用户展现总次数 。该公式前半部分计算topic的实际点击率;后半部分计算探索概率。在topic展现次数较大时,主要依赖前半部分的值,即实际点击率的置信度较高。在topic展现次数较小时,点击率的置信度较低,此时对该topic主要靠探索值来排名。在推荐召回中,根据上述公式计算用户对每个topic的score,原创 2021-03-13 12:37:49 · 678 阅读 · 2 评论 -
tensorflow参数分割存储
在tensorflow的分布式训练中,默认将参数以变量名的维度分布式存储在不同ps上。如将item_embedding存储在ps0上,item_bias存储在ps1上。默认不会将同一个变量存储在不同的ps上。在实际情况中,有的变量行数很多,如item_embedding的行数一般有几百万量级,如果存储在同一个ps上,会导致该ps成为性能瓶颈。为了解决以上问题,在tensorflow中可以通过定义partitioner的方式将同一个变量分布式存储在不同ps上。具体使用方法如下:self.partition原创 2021-02-27 10:27:24 · 495 阅读 · 0 评论 -
batch内负采样
一般在计算softmax交叉熵时,需要用tf.nn.log_uniform_candidate_sampler多itemid做随机负采样。但是在类似dssm这种双塔模型中,item侧特征除了itemid外,还有其他meta特征,此时负样本对itemid做负采样后,还需要取相应负样本的meta特征。可是在tf训练数据中并不方便建立itemid与各类meta特征的映射表。为了解决dssm类模型的负采样问题,可以取一个batch内其他用户的正样本做为本用户的负样本,以解决负采样meta特征问题。好了,废话少说,原创 2021-02-17 09:18:56 · 2950 阅读 · 2 评论 -
推荐算法入门书籍
本文列出推荐算法入门基础知识。每个知识点都能在网上找到更详细的讲解,适合入门者使用。原创 2021-01-02 11:39:25 · 923 阅读 · 0 评论 -
scala中rdd与dataframe的各种创建方式
创建RDD1,从字符串创建rddsc.parallelize(xxx)如:val testrdd=sc.parallelize(Seq((1,Array("1.0"),3),(2,Array("2.0"),6),(3,Array("3.0"),7),(1,Array("3.0"),7)))2,从文件创建rdd读文本文件val citylevel = sc.textFile(...原创 2019-12-14 11:10:34 · 1372 阅读 · 0 评论 -
tensorflow维度理解
tensor维度本质就是逐层脱去括号。脱第一层括号后,紧挨着的一层整体只有一个元素,故为1脱掉第二层括号后,里面整体有三个元素,即三行脱掉第四层,里面整体依然有三个元素,比如[1],[2],[3]再往里面看,只有一个元素故最后得到的是1*3*3*1。越高层的维度在越里面,具体到深度学习里,如tf.nn.embedding_lookup(itememb, batchite...原创 2019-11-20 19:46:48 · 464 阅读 · 0 评论