minlonglin

作者简介:minlonglin,AI平台部Y项目组员工。2012年毕业于中国科学技术大学计算机科学与技术学院,读博期间主攻集成学习、类别不平衡分类等方向,期间曾在IEEE Transactions on Neural Networks and Learning Systems发表类别不平衡分类的相关论文。此前在TEG\内部搜索平台部(现改名为AI平台部)\智能算法组从事新闻推荐的点击率预估相关工作,现在AI平台部Y项目组,从事自然语言处理相关工作。

概述协同过滤算法是推荐系统中的最基本的算法,该算法不仅在学术界得到了深入的研究,而且在工业界也得到了广泛的应用。本文介绍最基本的基于物品的和基于用户的协同过滤算法,并结合新闻推荐的CTR预估,介绍基于物品的协同过滤算法在CTR预估的抽取数据特征中的应用。

基于物品的协同过滤算法基于物品的协同过滤算法(以下简称ItemCF)是目前工业界应用最多的算法。ItemCF的基本原理是给用户推荐那些和他们之前喜欢的物品相似的物品。例如,该算法会因为你购买过《机器学习导论》而向你推荐《数据挖掘:概念与技术》。ItemCF算法在评估物品间的相似度的时候,并不是使用物品的内容属性,而是通过分析用户对物品的共同行为来评估物品之间的相似度。该算法认为,物品A和物品B之间具有很大的相似度是因为喜欢物品A的用户大部分也都喜欢物品B。

ItemCF算法的主要步骤如下:

1. 根据反馈历史计算物品间的兴趣相似度2. 根据目标用户的历史记录,记录正反馈物品集合

3. 将与集合中的物品相似的物品推荐给目标用户

下图是ItemCF算法的一个简单的示意。

如何计算物品间的相似度呢?一个比较基本和直观的定义是Jaccard相似度:

其中,N(i)表示喜欢物品i的用户集合。另外一种比较常用的定义是余弦相似度:

从上面的定义可以看到,两个物品产生相似度是因为他们共同被很多用户喜欢。

在得到物品的相似度之后,ItemCF算法通过如下公式计算用户u对物品i的兴趣程度:

其中,N(u)是用户u喜欢的物品集合,S(i,K)是与物品相似的TOP K个物品的集合,wij是物品i和物品j之间的相似度,ruj是用户u对物品j的兴趣度。这个公式的含义是,和用户历史上喜欢的物品越相似的物品,越有可能推荐给用户。给定用户u,给出推荐物品列表的步骤如下:for u喜欢的每一个物品i:

for 与i相似的每一个物品j:

对p排序,推荐Top N给用户u

基于用户的协同过滤算法基于用户的协同过滤算法(以下简称UserCF)可以算是推荐系统领域中最古老的算法。UserCF的基本原理是通过找到与目标用户相似的用户,把那些用户喜欢的而目标用户没有听说过的物品推荐给目标用户。与ItemCF类似,这里用户之间的相似度并不是通过用户之间的具体属性评估的,而是通过用户历史上对物品的反馈来评估的。

UserCF算法的主要步骤如下:

1.根据反馈历史计算用户间的兴趣相似度2.找到和目标用户兴趣相似的用户集合3.找到这个集合中用户喜欢的,且目标用户没有见过的物品推荐给目标用户

下图是UserCF算法的一个简单示意。

如何计算用户间的相似度呢?与ItemCF类似,两种基本的方式。记N(u)为用户u喜欢的物品集合,N(v)为用户v喜欢的物品集合,则用户u和v之间的Jaccard相似度为:

余弦相似度为:

同样的,用户u和v之间相似,是因为用户u和v共同喜欢了很多物品。

在得到用户的相似度之后,UserCF算法通过如下公式计算用户u对物品i的兴趣程度:

其中,N(i)是喜欢物品i的用户集合,S(u,K)是与用户u相似的TOP K个用户集合,wuv是用户u和用户v之间的相似度,rvi是用户v对物品i的兴趣度。这个公式的含义是,和目标用户越相似的用户所喜欢的物品,越有可能推荐给目标用户。给定用户u,给出推荐物品列表的步骤如下:for 与u相似的每一个用户v:

for v喜欢的每一个物品i:

对p排序,推荐Top N给用户

协同过滤在新闻推荐CTR预估中的应用特别说明

新闻推荐一般的步骤为:

1.给定多种策略给出用户可能感兴趣的文章队列

2.每个用户和新闻对为一条数据,抽取相关的特征,用于做CTR预估

3.将数据输入到预先训练好的CTR预估模型,得到CTR

4.按照特定的展示策略和CTR排序展示出推荐的文章

协同过滤一般是在上述步骤的第一步中完成的,即用协同过滤的方法给出用户可能感兴趣的文章列表。但是,在做CTR预估的时候,由于缺少用户对新闻的兴趣度特征,使得新闻自身的特征(如新闻标题分词)会起到主导作用,而新闻自身的特征是和特定用户的兴趣关系不大的,因此有必要添加用户对新闻的兴趣度特征(这里称之为个性化特征)。本节介绍基于新闻标题分词的协同过滤的方式增加用户对新闻的个性化特征。

协同过滤增加个性化特征

在新闻推荐问题中,作为物品,新闻的更新速度远远大于新用户的加入速度,因此,一般情况下UserCF是比较常用的算法。但是,新用户的快速加入也使得在使用UserCF的时候,用户相似度表的更新也要非常频繁。这也给UserCF的实用性带来了一些局限。而如果将新闻标题的分词作为物品,就可以采用ItemCF的方法,维护一个分词间的相似度表(不需要很频繁更新),根据用户的历史反馈建立用户对分词的兴趣模型,这样,就可以在4.1中所述步骤的第2步中,增加用户对新闻标题分词的个性化特征。

接下来简单介绍这种方式的具体做法。

根据点击记录,将点击过分词ti的用户集合表示为U(ti),用户ui点击过的分词集合表示为T(Ui),那么分词间的相似度计算公式为:

对每个有点击历史的用户u,u对分词ti的兴趣度为:

这样,就建立了一个用户对新闻标题分词的兴趣模型。在实验中,增加该类特征之后,AUC提升1%以上。

文章来源于腾讯云开发者社区,点击查看原文