从零开始构建企业级推荐系统,推荐系统5W3H框架 思维导图
why 产品需要推荐系统吗
推荐系统目的是帮助人们解决信息过载的问题,推荐算法就是一种信息过滤的方法
产品提供的信息/服务足够多,用户没有时间、没有精力将所有信息/服务都查看一遍再选择适合自己的
用户规模足够大,如果只有很少用户,那么其实是可以通过专家提供专业建议的方式来提供服务的。
如果产品是面向C端用户提供海量信息/服务的,就有做推荐的必要
推荐系统最大的优势是千人千面、完全自动化、每天可以多次更新甚至实时更新推荐结果。
领导是否相信推荐技术可以更好地处理信息过滤问题、是否相信推荐系统能够产生极大的商业价值
需要考虑ROI(Return On Investment,投入产出比、投资回报率),希望利用最小的资源投入产出最大的价值
who 让谁来搭建推荐系统
自建推荐系统
自建推荐系统最大的优势是整个系统的建设掌握在自己手上,可控性好,方便业务调整和快速迭代,另外算法可以更贴合自己产品的特质做定制化开发,部分开发资源也可以跟后端团队共享
自建最大的问题是需要自己公司招聘推荐系统相关专业人员,因此有更多的固定人力成本
目前对推荐系统比较精通的人才是非常少的,价格也相对很高,小的创业公司也很难吸引优秀的人才,因此组建推荐团队难度高
如果公司将推荐系统作为产品的核心功能点,甚至是公司的核心竞争力的话,那么一定要自建推荐系统,这是自己可以完全控制的,核心竞争力一定要掌握在自己手上
购买推荐系统云服务
目前有很多云服务厂商(如阿里云、百度云等)和一些做toB生意的AI创业公司(如神策数据等)都提供了推荐系统的SAAS或者PAAS服务
该方案最大的优势是接入流程相对完善、标准化,可以快速构建一套可用的推荐服务
云服务最大的问题是采用的推荐算法是行业通用的解决方案,模型、数据无法完美匹配自己公司的业务,而我们只能适配云服务厂商提供的规范,比较死板,因此算法效果也不一定有他们鼓吹的那么好
云计算一般提供标准化服务,因此,很难、甚至无法对推荐系统进行个性化的调整和裁剪
公司对第三方框架的熟悉度不高,二次开发难度也比较大,做不到自建那样的灵活性
如果是期望产品具备推荐的能力,没有将所有希望奇托于推荐系统,推荐只是作为人工运营的一个补充,可以采用云服务的方式
先采用云服务的方式,等招聘到合适的推荐系统人才或者产品更稳定了再自己搭建也是可行的方案
通过外包构建推荐系统
部分传统的外包公司在大数据与人工智能大背景下,也拓展了业务范围,开始提供搭建推荐系统方面的外包服务
将公司推荐业务范围和目标定义好,外包给第三方团队来开发是另外一个可行的方案
外包最大的问题是,第三方可能对你的业务不熟悉,理解不够深刻,责任心也没那么强,无法做出非常贴合业务及产品特色的推荐系统
外包代码一般注释少,代码结构不清晰,因此后续的维护、迭代等等也是大问题
外包团队离职率高,等你的系统需要优化了,可能对接的是另外一批人,这批人根本不熟悉原来的系统,无法进行优化
不建议的是外包的方式,不可控因素太多了,风险太大
when 在什么阶段搭建推荐系统
建议在产品的起步阶段和成长阶段来构建推荐系统,这样可以更早地利用AI技术的红利,发挥推荐算法的优势,提升内容的分发效率,提高用户的参与度和粘性
越早想清楚推荐的价值,趁早做,可以尽快验证推荐对产品的贡献,及时决策调整
where 推荐内容放在那里
在产品中位置是非常重要的,要做好推荐,必须放到核心位置,推荐产品只有用户看到了才知道它的存在
首页是用户打开产品就能第一个看的的页面,所以一定是用户触点多的核心位置
个性化推荐可以安置在首页等核心位置为用户提供个性化的推荐服务
what 搭建什么样的推荐系统
推荐系统主要有排行榜推荐、相似推荐、个性化推荐、流式推荐等
相似推荐和个性化推荐是强烈建议采用的
个性化推荐可以做成实时推荐的形式,即所谓的信息流推荐,实时个性化推荐也是未来的发展趋势
由于人类普遍具有从众效应,排行榜类推荐实际效果还是可以的。排行榜推荐一般也可以作为个性化推荐的默认推荐
how 怎么搭建推荐系统
建议尽量快速让新的推荐业务上线,再逐步优化,提升算法效果
前期可以利用单台服务器、单进程部署一个推荐系统,而不用考虑后面当用户多了之后的分布式计算,这样算法可以先快速上线
当用户足够多,单机算不过来了可以再考虑利用Spark等分布式计算平台重构现有业务逻辑
how much 投入多少资源
人力投入
数据收集到推荐算法上线提供推荐服务整个过程中的人力投入
日志打点、数据收集、数据存储、特征工程、模型训练、推断预测、前端接口开发、UI交互、产品设计、项目跟踪等
最核心的人力资源就是特征工程、模型训练、模型推断预测这几个算法核心工作。其他的可以复用公司前后端开发人员
前期推荐专业开发2-3人。招聘的原则:有经验的专业的推荐开发人员或了解过推荐系统全流程的开发人员
计算资源(服务器)
目前云计算已经非常成熟,这些资源都可以从云平台购买,而不是自己搭建
在产品早期,用户规模相对小,没必要构建大数据平台,单机单线程就可以跑出一个推荐系统
当用户足够多、数据量足够大时,再投入资源构建大数据平台
how feel 有多少价值预期
用户增长方面:提升用户留存、活跃、停留时长
千人千面、实时推荐用户感兴趣的内容,更容易击中用户的兴趣点,让用户更好地留存下来,跟产品互动,提升用户体验
经济价值方面:节省人力成本、促进"标的物"变现
有了个性化推荐,就不需要那么多人工运营的工作,甚至不需要那么多人工运营人员了
效率方面:提升内容分发效率、促进长尾内容分发
自动完成内容分发,实时、全天候无人管控的推荐,分发效率高
生态方面:促进“标的物”提供方的生态繁荣
推荐算法起到了择优筛选的作用,促进平台上的商家生态越来越健康
从零搭建推荐系统必须做好的三件事
算法
算法是推荐系统的核心,好的算法才能够更精准、更有效地将“标的物”分发给喜欢它的用户
一定要结合产品当前的阶段、产品具备的数据、现有资源情况等选择一个合适的推荐算法作为构建的第一个算法
评估指标
转化率、人均点击次数、人均播放时长、客单价
需要对用户操作行为进行日志打点,收集用户对推荐标的物的反馈,才能统计出这些指标
AB测试
通过构建推荐系统的AB测试平台,我们可以让推荐系统的迭代变得有据可依
开始不需要复杂的AB测试,能用就行,让系统快速跑起来,当业务需求更加复杂时,再迭代优化AB测试支撑更复杂的场景
最简单的AB测试可以根据用户id进行hash,给做AB测试的不同组用户展示不同的推荐结果
闭环迭代优化
构建了推荐算法,有了评估指标,有了对比测试的工具,就可以根据算法的效果来优化算法。将新老算法做对比测试,新的更好就用新的,这个过程可以无限闭环迭代优化下去
几个具体实用的建议
新闻资讯、短视频类产品建议采用基于内容标签的算法
基于内容标签的推荐算法可解释性好,用户立刻就明白给他这样推荐的原因,用户更容易接受和认可
尽量先使用简单的推荐算法快速上线
从零开始构建推荐系统时,最重要的目标是让系统快速上线,尽早跑起来,在使用过程中发现问题,快速迭代、逐步完善
构建推荐系统业务闭环最重要
首先需要量化业务价值,确定业务核心指标,并构建具备快速评估、快速迭代现有推荐系统和算法的能力。才能构建出一个推荐系统的业务闭环,不断迭代、不断优化
推荐系统专人负责制
专人负责整个推荐业务的落地,不光懂推荐算法,更应该有产品思维、有用户思维、有业务意识