数据分析其实在非联网的情况下也都存在,不仅是传统的还是大数据的,我们也可以看到其实从日常的生活也都有各种的场景可以分析,从卖菜的到教育培训都可以有自己的数据思维。
对于互联网来说加大的是连接和数据,因为有了海量的内容,产品数据,海量的链接,就带来了更多的浏览方式,入口和流量。
那么对于传统的方式你就很难提高实时性,比如你要看的已经非常多,系统还要更好的了解每个用户的各种行为,就比如你百度一下就有非常多的相关连接,也可能是一些广告。
所以推荐系统才是互联网的核心系统,首要的问题就是要把所有的用户行为记录下来,从而进行兴趣,相关性的推荐,当然也可能带来所谓杀熟。其实不要说大数据,杀熟杀生其实都是存在。比如用户要买个手机,开始一直看的是华为的某类价格的机型,然后找个熟悉的老板,老板说这类款式可能没有,于是推荐了个各有性价比的另一品牌新机,同时又关联的推荐了耳机或是别的配件等。这时候你可以说因为熟悉的把更适合的推荐给你,也可能是把需要的推荐给你,当然也可能是推荐了些你本来没有需要的东西,或是潜在的兴趣。就比如你去逛商场一样。本质是一样的,而推荐系统就是把这些行为数据化程序化,加快了速度和精确度。
那么推荐系统就和一般的数据分析有很大差别,有的人可能就会想的很简单,这里涉及的技术和业务场景都是非常多的,包括架构和模型,还有很多细节,是个很复杂的系统,所以叫做系统,而不只是什么模型算法。另外随着技术特别是深度学习强化学习的发展,还有对于更多内容数据的分析能力的提升,NLP技术,图像,图片识别的技术,使得有了更多的内容可以推荐,所以技术的复杂性更多。同时也使得搜索推荐逐渐成为了互联网的标配,基本上在金融、电商、视频、资讯、直播、招聘、旅游等各个领域都能看到推荐系统的存在。
而除了产品,技术,数据思维,更为核心的就是用户,一切的一切,都是围绕着用户,用户的需求。
那么也要系统的理解推荐系统,才能真正搭建起来企业级的推荐系统。
首先还是很多常说的,为何需要推荐系统
1、这个和所谓综合地产,商业体一样,互联网一切的基础也是流量,没流量你就没有访客,就没有后续的东西,那么在这么多的产品,这么多平台,每一个用户的每个浏览行为都是非常关键的,你的运营活动的一切也是为了得到这个客户浏览。
所以第一个就是通过推荐系统提高流量利用效率。
我们想象为何某些平台要不断做聚合,或是和更多不同的合作者形成异业联盟,为何阿里会那么做排他的合作,因为就像上面的场景一样,你在某个连接里形成了流量,可能就是被别人引流走了,任何的一个点都可能是触点和转换点,所以如果你的熟人推荐的是竞争者呢。
我们看流量成本是可以分为两种,一个是外部成本,一个是内部成本,内部是分析相关的,甚至导入到相关的合作内容部分,外部相当于吸引新客户到站内。
流量还有个问题是不确定性,在引入系统的用户后,他之后的行为是很难确定的,去哪里,离开还是留下等等都是看用户的喜好。
所以第一个核心价值就是精准
在互联网时代为何要有搜索和交互场景,因为看起来没百货商店那么糟糕,但很多需要数据化你的需求,比如手机的品牌,型号,还有各种功能特性,这属于简单的,还有更多难表达的,比如你看了部电影里面有个片段是什么样的,还有你要找一本和《非暴力沟通》主题类似的书,很多时候你的描述可能是一句话,而这时候没有人为的解读的,还有可能搜索的也是模棱两可,因为可能用户自己也不记得,或是需求也是不明确的,因为本身就是一种逛的心情。
而且用户需求和用户意图或是目标也是不一样的,就如开始一直想看手机的然后却买了别的,在你见到他之前,你不会觉得自己需要他,比如金融产品就非常多,开始你可能只是想要个信用卡,后来发现还有更多选择产品。
同时对于传统大数据分析的不同,往往过去时聚类分析,总是分析出某几类,而现在是差异化个性化的,因为有很多可能不同的东西,就比如看病你一定要根据个人的身体和病情来开方:
购物意图不同
消费水平不同
品牌调性偏好不同
兴趣爱好不同
2、除了流量另一个就是长尾理论
也就是二八原则,另一个原因是软件产品的边际成本,这导致互联网需要不断去挖掘和关联。
最终都要生存都要盈利,对于平台,在客户不确定的情况下,在某个物品内容上变现,将是非常关键的能力,这也就是精确营销的本质,推荐系统就是起到这个重要角色的标准之一。
3、另一个对于用户体验来说
用户购物或是看内容的体验是留下来的一大要素,就如我们看的抖音之类的视频软件,直播软件,推荐喜欢的,需要的,关联的,朋友也喜欢的,这些都是为了给更好的体验。
在业务场景上的问题呢还是很多的,这里只是简单的概括
接下来说说技术
这一个问题是很多传统企业开始看不懂的,为何互联网那么多企业都在家人,都在研发各种技术和应用,传统企业可能就想着找个团队搞下然后就过来用,这里面还是有很多技术积累的因素。
搜索推荐是目前比较成熟的大数据工业应用之一,而这样的应用可以推广到更多场景,除了电商,还包括培训,医疗等等,这也是一种关联的思维,你的应用也是产品,也是吸引客户和流量的一个池子和触点。而技术积累就可以举一反三,可以推广差异化竞争,开拓更多市场,也就是带来更多利润。
另外作为推进系统核心之一的推荐算法的发展也是非常快的,除了协同过滤,数据挖掘,机器学习等等都在应用,还有深度学习,知识图谱,NLP等,底层架构还有大数据架构,流式数据的实时处理技术等等,要完成一个真正的企业级系统,需要成熟的技术和团队,而在项目的过程中也积累了人才和技术,这些还可能像阿里百度等延伸到基础架构,硬件,基础科学等,而这些都会反哺回推荐系统,乃至其他更多大数据应用系统。
技术分为拿来型技术和积累型技术
拿来型技术比如成熟的数据库,你可能已经知道要用来做什么,同时可以通过短期培训直接上手应用,并不是说数据库技术难度低,而是说从无到有用是比较快,你可能就是看下有哪些改变的地方,看着文档API可以开始工作了。
而积累型技术是属于像如来神掌,就比如各种的开源技术,机器学习算法,你直接部署应用一个开源产品就可以得到满意的效果,这是很难的,而我们就是要在应用这些开源软件上积累这些经验,包括磨练人才和团队。
例如计算广告,反欺诈,金融风控等各种应用。结合技术和业务才是最为关键的,同时也可能带来算法的提升。
所以即使是最一般的小创业平台也都意识到这的重要性,面试聊过的一家起步的跨境电商,老板不是技术出身的,但是团队也很缺乏研发人员,他们也很重视技术团队,一定要自己的全职人员而不是外包或是兼职,对于NLP和内容推荐的理解也很有前瞻性。当然因为在二三线确实缺乏这些人,特别是有企业落地经验的,他们可能更需要的是有经验和研究生等一上来就可以带队做项目,毕竟是初创期,不会太多成本投入规模规范的培训之类。
推荐系统还是个产品
所以也要从产品思维上看推荐系统
包括推荐什么,给谁推荐,推荐场景,什么时候推荐,推荐解释,也就是所谓专业的讲2H5W
所以废话说完,现在开始讨论真正的推荐是什么
主要是一些思想和误区,有的认为视频就推荐喜欢的就好,而有的其实是潜在的,让人惊喜的,
也可能推荐的是不同的内容,比如是视频推荐书
还比如推荐的是内容,也就是不是商品,可能是一个线下活动,一个促销活动,一个社交活动都有可能。
当然还可能推荐了同样兴趣的社群
推荐运营活动也是如此,就比如我们公众号里经常往群里推荐一样
当然搜索词也是可以推荐的,这在你描述比较简单的时候比较实用,你看到别人搜索的可能更全面,这就可能应用到NLP和知识图谱等技术,更为智能的分析
推荐给谁,这个除了日常所谓的推荐给客户需要的,喜欢的,也可能是推荐同类的人,也可能是推荐平台,也可能给商户推荐客户,都是可能的。
说白了推荐就是匹配,你要匹配度高点的,那么开启你的脑洞,可以推荐给哪些呢,比如一本书,一场读书会,不一定是只有读者,而且活动的形式也会影响推荐用户,这就是推荐场景的事情了
推荐场景就比较抽象,和很多情况有关,比如当前用户在某个页面就是一个场景,在玩某个游戏也是
如果当前场景满足以下条件中的一条或几条,那么它就是一个适合做推荐的场景
当前场景存在浏览浪费或潜在用户流失的可能性较大
当前场景中的用户处于选择过程中,需要信息引导的
用户在当前场景中具有较强的不确定性
哪些不适合的:
支付过程页面,
搜索页和分类列表页的商品推荐,这里不需要加上推荐系统,因为更多是用户自己的选择,就如百度如果一直都是各种广告你搜搜的兴趣就低了
功能性页面
推荐解释
就是在回答你一个隐含在推荐产品中的问题,为什么推荐这个给我,比如推荐这个性价比和功能类似的手机可以满足自己的需求也省点钱。
比如音乐推荐产品里,会根据你喜欢的歌手推荐该歌手的其他歌,这个解释是可行的,因为我们平时也是这样听喜欢的歌手有没新作,比如根据你听过萧敬腾的王妃推荐萧敬腾的怎么说我不爱你。这是比猜你喜欢更为细粒度的解释。
对于产品的内容是非常多的,就当一个音乐的推荐就可以扯很多,
比如我们喜欢或是会容易选择的歌曲来源有哪些,
1、可能是自己喜欢的歌手,或是某个晚会听到某个歌手的歌
2、听热门或是流行的歌
3、喜欢的风格,流行,摇滚,古风
4、朋友推荐
5、路边或是网络歌手歌曲
6、游戏或是电影歌曲动漫歌曲感觉很喜欢
7、自己喜欢听一些原创或是新编的新曲
8,目的和应用场景,比如求爱,生日,约会选用的,或是在某些餐吧的
9,看评论推荐
这里就废话少说主要注重技术的
接下来就是推荐系统的架构
我们可以从实际的推荐场景来理解,对于一个网站上的所有内容,你要怎么开始逛开始选择,
最直观粗暴的想法,我去大利嘉买个手机,将所有店看过去,取出来统计数据,然后判断和买手机相关的,也就是有了所有的店和对应的商品,但是明显工作量太多了,所以到了网站,我们要做的数据就太多了,所以还需要看你喜欢的合适的,也就是相关的,这就是要先有个人对你聊聊,就是一个用户画像的刻画,然后就是以用户为轴心,我们可以对推荐问题进行描述,也就是用户与物品的相关性可以拆解为用户与兴趣的相关性和兴趣与物品的相关性的乘积。
这里的兴趣是广义的,可以是个人的选择倾向,比如还有价格,产地的倾向性。
用户兴趣点也是可以挖掘的东西,因为这个是一种用户特性性的描述,需要进行量化,就比如我们在网站上的一些选项
然后会得到对于各个选项的排序对吧,所以最后我们都会有个比较的过程,货比三家,这就是融合排序的问题
所以整体上,一个是用户兴趣+相关性召回+融合排序的过程,也就是推荐系统的核心逻辑。
接着在这个逻辑架构上构建模型架构和技术架构
第一个肯定是一个数据的抽取的过程,因为要全量的进行搜索得到一个备选列表,专业说就是召回,召回率就是用户得到的可能相关的物品和所有相关物品的比率,我们肯定是最好越高越好,也即是减少不相干的,而让推荐的更大覆盖所有相关的,这就是覆盖率高。然后可以放到一个推荐列表里,接着就要进行再次排序,也就是所谓重排序,也就是在相关性进行计算,得到最相关的几个。
召回层算法就需要考虑的是相关性,多样性,覆盖率,实时性等要求
所以每个看上去简单的动作都是很复杂的算法模型,比如排序的过程我们可能最会想到knn,当然还有ann搜索算法,类似knn算法。
knn是找出最近的k个,ann是近似最近邻,找出相似的一类,这些也就是搜索排序的基础。
召回的算法可以分为两大类,可以从两个角度看,就比如我们银行对客户进行投资行为的分析,或是信用分析,
一个从行为看,就是从用户的各种点击,搜索查看各种的产品还有消费等,得出他的风险等级,而再进一步,可基于行为得到用户的资金和偏好,然后可能还要结合工作学历等综合得出消费水平和用户偏好,这就是基于用户画像的,也更为复杂,因为要多一次特征的加工预测出分类。
基于行为的召回肯定更为精确,但是也难度大,因为行为很多不好确定,也比较多是无效的,可能导致数据缺失和稀疏,就如大海捞针一样,或是像侦探寻找罪犯的行动痕迹一样,而画像就是相对好,如调查表一样,比如让你填一堆信息,然后分析计算。
基于画像的可以分为用户画像和物品画像
用户画像的重点是人口统计学特征,个性,职业等等,当然还有兴趣
而物品画像就是物品的价格,类别等,也即是对物品数据化打标
两个画像首先都是考虑对于兴趣选择相关的特征,也就是看哪些有用,不是所有都会用到。
对于排序我们往往人为的或是传统可以简单用规则来做,比如一些写配置化的系统,就是看哪些特征更为相关性,比如我优先考虑价格,或是性价比,那么排序的时候就会进行规则的判断,然后一个个判断,但是数据和技术积累到一定程度,通常就会用上述类似的机器学习的排序技术了。
一个是可以以用户为中心,将用户的反馈真正融入数据系统,从而更为灵活,而不是死的规则配置
另一个面对大量数据时候,这样的系统才有可维护性,也就有适应性。
接着就有个评价的问题,也就是推荐的过程和结果有个评价指标,可以是短期和长期的。
当然这些指标和过程都需要个系统监控,包括数据质量,超时,连接,系统响应等
那么这样的系统架构也就可以大致规划了,在大致的逻辑架构下,可以粗粉分为在线的,离线的和近线。
在线是稳定运行,保持推荐算法策略;
离线是通过数据产生准确率高覆盖率高的,商品和用户相关数据。
对于推荐算法的发展也是层出不穷不断发展,从早期的协同过滤,到各种矩阵分解,机器学习综合融合算法,深度学习的方法,还有加入强化学习,博弈论,知识图谱等的技术。
接着就是我们可以有了大概的架构轮廓,也就是技术技能的需求
可以以某个招聘需求为例说明
下面是 Netflix 的推荐系统的经典架构图
当然纸上得来终觉浅,绝知此事要躬行,最快的方式是通过开源学习来了解整体架构
这里推荐个开源的基于深度学习的项目
https://github.com/wzhe06/SparrowRecSys
SparrowRecSys技术架构遵循经典的工业级深度学习推荐系统架构,包括了离线数据处理、模型训练、近线的流处理、线上模型服务、前端推荐结果显示等多个模块。以下是SparrowRecSys的架构图:
这个是可以学习企业级工业界的推荐系统的很好参考
项目是一个电影推荐系统,名字SparrowRecSys(麻雀推荐系统),取自“麻雀虽小,五脏俱全”之意。项目是一个基于maven的混合语言项目,同时包含了TensorFlow,Spark,Jetty Server等推荐系统的不同模块。
接下来再回到前面的问题要推荐什么,因为从具体到系统抽象还要有个模式化的规定,然后还要建立结构化的数据标注过程,也就是什么是值得推荐的。
这个可以从最直白的商业价值说起,或者最简单的财富说,大家都知道抛开那些新技术概念,互联网是未来,新时代是互联网连接,而现在代表就是BATD,百度 阿里 腾讯 抖音,那么就可以从内容或是商业角度看到,他们做的主要是信息知识,社交,电商,内容娱乐,那么新的一些概念比如内容电商,社交电商无非就是连接这几大类的。我们看百度就是计算广告和搜索推荐,腾讯也加了娱乐,视频,因为社交可以是基于内容也可以是基于商品的,电商也加了内容,抖音也加了教育和电商,是的这些就是之前为何说要进行排他合作的主要原因,流量就是在连接中不断转变,推荐来推荐去,这也就是在网络上真正有价值的东西。几年前腾讯的市值就已经吊打三大运营商了,就足以说明未来钱途是什么在哪里,在商言商,人在哪生意也在哪。
而这些就是我们要核心数据化的来源。废话说完,其实就是我们要推荐的物品是考虑哪些了,包括的就是知识,游戏,社交,音视频内容,商品等等。例如sparrowRecSys就是推荐影视内容的。这些就需要数据分析师和商业分析师等进行统一规划了,你的系统要推荐哪些,这些推荐需要什么量化的指标,这些可以用来做什么,然后怎么处理和特征工程等等,例如有的视频需要标识,这些也就是后面要说的最为关键的也是最麻烦的特征工程了。
基于整个开源的系统可以有几个技术组成
大部分人一看就觉得这么多,有各种技术平台要学习,数据,业务,机器学习的,大数据平台,软件开发等等,确实推荐系统是个应用和工程实践性很强的技术,不是看两遍书就会的,即使学校学的也是比较表面,比如就当推荐系统算法的技术,我们看就比比较科学的规划除了基础的大学基础,然后就是数据分析,再到机器学习,才到研究生后期的NLP,推荐,CV等等各个细分,比如我的一个师姐就是做的推荐方向,是计算机出身但是也感到在数学上的理解还是不够。
另一个方面,在学习研发技术等的过程中,我们最难的是自学,这也是常常阻碍很多人本来有想法的一个方面,有的比如数据还行,搭个平台环境高了好几天,然后放弃了,还有很多时候因为某个技术点问题也会导致整个项目的失败,这也是为何真正的项目式培训是非常重要的,只有在过程中才能积累宝贵的经验。另外学习没有大牛带或是没有系统的课程也是非常难,你会花更多的时间搜资料。
这里作者也给了建议,就是要有个整体视角,然后重点自己的兴趣领域,先把整体串起来,再结合前说的技术分类,比如数据库 redis,以应用开发为主,不用太纠结,当做拿来型技术,后期有兴趣可以继续深入,对于spark的也是,如果往技术架构可以更深入,但开始可以先以代码为主,更重性能优化部分和模型,所以spark ,flink可以多看代码,redis应用就好,而TensorFlow等就多重视不断看模型和算法。就是让自己有一个全面的认识,建立自己的知识广度,有问题有条件可以找维护或是平台架构组的解决。如果还想深入钻研某个方向,也可以由此开始,努力成为一个领域的专家。另外先可以多从文档和代码入手,开始不要太多看博客,博客是为了帮助理解和实验的,很多问题还是会官网,文档和开源社区最快得到解决,避免太多无谓的搜索,浪费时间,还可能得到错误或是过时的。
可以查看 https://www.jianshu.com/p/000a0e4ba69d
参考:
《从零开始构建企业级推荐系统》
https://github.com/wzhe06/SparrowRecSys