赛题解说|“达观杯”个性化推荐算法挑战赛技术讲解
Posted 达观数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了赛题解说|“达观杯”个性化推荐算法挑战赛技术讲解相关的知识,希望对你有一定的参考价值。
达观杯推荐算法大赛开赛将近一个月,获得了大量选手的踊跃参与。为方便大家更好的理解赛题,本次将做一个较为全面的讲解,包括对赛题背景、赛题数据、评分规则等的详细讲解,以及对解题的一些思路提示。
1“达观杯”个性化推荐算法赛题背景;
2赛事数据说明、评分规则详解;
3解题思路提示。
讲解人:纪传俊,达观数据联合创始人,承担公司重大紧急项目的架构设计和研发管理工作,复旦大学计算机专业硕士,曾任职于盛大创新院推荐组负责起点中文网和酷六视频的相关推荐,为有你社交app开发好友推荐系统,后任职于盛大文学数据中心全面负责大数据挖掘任务调度系统,智能审核系统和反作弊系统。对大数据挖掘技术,机器学习算法,分布式集群搭建和任务调度有较深入的理解和实践经验。
赛题背景
达观数据拥有中国领先的数据挖掘和搜索推荐技术,致力于为客户开发大数据系统,提升客户的经营业绩,已成功服务数百家著名企业。
达观团队由来自腾讯、百度、阿里、盛大的技术精英组成,CEO陈运文博士曾担任盛大首席数据官、腾讯数据中心高级总监、百度搜索技术专家。
达观团队曾参加过多次国际顶级数据挖掘比赛,并荣获ACM CIKM比赛和EMI Hackathon比赛两次冠军,以及一次KDD-Cup的亚军。
目前主打3大核心功能,包括文本语义理解(NLP技术)、个性化推荐引擎(本次赛题的来源)、垂直搜索引擎等。每个功能都是用户的痛点,也是达观非常擅长的领域,有着深厚的技术积累。
达观数据服务客户的宗旨是以效果说话。与客户的合作,都会保证客户的关键指标能得到明显的提升。图中是某视频网站接入我们服务之后,活跃量、播放量和观看时长都有了明显的提升。
介绍完达观数据提供的产品服务,也就很直接的可以知道这次赛题的背景。
达观杯赛题源于真实的资讯信息的个性化推荐场景。资讯推荐本身是个比较难的问题,难点主要有3个:
资讯总量大,更新频率快:
现在每时每刻都会有新的资讯产生出来,国内的国外的新闻娱乐科技等等不同类别的资讯,每天会新增大量的资讯。加上之前时间积累下来的,会导致资讯总量非常庞大,推荐系统的候选资讯集合就会非常庞大,从里面挑出用户感兴趣的内容会变得更为困难。
用户数量多、行为多,用户行为的成本低:
现在拿着手机刷资讯是非常普遍的现象,每天阅读资讯的用户量也会非常大,等于推荐系统要对一个很大的用户集合和一个很大的资讯集合求差集,系统的计算难度会非常的高。此外,用户的行为数量也比较多,因为资讯阅读是免费的,行为成本很低,用户很容易就多看一些,比如晚上睡觉前多刷一刷。
用户存在“浮动兴趣”:
所谓“浮动兴趣”,即不是用户最最感兴趣的,有时候可能因为一些热点事件或者猎奇心理,用户会去看一些原本不关注的内容。
本次赛题数据来源于真实的用户阅读行为。我们达观给出了两个典型的资讯APP的示意图,当然这两个不是我们本次比赛的数据来源,只是以此举例。资讯APP一般都会包含多个板块,比如热门、推荐、发现以及各个垂直类别的板块。用户进入APP的时候往往会选择不同的板块。因此,在我们给出的赛题数据里,只有一部分流量是走达观的推荐引擎,因而大家预测用户对资讯的行为,并不是在拟合达观的推荐系统。对于没有推荐算法的板块,资讯的展示顺序可能是当下的热门,或者编辑推荐的结果,或者按照时间由新到旧排序,资讯APP也会倾向于推出更新的资讯。
赛事数据解说
至此我们明确了本次赛题的来源背景,资讯推荐本身是个很难的问题。因此,现在榜单的分数比较低也是正常现象,我们自己也做过尝试,可以告诉大家,绝对分数不会很高,但是现在榜单的分数还有挺大的提升空间。接下来我们看看赛题数据的具体情况。
首先,本次比赛的题目,是给定一批用户ID(candidate.txt),给每个用户推荐最多5个资讯,资讯必须从候选集(news_info.csv)中选。推荐的资讯,只要用户在N+1天发生过任何行为,即为推荐成功。如图中所示,我们根据第N+1天的用户行为来构建计算榜单的数据。用户发生行为的资讯的顺序不会影响分数的计算。我们还提供了过去3天(第N-2, N-1, N天)的行为数据(train.csv),用于构建推荐模型。
排行榜分数的计算采用的是采用MAP@5计算得分。首先我们会针对每个用户ID计算其ap@5得分,再对所有用户的ap@5求平均值。公式如图中所示,其中ap@5公式中的P(k)是前k个推荐结果中,用户产生行为的资讯数占比。如果第k个推荐结果用户没有行为,则P(k)=0。注意,ap@5的分母是第N+1天用户有行为的资讯数量m和5之间的最小值,即如果用户只对3个资讯产生行为则分母为3,如果对超过5个资讯产生行为则分母为5。
给出几个榜单分数计算的具体例子。Kaggle网站上(https://www.kaggle.com/wiki/MeanAveragePrecision)也有非常详细的讲解。注意,提交的结果中,给每个用户推荐的itemid不能有重复,否则视为无效提交,无效提交会消耗提交次数。
接下来是各个数据文件的介绍。
首先是candidate.txt,包含了所有待推荐用户的ID,每行一个ID,共28501个用户。然后是news_info.csv和all_news_info.csv。news_info.csv是候选的资讯内容,是all_news_info.csv的真子集,含资讯类别和时间戳。给用户推荐的itemid必须包含在该文件中。all_news_info.csv是全量资讯内容,会存在较久以前的资讯,因为用户在train.csv里确实对这些资讯产生行为。train.csv里出现的资讯都会在这里面,但不一定会在news_info.txt里。
train.csv包含了3天(第N-2、N-1、N天)的用户对资讯产生的行为数据。行为类型包括view(点击)、deep_view(完整阅读)、collect(收藏)、comment(评论)、share(分享)。所有行为没有正面负面之分,只有发生和没发生。所有行为都是用户真实发生的行为,至少是用户对资讯产生了点击。其中,view和deep_view行为占绝大多数,因为其他行为成本较高。train.csv每个行为都包含了时间戳。本次比赛不提供资讯的展示数据,即给用户展示过的资讯(用户不一定有行为)。因为比赛数据是真实的线上数据,会存在很小量的噪音,比如view时间戳比deep_view晚,或者没有view只有deep_view的情况。有deep_view即可认为发生过view,只是数据采集有缺失。
test.txt是第N+1天另一小部分用户及其产生行为的资讯列表,格式和sample_submission.txt一样。train.csv和计算排行榜的数据中都不包括test中的用户。test.txt从一个小的局部反映出第N+1天的情况。需要强调的是,test的效果是有限的,从现在榜单的结果也可以看出来。大家可以更多的从train.csv里去挖掘规律,目前看来train.csv还没有得到很好的利用。
思路提示
train.csv的利用,可以有很多方法,目前选手尝试的还比较少。我们先给出一些最基本的思路供大家参考。
推荐系统的基本思路大概就是这些。对于个性化推荐,很直接的就能想到基于用户的协同过滤,直接给每个用户产生结果。当然,基于内容的协同过滤同样可以用,也是很常规的做法。还有基于用户标签的推荐,基于train.csv可以挖掘出每个用户的兴趣标签。
矩阵分解和机器学习是比较高级一点的模型算法。不管是推荐系统还是推荐比赛,矩阵分解都是必须会用到的重武器。机器学习的问题是,本次赛题没有提供负样本,需要选手自行构建,目前也已经有选手成功进行构建并取得了一定效果。
之前交流群里也有选手提到了基于规则的方法,这也是算法,对于刚参加比赛的选手,不放用规则算法来先练练。规则看似简单,但是是选手经验的总结,往往也会有出其不意的效果。
最后是集成学习(Ensemble),数据挖掘比赛中,取得前几名成绩的一般都得用到集成学习。只使用单一算法想赢得比赛,或者在实际系统中想取得好的效果,往往很难。每个算法都有其试用的环境,最好的做法是将多个算法的结果进行融合。
简单总结,算法也好,工具也好,都应该更多的进行尝试。网上有一些经验总结会说某某工具比另一个好,但这也不是绝对的,问题变了数据变了,工具产生的效果也会变。同时大家可以更多的关注行为类型和时间戳对权重的影响,这是会对算法效果产生影响的因素。
第二期赛事直播预告
分享时间:6月6日
分享相关:达观数据个性化推荐系统应用场景及架构实现
分享人:于敬
达观数据联合创始人,首席数据官联盟成员,中国计算机学会(CCF)会员,第23届ACM CIKM Competition竞赛国际冠军,达观数据个性化推荐组总负责人,工作包括推荐系统的架构设计和开发、推荐效果优化等。同济大学计算机应用技术专业硕士,承担公司个性化推荐研发管理工作,所开发的个性化推荐系统曾创造了上线后效果提升300%的记录。先后在盛大创新院和盛大文学数据中心从事用户行为建模、个性化推荐、大数据处理、数据挖掘和分析、文本智能审核、反作弊和广告投放引擎相关工作,对智能推荐、数据挖掘、大数据技术和广告引擎有较深入的理解和多年实践经验。
报名比赛
以上是关于赛题解说|“达观杯”个性化推荐算法挑战赛技术讲解的主要内容,如果未能解决你的问题,请参考以下文章
“达观杯”NLP算法大赛再启航,丰厚奖金直通Offer等你来拿!