当前位置: 首页 > 科技观察

推荐系统的数据来源与数据预处理

时间:2023-03-16 14:10:46 科技观察

本文转载自微信公众号《数据与智能》,作者gongyouliu。转载本文请联系数据与情报公众号。大家好,我是强哥。一个爱撒野,爱读书,爱写作的人!一、推荐系统的数据来源1、按产品功能要素划分(1)用户行为数据(2)用户画像数据(3)物品画像数据(4)场景数据2.按数据载体划分(1)数据值(2)类别数据(3)文本数据(4)图片数据(5)音视频数据3、按数据组织形式划分(1)结构化数据(2)半结构化data(3)非结构化数据2.数据预处理1.提取(Extract)2.转换(Transform)3.加载(Load)总结推荐系统是机器学习的一个子领域,就像一般的机器学习算法一样,推荐算法依赖于数据建立推荐模型。模型可用后,需要进行模型训练,为用户提供个性化的推荐服务(模型推理)。由于其解决的问题(推荐系统解决的是信息过滤和资源匹配的问题)的特点以及自身业务关联性强,构建推荐系统的数据来源和数据处理方式各有特点。本章我们将对推荐系统中涉及的数据源和数据预处理相关的知识进行介绍,方便我们在后面的章节中构建推荐算法模型。1、推荐系统的数据来源推荐系统根据用户对产品(APP、网站等)的操作行为,挖掘用户的兴趣点,预测用户的兴趣偏好,最终为用户做出个性化推荐.在整个推荐过程中,涉及到四类元素:用户、物品、用户的操作行为、用户当前的场景。这些元素中的每一个都有相应的数据。按照这种元素划分,推荐算法可以使用四类数据。此外,根据数据本身的特点,数据还可以分为五类:数值数据、类别数据、文本数据、图片数据和音视频数据。最后,根据推荐系统所依赖的数据的组织形式(数据范式),数据可以分为三类:结构化数据、半结构化数据和非结构化数据。下面我们按照这三种分类方法,详细描述推荐系统所依赖的数据以及这些数据的特点。1.按产品功能元素划分根据数据源的产品功能元素,将推荐系统所依赖的数据分为四类:用户行为数据、用户画像数据、物品画像数据、场景数据,见下图1,下面我们分别介绍各类数据及其特点。图1:推荐系统依赖的四类数据源(1)用户行为数据行为数据是指用户对产品的各种操作,如浏览、点击、播放、购买、搜索、收藏、点赞、评论、转发等、添加购物车、连滑、试探、快进快退等。用户对产品的操作行为为我们提供了了解用户的线索,而用户的操作行为也是用户真实意图的反馈。通过挖掘用户行为,我们可以深入洞察用户的兴趣和偏好。根据用户的行为是否直接表示用户对物品的兴趣偏好,用户行为一般分为显性行为和隐性行为。显性行为是直接表明用户兴趣的行为,如点赞、评分等。隐性行为虽然不能直接表达用户的兴趣,但可以间接反馈用户的兴趣变化。只要是用户不直接评价或点赞的操作行为,都被认为是隐性反馈,包括浏览、点击、播放、收藏等。用户行为数据是最容易收集、数据量最大的一类数据(因为我们可以为任何用户操作行为收集埋点)。这类数据需要经过收集和预处理,才能最终被推荐算法使用。这种数据获取也比较容易。只要按照规范埋点,就可以保证数据范式是正确的。当然,埋点也是需要经验的。目前,提供埋地实施方案的第三方服务商有很多。没有这方面经验的公司可以购买。有些产品,由于自身的特点,往往很难收集用户行为以外的数据(或者即使可以收集,但是成本太高,比如UGC产生的数据可能很乱),所以充分利用用户行为数据对于构建高质量的推荐系统至关重要。目前,《个人信息保护法》已正式实施(2021年9月1日)。此外,国家也将开始控制算法业务。以后用户可以关闭日志收集等相关服务。这对于未来推荐算法的实现会更加有效。大挑战。(二)用户画像数据用户画像数据是对用户相关信息的客观描述。包含了用户本身的属性,比如年龄、身高、体重、性别、学历、家庭构成、职业等,这些数据一般是稳定的(比如性别)或者缓慢变化的(比如年龄)。而一些用户画像数据是通过用户行为来刻画的,通过用户行为给用户打上相关标签。这些标签也成为用户画像的一部分,比如动漫迷、果粉、健身达人等。人类是社会性物种,不同的用户属性决定了他们的阶层或生活圈。不同阶层或生活圈子有不同的行为特征、生活方式和偏好。同一个圈子的用户有一定的相似性。这种相似性为我们提供了个性化推荐的独特方法和思路(比如基于社会关系的推荐可以很好地利用与用户画像相关的信息)。另外,通过用户对物品的操作行为,我们可以将物品的特征按照一定的权重分配给用户。片”人)。从这些兴趣偏好出发,我们可以为用户做出个性化的推荐。有些产品由于业务特点,可以很好的收集用户画像信息。例如支付宝、微信等,要求用户使用身份证或绑定银行卡,这样才能获取到相对完整和私密的用户个人信息。而部分产品(如今日头条、?等),用户无需注册即可使用,很难获取用户自身的相关信息。不管怎样,用户都会在产品上留下行为痕迹。基于这些行为痕迹,我们可以挖掘出用户行为刻画的画像特征。(3)物品画像数据推荐系统中最重要的“参与者”是被推荐的物品,物品本身包含了很多特征和属性。对于商品来说,品类、价格、产地、颜色、质地、外观、品牌、保质期等都是商品的元数据。如果有物品的描述信息(比如某??部电影的剧情介绍),我们也可以利用NLP技术,从描述信息中提取关键词作为人像特征。此外,在图片、音频、视频中,我们还可以通过深度学习等技术,提取关键词作为图像特征。物品画像也可以用用户行为来表征。例如,如果某个商品是热门商品,我们可以将该商品标记为“热门”。如果某款商品很受某类人群的欢迎,还可以在商品上贴上相关的标签,比如“适合白领”。(4)场景数据场景数据是用户在操作物品时所处环境特征和状态的总称,例如用户的地理位置、当时的时间、是否是工作日、是否是重大事件等。节日、是否有重大事件(比如双十一)、当时的天气、用户当时的心情、用户产品的路径等,这些场景化的信息对用户的决策非常重要——制作,甚至起到决定性的作用。例如,对于美团饿了么这种基于位置的服务产品,向用户推荐的餐厅必须在用户所在地附近或用户指定的送货地点附近。适当利用场景化数据,将这些数据融入推荐算法,可以更精准地为用户进行个性化推荐,带来更好的用户体验和商业价值。按照产品功能元素来划分,是一种更面向业务的划分方式,可以让我们更清楚地看到问题。我们在第三章讲解召回算法时,是根据这四类产品功能要素(即用户行为召回、用户画像召回、物品画像召回、场景信息召回)开发的。2、按数据载体划分随着互联网和技术的发展,网络上传输、交换和显示的数据类型越来越多样化,从最初的数字、类别、文本到图片,再到现在主流的音频而视频,基于这些不同的数据载体,推荐系统建模所依赖的数据可以分为五类,如下图2所示。图2:推荐系统所依赖的5种数据载体(1)数值数据推荐系统算法中使用的可以用数值表示的数据都属于这一类,如用户年龄、收入、商品价格、配送距离等数值数据也是最容易被计算机处理的一类数据,基本上可以直接用于算法。为了让其他类型的数据能够被推荐算法很好地利用,一般会采用各种方法将其转化为数值型数据(具体的方法和策略我们会在特征工程章节进行讲解)。(2)品类数据品类数据是具有有限个数值的数据,类似于计算机编程语言中的枚举值,例如用户性别、教育背景、产品所在地、产品品牌、产品尺寸等。类别数据也比较容易处理,可以通过one-hotencoding或numbering转换成数值数据。当然,如果类别数量巨大,使用one-hotencoding会导致高维、数据过于稀疏等问题。这时候可以使用散列编码或者嵌入的方法。(3)文本数据文本数据是互联网上最大、最常见的数据类型,条目的描述信息、新闻正文、歌词、剧情简介等都是文本数据。处理文本数据需要借助自然语言处理相关技术。比如TF-IDF、LDA等都是比较传统的处理文本数据的方法。目前流行的Embedding方式可以达到更好的效果。(4)图片数据随着智能手机拍照技术的成熟、图像处理软件的发展以及各种APP的普及,拍照和分享照片变得更加容易。另外,图片比文字更容易传达信息,所以现在的网络充斥着各种图片。图片数据是互联网上的主流数据类型。产品展示图、电影缩略图、用户圈子照片均以图片为主。形式存在。对于图像数据的处理,目前的深度学习技术已经比较成熟,包括图像分类、物体识别、OCR、图像特征提取等,精度对于产品来说已经足够了,在某些方面(比如图像分类)甚至有过之而无不及人类专家的水平。(5)音视频数据音视频数据对我们来说并不陌生,甚至在移动互联网爆发之前就已经存在很多年了(录音机和照相机可以录制声音和视频)。但只有移动网络和软硬件都成熟了,基于这两类数据的产品才会发展壮大。音频类产品有喜马拉雅、荔枝FM等。除了爱奇艺、腾讯视频、优酷等长视频APP外,抖音、?等视频APP也很受欢迎。游戏直播、电商导购直播等应用也是视频数据的输出媒体。音乐的数字化和各种音频学习软件(如饭登阅读、获取APP等)也促进了音频数据的增长。音视频数据的值密度小,占用空间大,处理相对复杂。在深度学习时代,对这些复杂数据的处理变得可行。音频数据可以通过语音识别转化为文本,最终归结为对文本数据的处理,而视频数据可以通过将帧转换为图像数据来进行处理。目前流行的多模态技术也可以直接对原始音视频数据进行处理。图片、音频和视频数据属于富媒体数据。随着传感器种类的丰富(手机、无人机、激光雷达等),精度的增强(比如拍照能力越来越强),以及相关互联网应用的繁荣(比如抖音,快手等都是基于富媒体数据的应用),越来越多的富媒体数据出现在互联网上,占据了互联网数据的绝大部分,因此是非常重要的一类数据,同时也是未来的推荐系统需要关注数据。按照数据载体划分数据的好处是便于对数据进行处理,提取构建推荐算法所需的特征。我们在第15章讲解特征工程的时候,就是按照这种划分数据来进行讲解的。3.按数据组织形式划分根据不同的数据组织形式,处理不同类型数据的难度是不一样的。人类更善于理解和处理二维表格数据(结构化数据),这也是关系数据库(主要处理表格数据)在计算机发展史上占有重要地位的原因。随着互联网的发展,数据形式越来越丰富。并非所有数据都是结构化的,有些数据是半结构化甚至非结构化的(详见下图3)。下面解释这三种类型的数据。图3:三种数据组织形式(1)结构化数据所谓结构化数据就是关系数据库中可以存储在表中的数据。每列代表一个属性/特征,每行是一个数据样本。一般用户画像数据和物品画像数据都可以存储在一个表中,用户和物品的每个属性都是表的一个字段,所以是结构化数据。下表是商品的结构化表示。商品品牌价格类别彩色iPhone13Pro苹果9888元手机远峰蓝石墨银金尼康D7500尼康7299元数字黑浪琴表(longines)瑞士手表康卡斯潜水系列机械钢带男表L37824066浪琴13000元手表L37824766,L37824566,ETC。表1:产品画像数据的结构化表示结构化数据是一种带有Schema的数据,即每一列数据的类型,值的长度或范围都是确定的,一般可以使用关系型数据,比如存储这类数据的MySQL、ProgreSQL、Hive等可以用非常成熟的SQL语言进行查询和处理(2)半结构化数据半结构化数据虽然没有关系型数据库那么严格的schema,但也有是数据组织的某些规则或规范,使用特殊的标记或规则来分隔语义元素或分隔记录和字段。因此,它也被称为自描述数据结构。常见的XML、Json、HTML等数据都属于这一类。对于用户对产品的操作行为,我们一般会按照一定的规则记录相关的字段(比如我们可以使用Json格式记录日志,或者按照指定的分隔符划分不同的字段,然后拼接在一起记录日志)。类数据也是半结构化数据,一些半结构化数据可以通过一定的预处理转化为结构化数据。半结构化数据对于推荐系统至关重要。推荐系统最终的推荐结果可以以Json格式存储,也可以以Json格式在互联网上传输,最终展示给终端用户。很多推荐模型也是以固定的数据格式存储的,比如ONNX(OpenNeuralNetworkEXchange,开放神经网络交换)格式,这是一种表示深度学习模型的标准,允许模型在不同框架之间迁移。半结构化数据通常具有相对松散的范式。这类数据也有合适的数据存储工具,一般存储在key-valueNoSQL数据库中,如HBase、Redis、MongoDB、ElasticSearch等。(3)非结构化数据非结构化数据是指数据结构不规则或不完整,没有预定义的数据模型,不方便使用数据库的二维逻辑表来存储数据,没有这种半-结构化数据。某些规则或规范。非结构化数据包括文本、图片、各种数据报表、图像、音视频数据等,非结构化数据也是最难处理的一类数据,因为没有固定的数据范式。文本、短视频、音频、商品等都包含大量的非结构化数据。即使item本身是非结构化的(比如抖音上的短视频),我们也可以从几个已知的维度来定义item,形成对item的结构化描述,如上表1所示,针对item的多个结构数据方面。随着移动互联网和物联网的发展,各类传感器越来越丰富,功能多样,人际交往更加密切。人们更愿意表达自己。人类社会和生产活动产生了大量的非结构化数据。非结构化数据量呈指数级增长。如何处理好非结构化数据,挖掘出非结构化数据中蕴含的丰富信息,并将其应用到算法模型中是一个很大的挑战,但如果用得好,可以大大提升推荐算法的用户体验和商业化指标等作为准确率和转化率。随着自然语言处理、图像处理、深度学习等人工智能技术的发展和成熟,我们现在有更多的工具和方法来处理非结构化数据。推荐系统也享受到了这波技术红利。在这些新技术的加持下,推荐效果越来越好。由于非结构化数据没有固定的范式,一般可以使用对象存储工具进行存储,例如ApacheOzone(https://ozone.apache.org/)。目前,基本上所有的云服务商都提供对象存储工具,方便客户存储非结构化的对象文件。以上从三个不同的分类角度介绍了推荐系统的数据来源。我们知道哪些数据对推荐系统有用。我们获取到这些数据后,需要对其进行适当的预处理和存储。在后续推荐系统建模使用方面。在下一节中,我们将简要介绍与数据预处理相关的知识点。2、数据预处理数据预处理一般称为ETL(Extract-Transform-Load),用来描述数据从源头到最终存储之间的一系列处理过程。它一般经历三个阶段:提取、转换和加载。数据预处理的目的是整合企业中分散、杂乱、不统一的数据,将非结构化或半结构化数据处理成便于后续业务处理和使用的(结构化)数据,为企业提供数据驱动,数据化决策,智能化服务提供数据支持。数据基础设施完备的企业一般会构建分层数据仓库系统。数据预处理的最终目的是将杂乱无章的数据进行结构化、分层化、有序化,最终存入数据仓库。对于推荐系统,通过ETL将数据处理成具有特殊结构(可能是结构化)的数据,便于进行特征工程,最终用于推荐算法学习和模型训练。下面简单介绍一下ETL的三个阶段的作用。1、Extract阶段的主要目的是将企业中分散的数据聚合起来,方便后续统一处理。对于推荐系统来说,它依赖于多种数据源,因此非常有必要将所有这些算法所依赖的数据进行聚合。推荐系统的数据来源相当多样,不同的数据提取方法也不同,下面简单介绍一下。用户行为数据一般埋藏在客户端,通过HTTP协议上传至日志采集Web服务(如Nginx服务器)。中间可以使用域名分发或者LB负载均衡服务来增加日志采集的容错性和可扩展性。日志一般通过离线和实时两种数据流进行处理。离线数据通过预处理(如安全验证等)进入数据仓库,实时流经Kafka等消息队列,再由实时处理程序(如SparkStreaming、Flink等)进行处理。或进入HBase、ElasticSearch等实时存储系统,供后续业务使用。用户行为日志的采集流程如下图4所示。图4:用户行为日志采集流程(右上角进入DW的数据属于离线数据,右下角经过Kafka的数据属于实时流)。用户画像数据和物品画像数据一般存储在关系型数据库中,实时性要求不高。推荐业务可以通过数据表快照抽取(每天从业务系统同步数据库到Hive),需要实时性的信息流推荐可以通过binlog实时同步或者消息队列抽取.场景相关数据一般是描述用户当前状态的数据。一般通过各种传感器或埋点采集。这种类型的数据也是在客户端生成的。通过上图4右下角的实时日志采集系统进入消息队列,用于后端实时统计(如时序数据库、ES进行存储和查询展示)或算法(通过SparkStreaming或Flink等)进行处理。2.转换(Transform)这个阶段是ETL的核心环节,也是最复杂的环节。其主要目标是对提取的数据进行清洗,进行数据清洗、格式转换、缺失值填充、去重等操作,最终得到格式统一、结构化程度高、质量高、兼容性好的数据。数据被提供给推荐算法的特征工程阶段进行处理。清洗过程包括去除脏数据、验证数据合法性、去除无效字段、检查字段格式等过程。格式转换是将来自不同来源的同一类型数据,按照数据推荐算法的定义和要求,转换成相同格式,从而实现统一和规范的过程。由于日志埋点或者数据采集过程中的各种问题,缺失字段值在真实的业务场景中是一定存在的。缺失值填充可以按照均值或众数进行填充,也可以使用算法学习填充(如样条差分等)。由于网络原因,日志一般会有重传策略,导致数据重复。去重就是过滤掉重复的数据,从而提高数据质量,以免影响最终推荐算法的效果(如果一个人的数据多,那么在推荐算法的训练过程中,就意味着他有更多的数据)投票权,模型学习会向他的兴趣倾斜,导致泛化能力下降)。3.加载(Load)加载的主要目标是将数据存储在最终的存储系统中,如数据仓库、关系数据库、键值NoSQL等。对于离线推荐系统,训练数据存储在数据仓库中,人像数据存储在关系型数据库或NoSQL中。用户行为数据一般可以通过数据预处理转化为结构化数据或半结构化数据。行为数据是最容易获取的一类数据,也是数据量最大的一类数据。这类数据一般存储在分布式文件系统中,其中原始数据一般放在HDFS中,处理后的行为数据会存储在企业的数据仓库中。离线数据基于Hive等数据仓库构建,实时数据基于HBase等数据仓库构建,形成统一数据。该服务由上层业务使用。有些数据,比如通过特征工程转化为特定特征的数据,可能需要实时实时获取、更新和服务,一般可以存储在HBase或Redis等NoSQL中。用户画像和物品画像数据一般都是关系型数据,比较适合存储在关系型数据库(比如MySQL)或者NoSQL中。对于图片、音频、视频等复杂的非结构化数据,一般适合存储在对象存储中。目前比较流行的数据湖技术(如DeltaLake、Iceberg、Hudi等)希望将以数据仓库为主的传统结构化数据存储和以图像、音频、视频为主导的非结构化数据进行融合。在数据湖体系下,推荐系统所依赖的所有数据源都可以存储在数据湖中。总结推荐系统是机器学习的一个分支,因此推荐算法依靠数据建立模型,最终为用户提供个性化的物品推荐。本章简单梳理了推荐系统的数据来源和数据预处理相关的知识点。推荐系统数据源可以根据三种形式进行分类。按照推荐商品的功能元素划分,可以分为用户行为数据、用户画像数据、物品画像数据、场景数据四大类。按数据载体可分为数值数据、类别数据、文本数据、图片数据、音视频数据五类。按数据组织形式可分为结构化数据、半结构化数据和非结构化数据。当我们获得了各种不同的可用于推荐系统模型构建的数据后,我们还需要在数据中心对这些数据进行采集、传输、预处理和存储。当所有的数据都准备好之后,我们后面就可以根据这些数据来构建算法模型了。我们将在后面的章节中详细介绍与推荐系统相关的算法模型。