零、推荐系统中的特征
一、推荐系统的冷启动
角度1:为了准确匹配用户的需求,解决信息超载问题,各大互联网都有个性化的推荐系统,但是在建立该系统初期,没有大量用户数据,或者系统中的商品是新添加的,那应该推荐给哪些用户的问题。
目的:最优化点击率、转化率或用户体验(用户停留时间、留存率等)。
角度2:在基于深度学习的推荐系统中,当一个神经网络的训练完毕后,又要加入新的user或者item,如果把他们加入网络中再重新训练,embedding层的训练往往是整个网络中参数最大的(速度慢),训练时间会很长。
二、冷启动的分类
用户冷启动:没新用户的历史行为(兴趣)数据,又要给新用户做个性推荐;
物品冷启动:将新加入的商品推荐给潜在感兴趣的用户;
系统冷启动:解决如何在一个新开发的网站上(还没有用户,也没有用户行为,只有一些物品的信息)设计个性化推荐系统,从而在网站刚发布时就让用户体验到个性化推荐服务。
三、如何解决冷启动
首先对算法思维架构,心中时刻记住如下的蓝图,再进一步分析。
3.1 提供非个性化的推荐
各大社交平台上,都有热门排行榜(大众角度),新用户一般也会点击该热门排行榜中感兴趣的条目,即收集到一定量的用户行为数据后,再转为个性化推荐。
3.2 利用用户注册信息
一般各大app(如dou音、mai脉等)在用户注册时,都需要我们填写年龄、性别、学历、居住地或者职业等数据(甚至会让用户用文字写下自己的兴趣),那就可以做粗粒度的个性化,根据用户的注册信息对用户分类,给对应类别的用户推荐可能感兴趣的物品。
3.3 利用社交网络信息
很多平台注册登录时,可通过其他社交网络账号“绑定”登录(需要用户的授权),这个过程会导入用户在原社交网站上的好友信息,根据该用户的社交动态(如好友喜欢的物品等)进行推荐。
3.4 用户的试反馈
要求用户登录时,选中自己感兴趣的领域标签,得到他们近期的兴趣反馈。
3.5 协同推荐
新加入的商品,利用它们的商品具体内容信息,找到与之相似的商品,如果用户喜欢相似商品,则很可能对新加入的商品也感兴趣。
很多时效性很强的网站,都会经常加入新物品,新物品也需要尽早展现给用户,这时候物品冷启动就很重要,但是当新物品加入时,内存中的物品相关表中不会存在这个物品,从而无法推荐新的物品。解决这一问题的办法是频繁更新物品相似度表。
3.6 利用专家知识
很多推荐系统在建立时,没有用户历史行为数据,也没有充足的物品信息(用以计算准确的物品相似度)。
如 Pandora 是给用户播放音乐的个性化网络电台:
计算音乐(多媒体,音频)之间的相似度较为困难(不能只考虑歌词);
仅仅利用歌曲的专辑、歌手等属性难以得到准确的歌曲相似度表。
最后 Pandora 雇佣一批懂计算机的音乐人,听几万名歌手的歌,对歌曲各个维度进行标注(利用了400多个特征,详细参考wiki),同时 Jinni 电影系统平台也是用了专家知识和机器学习结合的方法解决冷启动(当然有了深度学习,今天不用这么麻烦地特征工程标注了)。
传统的机器学习方法:
如用聚类定位新物品所在的cluster,找到相似物品(强化学习中的反馈实时学习,实时调整推荐模型,如下图架构);
如根据 item / user 的特征训练一颗决策树,把冷启动的 item / user 根据特征分配到决策树的分支中。
强化学习框架的六要素
智能体(Agent):强化学习的主体也就是作出决定的“大脑”;
环境(Environment):智能体所在的环境,智能体交互的对象;
行动(Action):由智能体做出的行动;
奖励(Reward):智能体作出行动后,该行动带来的奖励;
状态(State):智能体自身当前所处的状态;
目标(Objective):指智能体希望达成的目标。
3.7 其他策略
主动学习:遵循“行动-反馈-状态更新”的强化学习循环;
迁移学习:迁移其他领域的数据或知识,用于本领域的学习;
四、embedding角度:补充side information
理论上,任何能够融合不同的深度学习模型都可以通过引入side information生成embedding。即我们的embedding可以不是仅仅基于历史行为来生成(用户历史行为不容易生成,特别是购买、完成观看的这类高质量的正向行为);
而加入其它类型的特征,如典型的用户侧特征:人口属性特征;典型的物品侧特征:内容型特征。
栗子:Taobao的EGES模型:https://arxiv.org/pdf/1803.02349.pdf(如下图)
S10、S11、S12…S1n分别是不同特征域对应的embedding,S10是item id,后面的n个即side information,如item的类别,价格,标签等等。
当一个item没有历史行为信息(即S10)时,可对side information的embedding进行加权平均(ps:可以在线上进行对side information embedding和item id的组装),从而提高embedding的覆盖率。
最后的embedding输入到主推荐模型,或CTR预估模型。
五、推荐工程架构的角度
王喆大佬说过:冷启动的问题其实有一半是系统实时性的问题。
如在新闻app中新用户第一次登陆后点击了一条新闻,那么接下来肯定是系统获取该信息越快越好:
如果系统建立在批处理上,每天训练一次,生成一次user embedding,则系统延迟是一天,用户第二天才能看到新的推荐内容。
如果系统基于流处理,流处理的窗口大小5分钟,只要流处理平台看到了用户产生了正样本行为,就马上更新用户embedding。系统延迟为5-10min,用户下次打开app则能看到更新。
在【王喆-推荐系统】前沿篇-(task3)流处理平台Flink:实时推荐的学习中,我们了解到批流一体的大数据平台flink特点:让批处理和流处理共用一套代码,从而既能批量处理已落盘的数据,又能直接处理实时数据流。
实时性最牛×的是Taob
ao推荐团队在EdgeRec文中介绍的,基于“边缘计算”的推荐系统。把推荐系统模型/策略做到了APP里面,就在客户端,就根据用户的新行为在设备内部做推荐,做结果的reranking(如下图)。
信息流推荐的目标和传统搜索引擎的目标不同:前者有浏览量PV、点击量IPV、成交量GMV等,后者则是相关性(最贴近用户兴趣的推荐列表展现出来)。
目前的推荐系统并没有同信息流推荐的场景成长起来,而更多的是借鉴于搜索和广告的技术,比如点击率(CTR)预估等。
信息流推荐是一个人机交互系统,其目标是整体收益的最大化。而边缘计算相比传统的云计算,具有稳定性、高带宽、低延时、隐私性的优点,淘宝就把展现决策系统放在手机app上了。
更多参考原论文:
论文:EdgeRec: Recommender System on Edge in Mobile Taobao
地址:https://arxiv.org/pdf/2005.08416.pd