【大师运营说】基于内容相似度的推荐算法简介

今天的文章从题目上可能会劝退一些人,内容也相对较专,对懂的人也许会有共鸣,但从拓展视野角度还是建议了解下。首先想说的是这篇文章不是入门讲座,也不会详细解释某个算法的具体逻辑,毕竟在这方面我不是专家,也不敢开一个这么大的坑。更多是想为36氪产品团队的分享会内容做留档,也顺便给大家做下推荐策略方面的知识普及,关于个性化推荐算法,有感兴趣想深入了解的同学,可以针对具体问题留言,我尽可能回答,有说的不对的,也欢迎指正~OK下面我们开始。

为什么会有这次分享呢?也是因为我们正在为自研推荐算法做储备,所以特意招了一名做过相关研究的同学专攻基于内容的策略模型部分,目前已经有了些结果,就说给整个团队做下汇报,也算是一种知识传播。毕竟个性化推荐已作为现今互联网的一种基础能力,逐渐被各大公司重视。

不过这篇文章不会给大家做讲推荐算法基本概念,而是具体说下我们研究的一个方向:基于内容向量相似度的推荐策略,应该怎么做。本来我们是打算采用标签匹配的方式做推荐,但发现科技类文章提取出的标签,在某种意义上很难说明文章想表达的含义。比如一篇讲腾讯高管离职再创业的文章,按TF-IDF切出的标签排序,可能都是腾讯、高管、创业这样的字眼,但实际文章想表达的是腾讯组织升级动作带来的影响,如果按标签相似度推文章,推出的都是腾讯新产品,或者高管创业的文章,匹配度并不高,于是我们又调整了方向,尝试不分标签,而是按文章和文章的相似度去推荐

我们的大概思路是这样的:先准备一批从2019年5月27日到5月31日这5天的用户阅读文章日志,并选取5月27日到5月30日这4天的阅读日志数据做训练,筛选出这期间阅读量>20条且都有阅读记录的用户,通过算法计算后,推出每个人可能会阅读的文章集,再把这些文章和5月31日的记录做对比,看有多少是重合的,重合度越高,代表我们推荐的就越准。

整个推荐建模的过程是:

1、用向量表示每篇新闻。

2、计算向量和向量之间的夹角余弦,衡量每篇文章和其他文章的相似度。

3、根据用户阅读历史,给他推荐相似度最高的其他文章。

4、把推荐文章列表和31日用户实际阅读文章对比。

最后得出如下表格:

第一列是用户唯一标识,第二列是31日实际阅读文章ID,第三列是推荐文章ID。我们最后就可以对比第二列的文章,有多少是出现在第三列中了,出现的越多推荐的也就越准。

关于新闻获取词向量的算法,这次建模用的是Huffman树,具体原理就不解释了,有兴趣可以百度下~

一些经验心得是,在操作过程中,如果你发现给出的相似文章,实际上内容关联度并不高,可能是由于被训练的文章集不够多,或者分词所用字典覆盖度不够全,由于36氪属于垂直媒体,有很多术语和专属名词,因此我们又根据记者在行业内的历史积累,导入了一批公司、、赛道的词汇加到分词字典中,最终能得出比较精准的相似内容。

再说下评估算法效果的指标,上文说了,我们会把推荐文章列表和31日用户实际阅读文章对比,最终会得出一个准确率的指标,也就是:用户点击的推荐条数/总的推荐条数 。除了准确率,行业内通用指标还有召回率:用户点击的推荐新闻条数/用户总的浏览新闻条数 ,从结果上,这个模型的准确率只有1.87%,整体不算高,这里也想问下做过相关推荐算法的同学,行业内平均能达到多少?求指教~

最后总结下构建这个模型的一些不足的地方,及对后续优化的思考:

  1. 推荐质量依赖于对内容描述的完整和全面程度。最简单有效的是使用关键词和标签(Tag)。目前使用的是词向量,每篇新闻的向量为100维,两两新闻之间都要计算,计算量太大
  2. 仅考虑内容之间的相似性,没有考虑用户之间,用户的其他特征等;
  3. 因为需要基于用户以往的喜好历史做出推荐,所以对于新用户有“冷启动”的问题。

不知你看懂了多少,说的其实有点散,我在这方面的积累和理解也只是皮毛,还在学习中,希望能对你有帮助,如果你也做过类似策略算法欢迎留言与我交流~

思源源码基地https://www.rmb4.cn所有源码资源均聚合于互联网各大会员资源站,仅用于您下载学习,如需商用,请您支持正版! 转载请注明出处!
源码基地-站长之家-网站模板-网站源码-源码之家-html模板-网页模板-Wordpress主题-织梦模板 » 【大师运营说】基于内容相似度的推荐算法简介

源码基地,源码之家,全网网站源码,APP源码,免费下载,采集规则免费教学!

立即赞助 发布资源