基于物品相似度的智慧推荐算法
编辑导语:智能推荐算法的目的就在于实现个性化推荐,根据用户兴趣和行为特点,向用户推荐所需的信息或商品,帮助用户在过载信息中快速发现真正所需的商品,提高用户黏性;本文作者分享了关于智慧推荐算法的分析,我们一起来了解一下。
最近接到一个任务,是一个教育类App上的智慧推荐版块,要针对用户的购买习惯推荐相应的可购买内容,千人千面的满足客户的个性化需求,提高商品的点击量和购买量。
一、业务逻辑及适用机制
客户需求具体如下:
- 展览服务:结合以用户的年龄、兴趣、过往观展记录生成的用户画像,以及展方主推内容,为用户智能推荐展出内容,加强用户体验。
- 比赛服务:根据用户以往参赛、订阅记录,以及系统中的参赛选手档案信息,智能推荐比赛内容。
- 演出服务:根据用户购票、退票、观演历史和用户演出评价记录,智能推送用户可能感兴趣的演出。
可以看出,此处智慧推荐的用户个性化需求十分强烈,预设了用户比较倾心于他以前购买过的相同类型的物品。
目前,市面上商用的主流推荐算法大致可分为如下几类:
- 基于内容相似度的推荐;
- 基于用户相似度的协同过滤;
- 基于物品相似度的协同过滤;
- 基于流行度的推荐算法;
- 基于模型的推荐(输入一些用户特征建立模型,进而产生推荐结果);
- 人工推荐(人工运营添加推荐条目)。
本项目非常符合基于物品相似度的协同过滤算法的使用场景。
二、算法的特点
基于物品相似度的协同过滤算法的适用场景有如下特征:
长尾物品丰富,用户个性化需求强烈的领域;长尾效应很好理解,举个例子,最主流、最热门的书籍总是占据书店最显眼的位置,而相同类型的冷门书籍摆上货架的可能性就小得多,哪怕这些冷门书确实还是有市场需求的。那用户购买过某热门书籍,那我把相同类型但卖的不那么好的书推荐给老用户,这是非常合理的吧?而每个人所看的书籍类型千差万别,我告诉你有某个你不认识的人也爱看某本书,你恐怕也不一定愿意买吧。
物品数远小于用户数的场合;物品数据相对用户数据本身就更为稳定,再者物品数据的样本量小,此时计算物品的相似度不但计算量较小,也不必频繁更新,程序压力小。
因此该算法往往应用在图书、电子商务、教育及电影网站,这些领域均符合以上两点特征。
基于物品相似度的协同过滤算法,其关注点在于维系用户的历史兴趣,而其交互特点在于推荐结果的实时变化。其优缺点如下:
- 缺点:存在App冷启动的问题,即App刚开始使用时用户数少,内容也少,未形成用户喜好池;对于本项目来说,也即是在缺少用户的历史记录,无法据此推荐内容的情况下,适用范围受限。
- 优点:推荐结果解释性强;随着用户的浏览记录数据的增加,推荐一般也会越来越准确。
三、算法的实现
在本次项目中,基于物品相似度的协同过滤算法的实现大致如下所示:
计算物品(课程/活动/演出/展览/比赛等)的相似度。
步骤如下:
利用物品的内容属性计算相似度。内容属性类似于一种标签,能体现出物品的共性。
物品可以是实体的物件,也可以是虚拟的娱乐服务。比如某演出的类型,是话剧、舞蹈还是歌唱?演出的适宜人群是10-18岁的青少年,还是二十来岁的大学生,还是工作稳定家庭圆满的中年人?演出的地点在茶馆、体育馆还是歌剧厅?
一个物品可以有多个标签,而两个物品相同的标签越多,两者的相似度也就越高。
分析用户的行为记录计算相似度。用户的行为记录包括曾经观看过的演出、展览,参加过的比赛,购买过的商品等。确认了用户的行为偏好,就“投其所好”。
为用户生成推荐列表。将物品和用户的行为关联起来,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得更高的排名。需要考虑以下几个方面:
业务场景:共可分为冷启动、非冷启动新用户、非冷启动老用户、匿名用户四种。不同的业务场景适用的算法不同,对于本项目,基于物品协同过滤推荐算法适用于非冷启动老用户。
不同业务场景适用的算法不同
推荐位置:需考虑前端推荐列表的入口(首页或某个模块),以及其内部的界面层级。
结果评测:推荐列表上线后,收集数据用于算法的优化。需对比算法使用前后商品销售量和销售额的增长情况,以此衡量算法的有效性并及时调整推荐机制。
- 商品的数量层面的相关数据:点击量、点击率、收藏量(若允许收藏)、加购量、加购率、提交订单量、提交订单率、订单付款率、占比等等。
- 商品的金额层面的相关数据:点击量、收藏金额、加购金额、提交订单金额、付款额、占比等等。
本次项目中,前端给定了一个智能推荐主入口,提供展览服务、比赛服务、演出服务三个次级入口。
需要注意的是,这三个次级入口所导入的内容,均是已经维护好的,只是处于同种物品的长尾列表内,曝光率可能较低。智慧推荐要做的就是提升这些内容的曝光率。
考虑的物品内容属性及权重系数有所区别:
展览服务(展览):
- 展览位置:考虑到不同场馆给用户带来的体验不同,用户可能偏向于在某个展馆内观展,因此会对相同展馆内举办的展览进行推荐。权重系数低。
- 展览时间:用于相近时间段的推荐。如某展览举办期间还有其他展览也在举办;或者用户在观赏某演出的当天,也有某个展览正在举行,希望用户可以“顺便”参加某展览。权重系数低。
- 展览类型:展览可分为书法展、绘画展、科技展等不同类型,每种类型又可细分为多个小类,如绘画展可细分为中国画展、油画展、 版画展等等。实际上,在维护展览的相关信息时,已经为不同展览设定了标签。权重系数高。
- 适宜人群:不同年龄段的人所爱好的东西有其相似性,因此要对展览的受众进行区分,如10岁以下的幼童、10~18岁的青少年、18岁以上等等。
比赛服务(比赛):比赛类型(书法、绘画、朗诵、小发明等标签)。
演出服务(演出):演出位置、演出类型(朗诵、歌唱、舞蹈、小品等标签)、演出时间(近期推荐)等,类似展览。
后台给定了算法的模板配置页面,推荐位配置页面以及结果评测页面。
本文由 @Smile 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自 Unsplash ,基于 CC0 协议
如果要写一个推荐相关的产品文档,应该跟开发列出具体的算法实现逻辑吗
可以呀,只要你很会~
!!!!
咩呀?有问题欢迎指正嘿嘿嘿