1.基础理论篇
1.1 什么是个性化推荐?
“在24小时便利店,因为店面很小,用户可以凭自己的经验浏览所有货架找到自己需要的东西。在沃尔玛,商品已经被放在无数的货架上,此时用户就需要借用分类信息找到自己需要的商品。而在淘宝或者当当,由于商品数目巨大,用户只能通过搜索引擎找到自己需要的商品。
但是,如果用户没有明确的需求呢?比如你今天很无聊,想下载一部电影看看。但当你打开某个下载网站,面对100年来发行的数不胜数的电影,你会手足无措,不知道该看哪一部。此时,你遇到了信息过载的问题,需要一个人或者工具来帮助你做筛选,给出一些建议供你选择。如果这时候有个喜欢看电影的朋友在身边,你可能会请他推荐几部电影。不过,总不能时时刻刻都去麻烦“专家”给你推荐,你需要的是一个自动化的工具,它可以分析你的历史兴趣,从庞大的电影库中找到几部符合你兴趣的电影供你选择。
这个工具就是个性化推荐系统。”
1.2 个性化推荐是如何工作的?
“要了解推荐系统是如何工作的,可以先回顾一下现实社会中用户面对很多选择时做决定的过程。
仍然以看电影为例,一般来说,我们可能用如下方式决定最终看什么电影。
- 视频号-关注:向朋友咨询。我们也许会打开聊天工具,找几个经常看电影的好朋友,问问他们有没有什么电影可以推荐。甚至,我们可以打开微博,发表一句“我要看电影”,然后等待热心人推荐电影。这种方式在推荐系统中称为社会化推荐(social recommendation),即让好友给自己推荐物品。
- 视频号-朋友:我们一般都有喜欢的演员和导演,有些人可能会打开搜索引擎,输入自己喜欢的演员名,然后看看返回结果中还有什么电影是自己没有看过的。比如我非常喜欢周星驰的电影,于是就去豆瓣搜索周星驰,发现他早年的一部电影我还没看过,于是就会看一看。这种方式是寻找和自己之前看过的电影在内容上相似的电影。推荐系统可以将上述过程自动化,通过分析用户曾经看过的电影找到用户喜欢的演员和导演,然后给用户推荐这些演员或者导演的其他电影。这种推荐方式在推荐系统中称为基于内容的推荐(content-based filtering)。
- 视频号-推荐:我们还可能查看排行榜,比如著名的IMDB电影排行榜,看看别人都在看什么电影,别人都喜欢什么电影,然后找一部广受好评的电影观看。这种方式可以进一步扩展:如果能找到和自己历史兴趣相似的一群用户,看看他们最近在看什么电影,那么结果可能比宽泛的热门排行榜更能符合自己的兴趣。这种方式称为基于协同过滤(collaborative filtering)的推荐。
从上面3种方法可以看出,推荐算法的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。
1.3 什么样的推荐算法是好的推荐算法?
“好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。”
1.4 推荐算法有哪些?
推荐算法分为传统推荐模型算法和深度学习算法,其中传统推荐模型是深度学习推荐模型的基础。
1.4.1 传统推荐学习算法之协同过滤算法
所谓的协同过滤算法就是 协同大家的反馈,评价和意见一起对海量的信息进行过滤,从中筛选出目前用户可能感兴趣的信息的推荐过程。
协同过滤(Collaborative Filtering,CF) 分为UserCF(基于用户相似度的推荐,用户协同过滤)和 ItemCF (基于物品相似度的推荐,物品协同过滤)
1.4.1.1 UserCF
我们先来看UserCF,即基于用户相似度的推荐。
就拿本次比赛来说,赛题提供的是某用户X最近14天的浏览历史记录以及其他两万用户对短视频操作所产生的影响记录。
我们比赛的目标就是需要根据这些历史数据推测第15天该用户X 打开视频号最想看的视频列表。
那么我们应该如何生成这个推荐视频列表呢?
我们能利用的只有该用户X近14天的浏览历史记录和其他用户认为好的视频来作为推测依据。
如果我们想使用基于用户相似度的推荐,那么我们需要找到和该用户X 相似的top n个用户。
然后根据这n 个用户对视频的评价,反馈来推测用户x 是否会喜欢这个视频,如果喜欢则推荐,如果不喜欢则不推荐。
除此之外,我们还可以根据用户的历史行为,比如昨天看完了某短视频作者剪辑的电视剧视频第一集, 那么第二天再次打开视频号,那么可能希望看该视频系列新更新的第二集的视频。
当然,除此之外,我们还可以为用户创建各种各样的用户画像,不仅分析相似的用户,还可以分析关注的用户的新视频更新。
使用这种UserCF推荐算法, 所需要的存储开销特别大, 再加上当时大数据存储技术还不成熟,所以当年Netflix 采用的第一版推荐算法采用的是ItemCF。
1.4.1.1 ItemCF
那么什么是ItemCF呢?
ItemCF ,即基于物品相似度的推荐,物品协同过滤。
在实际不同的应用场景中,各有不同。比如在短视频中,ItemCF 是指基于视频相似度的推荐。在电商中,ItemCF 是指商品相似度的推荐。
比如,我们昨天看了某个漫画作者创作的视频,但是该作者的视频更新全部看完了,那么该用户会不会也喜欢类似的其他漫画作者创作的视频呢?
也就是说,当用户看完一个视频的时候,我们需要对用户看的视频信息进行统计和分析,比如该视频是属于什么分类?内容是什么方向的?
不过人性是最善变的,如果一直推某个方向的,用户也会审美疲劳,因此当通过信息召回发现用户对刚开始感兴趣的视频看的有疲倦的时候,就应该调整推荐算法,尝试推荐新的领域或分类的视频。
正如开头说的那样:“好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣,但却不那么容易发现的东西。”
1.4.2 传统推荐学习算法之矩阵分解算法
根据前面学习我们知道,根据协同过滤算法很容易找到用户感兴趣的视频或者称之为好评的视频,但是这种推荐算法有一个致命的缺点:
- 热门的视频具有很强的头部效应,容易跟大量视频产生相似性。
- 尾部的物品由于特征向量稀疏,很少与其他物品产生相似性,导致很少被推荐。
也就是说,协同过滤算法造成的结果可能是好的视频或top n的几个视频创作者长期霸榜,新视频和新作者很难超越早期优势的视频和作者。
因此,为了解决这个问题,矩阵分解算法被提出。
前面提到,无论是基于用户的UserCF 还是基于视频的ItemCF 协同过滤算法,都会容易形成头部效应。
那么有没有办法对 UserCF 和ItemCF 求一个交集呢?
根据博主的理解,所谓的矩阵分解算法貌似是对协同过滤算法做的一个优化,相当于 UserCF 和ItemCF 计算的结果求交集。
PS: 关于矩阵分解算法,一些专业书籍讲的比较专业,这一块博主理解的还不是很深,如果有写的不对的地方,欢迎各位评论区一起探讨交流学习。
1.4.3 传统推荐学习算法之逻辑回归模型算法
不管如何,上面提到的协同过滤算法基本上都是利用用户和视频的信息对比,形成的一个排序结果集。
但是人性是多变的,可能今天你想吃香蕉,明天就想吃菠萝了。
如何让算法去知道这一切呢?
根据书上记载,逻辑回归算法在协同过滤算法和矩阵分解算法的基础上,增加了上下文特征。
怎么理解?
根据博主理解,比如,前阵子是520,那么推荐的短视频可以尝试推荐一些以520 为主题的视频推荐或广告推荐。
再比如,过阵子马上就是端午节了,到端午节那段时间能否找出和端午节相关的一些视频进行推荐呢?
不知道你们有没有发现,所谓的逻辑回归模型算法有了一个特别的东西:应景。
也就是书上所说的上下文特征,不同的时间,地点,推荐的内容应该是不一样的。
1.4.4 传统推荐学习算法之GBDT+LR 组合模型算法
通过上面的科普,我们应该了解到,不同的推荐算法有不同的优缺点,所以真正的推荐算法,应该不止使用一种推荐算法,而是根据实际的应用场景使用适合的算法组合。
但是于此同时,如果使用过多的算法模型组合,会形成组合爆炸和计算复杂度过高的问题。
2014年,Facebook 提出了 GBDT+LR 组合模型的解决方案。
简而言之,FaceBook 提出了一种利用GBRT 自动特征筛选和组合,进而生成新的离散特征向量。再把该特征向量当作LR模型输入,预估CTR的模型结果。
关于这一点,由于博主理解的还不深刻,暂时不展开介绍,有兴趣的可以翻阅相关学习资料。
1.4.5 传统推荐学习算法之LS-PLM 阿里巴巴曾经的主流推荐模型
LS-PLM 又被称为MLR(Mixed Logistic Regression,混合逻辑回归) 模型,它在逻辑回归的基础上采用分而治之的思路,先对样品进行分片,再在样品分片中应用逻辑回归进行CTR预估。
怎么理解呢?
比如,当男生和女生打开淘宝,看到的首页推荐分片内容是不一样的。
男生打开淘宝,向他推荐的可能是数码产品,游戏等。
女生打开淘宝,向她推荐的可能就是女装,化妆品,怎么让女人更美之类的推荐。
总结:
PS: 传统推荐模型是深度学习推荐模型的基础, 更高一级就是基于神经网络的深度学习算法, 以后有机会再分享,
关于短视频推荐,一般需要分析的是用户关系,视频关系,用户和视频的关系。
这里汇总关于短视频推荐分析可能涉及到的一些业务指标做一些解释:
- 视频PV( 对某视频的总播放量,同一个用户播放多次,播放量也增加) ,视频UV(不同用户对该视频的播放量才增加),
- 视频公开点赞数,私密赞数,分享数,评论数,转发数,视频作者分享内容标签,
- 个人主页访问PV ,个人主页访问UV,
- 用户性别,年龄,收入,粉丝数,关注的人,其他用户聊天频次推测关系远近。
- 用户点击视频作者头像事件
- Feed作者id和浏览者id在数据集里面是独立的。
2微信视频号推荐算法大赛相关资料
2.1 赛程安排
2.2 奖项设置
2.3 赛题介绍
本次比赛基于脱敏和采样后的数据信息,对于给定的一定数量到访过微信视频号“热门推荐”的用户, 根据这些用户在视频号内的历史n天的行为数据,通过算法在测试集上预测出这些用户对于不同视频内容的互动行为(包括点赞、点击头像、收藏、转发等)的发生概率。 本次比赛以多个行为预测结果的加权uAUC值进行评分
比赛提供训练集用于训练模型,测试集用于评估模型效果,提交结果demo文件用于展示提交结果的格式。 所有数据文件格式都是带表头的.csv格式,不同字段列之间用英文逗号分隔。初赛与复赛的数据分布一致,数据规模不同。 初赛提供百万级训练数据,复赛提供千万级训练数据。
2.4 大赛视频
召回–>粗排–>精排–>多目标融合–> 混排
查看评论 点赞 点击头像 转发 收藏 发表评论 关注
2.5 代码介绍
代码仓库: https://github.com/WeChat-Big-Data-Challenge-2021/WeChat_Big_Data_Challenge.git
环境:
pandas官网: https://pandas.pydata.org/ pandas>=1.0.5
Tensorflow 官网: https://www.tensorflow.org/ tensorflow>=1.14.0
python3官网:https://www.python.org/download/releases/3.0/ Python3
比赛对编程语言、算法、深度学习框架是否有限制?
- 编程语言、算法思路无限制;
- 复赛平台仅支持pytorch、tensorflow、mxnet这三个深度学习框架;
数据说明:
- user_action.csv: 用户行为表
- feed_info.csv: Feed信息表
- feed_embeddings.csv: Feed向量表
- test_a.csv: A榜测试集
- submit_demo_初赛a.csv: A榜提交结果demo
2.6 联系方式
大赛官网:https://algo.weixin.qq.com/
大赛邮箱: [email protected]
大赛QQ群 762146461 304389749 616504318
讨论和问答区: https://developers.weixin.qq.com/community/minihome/mixflow/1841304830498127872
参考资料
- 《深度学习推荐系统》
- 《推荐系统实战》
本篇文章纯属抛砖引玉, 如果文中有所不对之处,欢迎各位评论指出。
本篇完~