深度学习推荐系统实战_07_04_特征工程推荐系统有哪些可供利用的特征
你好,我是王哲基础架构篇,我们已经讲完了,你掌握的怎么样了呢?希望你已经对深度学习推荐系统有了一个初步的认识。
从这节课开始,我们将会开启一个新的模块特征工程篇。
如果说整个推荐系统是一个饭馆,那特征工程就是负责配料和食材的厨师推荐模型。
这个大厨做的菜好不好吃?大厨的厨艺肯定很重要,但配料和食材作为美食的基础也同样重要。
而且啊只有了解了配料和食材的特点,说们才能把它的作用发挥到极致。
不是吗?那今天呀我们就先来讲讲特征工程的基础说说到底什么是特征工程构建特征工程的基本原则是什么?以及推荐系统中常用的特征有哪些?相信通过这节课的学习,能让你更好的利用起推荐系统相关的数据提升推荐效果。
好,我们先来看第一个问题,什么是特征工程?那第一节课中中我们学习过推荐系统,就是利用用户信息、物品信息、场景信息。
这三大部分有价值数据,通过构建推荐模型得出推荐列表的工程系统在这个系统之中。
特征工程就是利用工程手段从用户信息、物品信息、场景信息中提取特征的过程。
这个过程说起来容易,但实际做起来却困难重重。
比如说一个网站或者APP这天收集起来的用户日志采集来的站外信息,自己公司员工编辑添加的结构化数据。
那么多那么庞杂,怎么才能挑出那些对推荐有用的特征呢?再比如,从推荐模型的角度来说,一个机器学习模型的输入往往是一个数值性的向量。
那用户性别、用户行为历史一些根本不是数字的信息,怎么处理成一个模型可用的数值向量呢?我们这节课啊先聚焦第一个问题,怎么挑出有用的特征,下节课我们再解决。
第二个问题,都说理论指导实践在展开讲有哪些有用的特征之前,我们先来看一看构建特征工程有哪些原则或者规律可以遵循。
首先,我给推荐系统中的特征下了一个比较抽象的定义特征,其实是对某个行为过程相关信息的抽象表达。
为什么这么说呢?因为一个行为过程必须转换成某种数学形式,才能被机器学习模型所学习。
为了完成这种转换,我们就必须将这些行为过程中的信息以特征的形式抽取出来。
我们来举个最简单的例子,用户的性别有三个男女和未知,但推荐模型没办法直接认识这三个类别。
因为它只是一个只认识数字的严重偏科的理工男。
所以啊我们就需要把它转化成一二三,具体的数字代号它才能处理。
但是,这种从具体行为信息转化成抽象特征的过程,总是会造成信息的损失。
为什么这么说呢?一是因为具体的推荐行为和场景中,包含了大量原始的场景、图片和状态信息,保存所有信息的存储空间过大,我们根本无法实现。
二呢是因为具体的推荐场景中包含了大量冗余的无用的信息,把他们都考虑进来,甚至会损害模型的泛化能力。
就像啊电影推荐中一般包含了大量电影内容的信息。
那我们有没有必要把影片的所有情节都当做特征放进推荐模型中去学习呢?其实是没有必要的,或者说收效甚微的这其实就是我们构建推荐系统特征工程的原则,应该尽可能的让特征工程抽取出一组特征,能够保留推荐环境以及用户行为过程中的所有有用的信息,并且尽量的摒弃冗余的信息。
接下来我们就结合一个实际的例息说一说,在电影推荐这个场景下,我们有怎么贯彻特征工程原则来挑选特征。
现在你可以把自己当成一个用户,假设你正在选择看哪部电影,想想想这个选择过程中你都会受到什么因素的影响呢?如果是我的话啊,可能影响我的因素有这么六个,把它们按重要性由高到低排序,就是电影类型。
我是否感兴趣电影是不是大片儿?导演和演员?我是否喜欢电影海报,是不是吸引人我是不是已经观看过这个影片,以及我当时的心情。
那站在一个工程师的角度,我们能不能用某些特征把这些要素表达出来呢?我尝试用表格的形式,按照要素能利用的数据以及特征,把它们特征化的方式列举了出来。
我从表格中挑选了一个要素,来讲一讲是如何把这个要素特征化的。
比如怎么才能知道一个用户对这个电影的类型感兴趣呢?一般来说,我们会利用这个用户的历史观看记录来分析它已有的兴趣偏好。
这个兴趣偏好啊可能是每个电影类型的概率分布。
比如说动作百分之四十五,喜剧百分之三十,爱情百分之二十五。
也可能是一个通过embedding技术学出来的用户兴趣向量。
这个时候我们就可以根据这个电影本身的特征,计算出用户对电影的感兴趣程度了。
对于其他的特征,我们也都可以通过类似的分析,利用日志、原数据等信息计算得出来。
不过啊并不是所有的要素都能特征化,比如自己当时的心情,这个要素利用我们无奈的舍弃了。
因为我们很难找到可用的信息来表达它,所以更无法抽取出特征。
再比如电影海报是否吸引人这个要素,我们倒是可以利用一些图像处理的方法抽取出海报中的某些要点。
比如有哪些演员,海报是什么风格,但想面面俱到的抽取出海报中,所有的图像要素也几乎是不可能的。
因此,在已有的、可获得的数据基础上,尽量保留有用信息,是现实中构建特征工程的原则。
前面我以电影推荐为例,讲解了特征工程的基本原则。
互联网的推荐系统当然不是只有电影推荐,像是短视频新闻、音乐等等,这些啊,都是经典的推荐场景。
那他们常用的特征之间有没有什么共性呢?确实是有的。
推荐系统中常用的特征有五大类,分别是用户行为数据、用户关系数据属性、标签类数据、内容类数据以及场景数据。
下面我一一来讲一讲。
首先是用户行为数据,它是推荐系统最常用也是最关键的数据。
用户的潜在兴趣。
用户对物品的真实评价都包含在用户的行为历史中。
用户行为啊在推荐系统中一般会分为显性反馈行为和隐性反馈行为两种。
在不同的业务场景中,他们会以不同的形式体现。
那具体是怎么体现的呢?像是电商网站用户的显性反馈行为,就是对商品的评价。
隐性反馈行为就是点击加入购物车购买等一系列操作。
更多的例子。
你可以看我在文稿中给出的表格,在用户行为数据的使用,经常需要我们对业务有深入的理解。
因为不同的行为在抽取特征师的权重也不同,而且一些跟业务特点强相关的用户行为。
因为推荐工程师通过自己的观察才能发现,那显性和隐性反馈行为我们更应该关注哪个呢?在现有的推荐系统中啊,隐性反馈行为的重要性变得越来越高。
这主要是因为显性反馈行为的收集难度大,数据量又小。
在深度学习模型对数据量的要求越来越大的背景下,仅用显性反馈的数据是很难支持推荐模型训练过程的最终收敛的。
所以能够反映用户特点的隐性反馈是目前特征挖掘的重点。
然后我们再来说说用户关系数据。
互联网本质上就是人与人、人与信息之间的连接。
如果说用户行为数据是人与物之间的连接日志,那用户关系数据就是人与人之间连接的记录。
就像我们常说的那句话,物以类聚,人以群分。
用户关系数据毫无疑问是非常值得推荐系统利用的有价值信息。
用户关系数据也分为显性和引擎两种,或者称为强关系和弱关系。
在社交网络中,用户与用户之间可以通过关注好友关系等建立强关系,也可以通过互相点赞同,处一个社区,甚至同看一部电影,建立弱关系。
那在推荐系统中,利用用户关系数据的方式也有很多。
比如,我们可以将用户关系作为召回层的一种召回方式,也可以通过用户关系建立关系图、使用graph embedding等方法生成用户和物品的embedding.还可以直接利用关系数据,通过好友的特征为用户添加新的属性等。
甚至啊可以利用用户关系直接建立社交化推荐系统等等推荐系统中。
另外一大类特征来源是属性标签类数据。
这里我把属性类和标签类数据归为一组进行讨论,是因为他们本质上都是直接描述用户或物品的特征。
属性和标签的主体可以是用户,也可以是物品,他们来源也非常多样。
比如成熟的公司往往会建立一套用户和物品的标签页,系由专门的团队负责维护。
典型的例子就是电商公司的商品分类体系,有的公司也会用一些社交化的方法让用户自己来添加。
比如说豆瓣具有专门的添加收藏页面,在添加收藏的过程中,用户需要为收藏对象打上对应的标签,这就是一种常见的社交化标签。
添加方法、推荐系统、使用属性。
标签类数据啊一般是通过multi hot编码的方式,把它们转换成特征向量一些重要的属性。
标签类数据也可以先转换成embedding.比如说业界最新的做法,就是将属性标签类数据与它的描述主体一起构成知识图谱,再用graph embedding或者图神经网络的方法来生成各节点的embedding.最后输入推荐模型。
这里提到的不同的特征方法,我们会在后面的课程中详细来讲。
接着我们再来说说内容类数据,内容类数据可以看作属性标签类特征的延伸。
它同样是描述物品或用户的数据,但相比标签类特征,内容类数据往往是大段的描述性文字、图片甚至视频。
一般来说,内容类数据无法直接转换成推荐系统,可以消化的特征,需要通过自然源处理、计算机视觉等技术手段提取关键的内容特征,再输入推荐系统。
例如,在图片类、视频类或者是带有图片的信息流推荐场景中,我们往往会利用计算机视觉模型进行目标检测,抽取图片特征,再把这些特征转换成标签类数据供推荐系统使用。
而文字信息则更多通过自然语言处理的方法提取关键词、主题分类等等。
一旦这些特征被提取出来,就跟处理属性标签类特征一样,通过molly hoalt embedding的方式输,如推荐系统进行训练。
好了,接下来我们来聊一聊最后的一大类数据场景信息,我们也把它叫做上下文信息。
它是描述推荐行为产生的场景的信息,最常用的是时间和通过GPSIP地址获得的地点信息。
因为推荐场景的不同,上下文信息的范围极广。
除了我们前面提到的时间和地点,还包括当前所处推荐页面、季节月份是否是节假日、天气、空气质量,甚至是社会大事件等等。
场景特征描述的是用户所处的客观的推荐环境。
从广义上来讲啊,任何影响用户决定的因素都可以当做场景特征的一部分。
但在实际的推荐系统应用中,由于一些特殊场景特征的获取极其困难,更多还是利用时间、地点、推荐信息,这些容易获取的场景信息。
好,今天的内容讲的差不多了,我们来做个总结吧。
这节课我们一起开始了。
推荐系统中一个非常重要的模块特征。
工程模块的学习推荐系统中可用的特征非常多,但他们基本上可被划分到用户行为、用户关系属性、标签属容数据、场景信息这五个类别。
而且挑选特征的方法也遵循着保留有用系息、摒弃冗余信息的原则。
就像我们开头说的一样,特征工程是准备食材的过程,准备食材的好坏直接影响到厨师,能不能做出好菜,同时要准备的食材也和我们要做什么菜紧密相连。
所以针对不同的推荐系统,我们也要针对他们的业务特点,因地制宜的,挑选到合适的特征,抓住业务场景中的关键信息,这才是特征工程中不变的准则。
从工程的角度来说,除了特殊的挑选特征,工程,还包括大量的数据预处理特征、转换特征筛选等工作。
下一课我们一起来学习特征,处理的主要方法,提升一下我们处理食材的技巧。
最后我们再来做一道题,把今天的知识巩固一下。
如果你是一名音乐APP的用户,你觉得在选歌的时候,有哪些信息是影响你做决定的关键信息?那如果在站在音乐APP工程师的角度,你觉得有哪些关键信息是可以被用来提取特征的?哪些是很难被工程化的?欢迎在留言区畅所欲言,留下你的思考和疑惑。
如果今天的内容你都学会了也不妨把这节课转发出去。
今天的内容就到这里,我们下节课见。