图片音频视频位置信息等属于简述大数据的四个维度什么维度

  导语:4月底阿里云栖大会?南京峰会召开,传统制造业与云共同高调亮相2016年5月7日,徐工集团和阿里云共同搭建了徐工工业云徐工信息技术总监黄凯也出席会议

  雷锋网按:4月底,阿里云栖大会?南京峰会召开此次大会上,传统制造业与云共同高调亮相2016年5月7日,徐工集团和阿里云共同搭建叻徐工工业云徐工信息技术总监黄凯也出席此次会议并发言。

  同日江苏省经信委还与阿里云联合启动了首批江苏“1+30+300”工程,要推進江苏省内30家两化融合服务机构、300家制造企业高效利用云计算和人工智能实现智能转型。而当月早些时候浙江省也启动“十万企业上雲”行动。制造和云的联姻势在必发。

  制造业和云计算“联姻”的概念由来已久目前,业界均将云计算视为中国制作转型的一剂良药雷锋网(公众号:雷锋网)据公开资料了解到,云计算对传统制造业的改造是多维度、系统性的阿里云发布的“ET工业大脑”至少有三個维度――提升产品制造的质量、帮助制造业企业感知市场需求以及模拟现实。黄凯此次分享了工业云搭建的一些实践总结

  以下是黃凯演讲全文,雷锋网对其进行了不改变原意的编辑:

  产品大数据――运维分析、提前预警

  这些数字反映了我们集团的数据应用凊况

  目前,我们集团大概有30万+的入网设备预计到2018年底,集团整体数据量大概在900TB涵盖挖掘、混凝土等14大类设备的6000多种工况数据,這是一个相当庞大的工程机械行业数据

那我们的数据从何处而来?工业简述大数据的四个维度资源在哪里

  工业大数据之源,是我們自主研发的工程机械黑盒子这个黑盒子可通过发动机参数对接和装配在设备上传感器了解整体设备的运用情况,包括适应极寒、极热凊况军工领域超长待机情况等。

   黑盒子具体有什么用呢

  第一个解决设备定位问题,我们要知道产品在哪里之后,我们就可鉯拿到设备整体的运行数据比如设备的发动机水温、液压,实施作业中的设备参数数据通过设备运行的数据和设备操作数据,可以为鼡户提供整体的风险预警

  我们有自己的统一大数据平台,通过数据分析可以知道工程机械行业的热区分布、全国整体开工率统计状況、一定地区内真实的生产建设情况等目前,我们的开工率分析结果要上报给国统局通过建设徐工指数,反应经济的晴雨表

前端数據到平台之后,我们解决什么问题呢

  首先是连接管理,通过国内国外以及第三方转发数据进行统计分析平台可以提供从研发、设計、生产到销售整体的运维分析;其次是研发层面上,之前的研发工程师需要去到辽宁、内蒙、云贵等地搜集信息现在在家里就能统一收集所有的信息,数据分析调整下一年的生产计划;从销售角度通过前20%客户和热点区域的整体分析,发现市场行情并远程诊断和分析設备故障,提前告诉客户产品是不是有质量问题是否需要提前维修和预防。

  目前通过和阿里云的合作,我们自己的产品和平台可鉯解决设备整体数据分析与挖掘包括开工率、热区、设备工作时长等问题。

制造大数据――解决企业增质需求

  刚才讲了产品大数据汾析第二需要分析的是制造业大数据。

  我们从1989年开始做工业自动化首先解决生产自动化问题,工厂的数控机床、机器人、焊接设備和物流设备等没有想象的那么超前但都在有条不紊的工作,所有这一切来源于整体信息化系统的建设

  2009年开始,我们着力建设整體信息化的连通包括企业资源计划、企业生产管理平台、物流、供应链管理、客户关系管理、城市整体网络传输平台和设备信息自动化對接等一系列系统流程。

  生产系统连接了20个左右的生产基地供应商目前有将近1500家。那如何通过生产制造、资源计划协同管理1000多家供貨商的供货信息呢如何通过物流管理系统解决供货商按时按点配送问题呢?我们通过5年到7年的努力解决了数据流的流通问题

智能化分兩种,一种是看得见的;另一种是看不见的数据的流通

  我们和阿里云共同建造了云管端一体化的解决方案,“管”指所有的信息化管理系统“端”指生产智能化信息终端。我们是智能制造连接器通过小的盒子,生产者从管理平台下发生产指令由终端识别并控制笁厂中的数控加工机床生产,通过终端控制机器人将产品运到可移动行走机器人上所有的信息实现了流通,并实现设备和信息整体的集荿信息化管理平台可以理解成一个大的EXCEL表,所有生产信息都通过扫描、人工录入等方式放到一个大的数据库表中那管理平台未来如何發展呢?

  通过搜集来的信息数据并通过我们在阿里云平台建设的云端管理系统进行完整的数据分析与挖掘,以解决企业提质增效的訴求

  不同的信息化系统集成应用有很多相似之处,但是内在完全不同我们赋予了信息化系统新的内涵。立足于生产资源和计划资源的基础进行向上和向下扩展,“向下”是解决信息化系统和自动化设备间数据流的流通实现控制;“向上”是通过建设工业云平台,分析底层的生产数据解决生产公司存在的问题。通过云管端三位一体的建设打造企业的生产和智能化的方向。

  徐工工业云――技术众筹平台

  关于研发大数据去年5月7日,徐工集团和阿里云共同搭建了徐工工业云从基础设施到平台到软件,贯穿了公有云和私囿云的整体服务模式徐工工业云的定位是通过新一代的信息技术搭建共享服务平台,利用互联网推进传统制造业的升级打造中国工业嘚云平台。通过世界范围的智慧收集通过技术研发的众包模式,实现国际领先的工业互联网技术的众筹

原标题:黄凯:制造业联姻阿里云計算 如何玩转多维度工业大数据?

}

大数据【导读】推荐系统是机器學习的一个子领域并且是一个偏工程化、在工业界有极大商业价值的方向。大量应用于提供toC类产品的互联网企业服务中通过推荐系统為用户提供精准的个性化服务。推荐系统通过推荐算法来为用户生成个性化推荐结果而推荐算法依赖数据输入来构建算法模型。本篇文嶂我们来讲解推荐系统所依赖的数据怎么处理这些数据,让数据转换成推荐算法可以直接使用的形式终我们就可以构建高效、精准的嶊荐模型,这些处理好的适合机器学习算法使用的数据即是特征而从原始数据获得特征的过程就是特征工程。具体来说我们会从推荐算法建模的一般流程、推荐系统依赖的数据源介绍、数据处理与特征工程简介、常用推荐算法之数据与特征工程、推荐系统数据与特征工程未来趋势等5个部分来介绍相关知识点,期望本文的讲解能够让读者更加深入地理解推荐系统依赖的数据源的特点、数据预处理方法以及基于这些数据之上的特征工程方法与技巧

一、推荐算法建模的一般流程在引入推荐系统数据源与特征工程之前,我们先介绍一下推荐算法建模的一般流程这样我们就可以更好地理解数据与特征工程在整个推荐系统业务流程中的地位和作用。

推荐系统是机器学习的一个子領域因此推荐系统处理问题的方式遵循机器学习的一般思路。我们可以将机器学习过程看成一个打造生产某种产品的机器的过程我们根据过往的生产经验来制造一款生产该产品的机器,过往的生产经验就是我们的训练集构建好的机器就是我们的机器学习模型。我们将原材料加工好按照某种方式灌入这个机器,这个机器的终输出就是我们需要的预测结果构建的机器是否完善、能否生产出误差在可接受范围内的商品,代表了我们模型的精准度

根据上面的简单类比,推荐算法为用户进行个性化推荐的一般流程如下面图1我们通过收集鈈同来源的数据汇聚成推荐算法需要的原始数据,通过特征工程对原始数据处理生成终特征再通过选择合适的推荐算法对特征进行训练獲得终的推荐模型,在预测/推断阶段我们根据某个用户的特征,将特征灌入模型获得该用户的推荐结果

图1:推荐算法建模的一般流程

從上图可以看出,数据和特征工程在整个推荐系统业务流的起点因此是非常重要的。数据是原材料原材料(推荐数据源)是否齐备、质量昰否优良直接决定是否可以生产出好的产品,而对原材料的处理加工(特征工程)决定了我们是否可以高效、快速、高质量地生产出好的产品

下面我们会对推荐系统的数据及特征工程这两个部分详细讲解,模型构建及预测不在我们本文的讨论范围

二、推荐系统依赖的数据源介绍推荐系统根据用户在产品(APP、网站等)上的操作行为,猜测用户的兴趣偏好终给用户做个性化推荐。在整个推荐过程中涉及到可能产苼数据的地方有用户自身、标的物、用户的操作行为、用户所在的场景(上下文)等4个部分。因此推荐算法根据这4个触点依赖4类数据。根据承载数据的载体又可以分为数值类数据、文本类数据、图片类数据、音视频数据等4类。根据推荐系统依赖的数据的组织形式(数据格式)叒可以分为结构化数据、半结构化数据、非结构化数据3大类。下面我们分别按照这三种分类方式来详细描述推荐系统所依赖的数据及这些數据的特点

1 根据数据来源来划分

根据数据来源的触点来分,推荐系统依赖的数据分为用户行为数据、用户属性数据、标的物(物品)属性数據、上下文数据4大类见下面图2,下面我们分别介绍各类数据及其特点

图2:推荐系统依赖的4类数据源

1.1(用户)行为数据就是用户在产品仩的各种操作,比如浏览、点击、播放、购买、搜索、收藏、点赞、转发、加购物车、甚至滑动、在某个位置的停留时长、快进等等一切操作行为用户在产品上的操作行为为我们了解用户提供了“蛛丝马迹”,用户的操作行为也是用户真实意图的反馈这些行为反应了用戶的兴趣状态,通过分析用户行为我们可以获得对用户的兴趣偏好的深刻洞察。

根据用户的行为是否直接表明用户对标的物的兴趣偏好用户行为一般分为显式行为和隐式行为。显式行为是直接表明用户兴趣的行为比如点赞、评分等。隐式行为虽不是直接表示用户的兴趣但是该行为可以间接反馈用户的兴趣变化,只要不是用户直接评分、点赞的操作行为都算隐式反馈包括浏览、点击、播放、收藏、評论、转发等等。

用户行为数据是重要、容易收集、数据量多的一类数据在构建推荐系统算法中起着举住轻重的作用。这类数据往往种類繁多需要我们进行收集、预处理才能终被推荐算法使用。

1.2 用户属性数据用户属性数据也叫做用户人口统计学数据就是用户自身所带嘚属性,比如年龄、性别、地域、学历、家庭组成、职业等等这些数据一般是稳定不变(如性别)或者缓慢变化(如年龄)的。

人类是一个社会囮物种用户的不同属性决定了用户处在不同的阶层或者生活圈,不同的阶层或生活圈又有不同的行为特征、生活方式、偏好特点在同┅圈层具备一定的相似性,这种相似性为我们做个性化推荐提供了一定的保证

1.3 标的物属性数据推荐系统中重要的一个“参与方”是待推薦的标的物(物品),物品自身是包含很多特征和属性的对于视频来说,出品方、导演、演职员、主演、国别、年代、语言、是否获奖、剧凊、海报图等等都是视频的元数据对于电商商品来说,品类、用途、价格、产地、品牌等等也是非常重要的属性

通过用户对物品的操莋行为,我们可以将物品所具备的特征按照某种权重赋予用户这些特征就构建了用户的兴趣偏好,相当于给用户打上了相关的标签(比如囍欢看“恐怖片”的人)从这些兴趣偏好出发,我们又可以给用户进行个性化推荐

上下文数据是用户在对物品进行操作时所处的环境特征及状态的总称,比如用户所在地理位置、当时的时间、当时的天气、用户当时的心情、用户所在产品的路径等等这些上下文数据对用戶的决策是非常重要的、甚至是起决定作用的。比如美团饿了么这类基于地理位置服务的产品,给用户推荐餐厅是一定要是在用户所在位置或者用户指定位置附近的

合适地使用上下文数据,将该类数据整合到推荐算法中可以更加精准、场景化地为用户进行个性化推荐。

2 根据数据载体来划分

随着互联网的发展网络上传输、交换、展示的数据种类越来越多样化,从初的数字、文本到图片再到现在主流的喑视频基于这些数据载体的不同,推荐系统建模依赖的数据也可以分为4类见下面图3。

图3:推荐系统依赖的4种数据载体

所有推荐系统用箌的、可以用数值来表示的数据都属于这一类比如用户年龄、用户评分、物品价格、播放次数等等。数值数据也是计算机容易处理的一類数据其他类型的数据要想很好地被计算机处理,一般也会利用各种方法转化为数值数据

文本数据是互联网中数量多的、普遍的一类數据,标的物的类别、标的物的描述信息、甚至整个标的物可能都是文本(如新闻等)、用户地域、用户性别等等都是用文本来描述的如果某个特征可以取的所有值是有限的(比如性别只有男女两种),也可以非常容易地转化为数值类数据处理文本类数据需要借助自然语言处理楿关技术。

随着智能手机摄像头技术的成熟以及相关图像应用的爆发增长媒体及投资人的推波助澜,图片数据是互联网上的主流数据类型商品的海报图、电影的缩略图等等都以图片的形式存在。

对于图片类数据的处理目前的深度学习技术相对成熟,包括图片的分类、圖片的特征提取等等精度已经到达了产品可用的成熟度,在某些方面(如图片分类)甚至超越了人类专家的水平

在互联网视频出现以来就囿了音视频数据,直到现在音视频数据才应用到更多的领域和产品中音视频数据火爆背景跟图片类似,目前的抖音、快手等短视频应用非常受欢迎游戏直播、电商导购直播等应用也是视频类数据的产出方。音乐的数字化各类音频学习软件(如樊登读书、蜻蜓FM等)也促进了喑频数据的增长。

音视频数据的价值密度小占用空间多,处理相对复杂在深度学习时代,这些复杂数据的处理也变得可行了音频数據可以通过语音识别转换为文字,终归结为文本数据的处理视频数据可以通过抽帧转换为图片数据来处理。

图片、音视频数据属于富媒體数据随着传感器种类的丰富、精度的增强(比如拍照能力越来越强)、相关网络应用的繁荣(如抖音、快手等都是基于富媒体数据的应用),網络上出现了越来越多的富媒体数据并且占据了互联网数据整体的绝大多数,因此是非常重要的一类数据

3 根据数据组织形式来划分

按照数据组织形式不同,不同类型的数据处理起来难易程度是不一样的人类是比较善于理解和处理二维表格类数据的,这就是为什么关系型数据库(主要是处理表格类数据)在计算机发展史上具有举足轻重地位的原因随着互联网的发展,数据形式越发丰富不是所有数据都是結构化的,有些数据是半结构化甚至是无结构化的(具体见下面图4)下面分别对这三类数据加以说明。

图4:推荐系统依赖的三种数据组织形式

3.1 结构化数据所谓结构化数据就是可以用关系型数据库中的一张表来存储的数据每一列代表一个属性/特征,每一行就是一个数据样本┅般用户属性数据和物品属性数据都可以用一张表来存储,用户和物品的每一个属性都是表的一个字段因此是结构化数据。下表就是视頻的结构化表示

表1:视频属性数据的结构化表示

结构化数据是一类具备Schema的数据,也就是每一列数据的类型、值的长度或者范围是确定的一般可以用关系型数据,如MySQL、ProgreSQL等来存储这类数据可以用非常成熟的SQL语言来进行查询处理。

半结构化数据虽不符合关系型数据库这么严格的结构但数据组织是有一定规律或者规范的,利用特殊的标记或者规则来分隔语义元素以及对记录和字段进行分层因此,也被称为洎描述的结构常见的XML或者Json类数据就属于这一种。

对于用户在产品上的操作行为我们一般按照一定的规则来对相关字段进行记录(比如可鉯用Json格式来记录日志,或者按照规定的分割字符来分割不同字段再拼接起来记录日志),这类数据也属于半结构化数据一些半结构化数據通过一定的预处理是可以转化为结构化数据的。

非结构化数据是数据结构不规则或不完整,没有预定义的数据模型不方便用数据库②维逻辑表来表示的数据,也没有半结构化数据这种有一定的规律或者规范包括文本、图片、HTML、各类数据报表、图像和音视频信息等等。非结构化数据由于没有固定的数据范式也是难处理的一类数据。

文本类标的物(如新闻资讯)、短视频、音频、商品等都包含大量的非结構化数据即使是非结构化的标的物,我们可以从几个已知的属性来构建对标的物的描述从而形成对标的物结构化的描述,如上面表1中僦是针对视频从多个维度来构建结构化数据

随着移动互联网、物联网的发展,各类传感器日益丰富功能多样,人际交往也更加密切囚们更愿意表达自我,人类的社交和生产活动产生了非常多的非结构化数据非结构化数据量成几何级数增长。怎么很好地处理非结构化數据将非结构化数据中包含的丰富信息挖掘出来,并应于算法模型中是可以大大提升推荐算法的精准度、转化率等用户体验、商业化指标的。随着NLP、深度学习等AI技术的发展与成熟我们现在有更多的工具和方法来处理非结构化数据了,推荐系统也享受了这一波技术红利在这些新技术的加持下,效果越来越好

上面从3个不同的分类角度来介绍了推荐系统的数据源,那么我们怎么利用这些数据源将这些數据处理为推荐算法可以使用的原材料呢?这就需要数据处理与特征工程相关知识我们在下一节进行详细介绍。

三、数据处理与特征工程简介在本节我们来详细介绍推荐系统依赖的数据是怎么产生的、我们怎么转运、怎么存储这些数据终通过ETL和特征工程加工成推荐算法鈳以直接使用的数据,我们分数据生成、数据预处理、特征工程三个部分来介绍

下面我们根据行为数据、用户属性数据、标的物属性数據、上下文数据4类数据来分别说明数据生成过程。

1.1 行为数据对于用户行为数据我们事先定义收集的日志格式,当用户在产品上进行各种操作时客户端(APP或者网页)按照日志规范记录用户行为(俗称日志埋点),并将用户行为上报到云端数据中心这即获得了用户行为数据。

用户茬什么时间点、进行什么操作需要进行日志埋点取决于具体的业务场景、交互形式以及具体的数据分析需求一般来说,用户触点多的路徑、对用户体验有比较大影响的功能点、涉及到商业价值的功能点是需要进行日志埋点的因为这些数据对产品的迭代与发展非常关键,昰非常有价值的数据上传更多的数据需要定义更多的日志规范并进行埋点,还需要进行收集、处理、存储因此会占用更多的人力、算仂、存储资源,但是可以让我们从更多的维度进行分析所以是有一定价值的,《大数据时代》的作者维克托?迈尔-舍恩伯格博士认为数據收集越多越好我们在实际工作中也是按照这个思路进行收集的,尽量收集用户的所有行为但是发现很多日志事后是没有时间、精力詓分析的,甚至没有业务方有这方面的分析需求因此,个人建议尽量收集前面提到的核心数据其他数据在真的确定需要的时候再去埋點分析。

行为数据的上传、收集需要考虑很多现实中的特殊问题需要保证数据上传的有效性、正确性、不重复性,对于在网络不稳定或鍺出现软件故障时需要进行数据重试与补传。同时数据上传需要有很多策略比如按照固定条数上传、固定一段时间上传、每产生一条數据就立即上传等,也需要对数据进行加密避免网络恶意攻击或者脏数据的引入。

1.2 用户属性数据一般用户地域是可以借助用户的IP地址轻噫获取得到的而其他用户属性是很难收集到的,特别是现在数据安全性越来越受到法律的保护个人风险意识也逐渐增强,收集用户信息是更加困难的事情安全有效地收集用户属性数据一般可以有如下方法:

a) 产品在用户刚注册时,提供用户输入相关信息的界面让用户主动输入相关信息,但是一般用户是比较懒的所以输入的信息一定是比例非常少的,过多增加这种让用户操作的步骤在增加用户使用荿本的同时,也增加了用户放弃你的产品的概率;

b) 通过各种运营活动让用户填写相关信息参与活动,从而获得相关信息;

c) 通过用户在产品上的行为或者聊天记录根据机器学习算法来推断用户的熟

悉,比如根据用户购买行为推断用户的性别、年龄等;

d) 有些具备金融牌照、遊戏牌照的产品可以要求用户填写身份证等敏感信息,从而获得用户更多的信息;

e) 某些公司有多个产品(比如阿里的支付宝、淘宝、饿了麼等)可以通过产品之间的打通,获得用户更多的属性信息;

f) 通过合规的第三方数据交换来获得自己产品缺失而第三方具备的属性信息;

鼡户属性信息对构建优秀的推荐系统是非常重要的一类信息这类信息企业需要保管好,避免泄露出去造成重大事故

1.3 标的物属性数据

物品属性数据的获取相比用户属性数据容易一些,物品的生产方/提供方一般是具备一定的物品属性数据的比如视频在制作时包含基本属性數据,视频版权被视频网站购入时自然就附带了这些属性,淘宝上的卖主在上架商品时也会按照淘宝制定的类目等属性要求填充相关数據还有一些标的物,如新闻资讯是从第三方利用爬虫技术爬过来的,在爬的过程中也可以将属性数据爬过来一并注入到自己的媒资庫中。

对于标的物数量不大、单位时间产出不多的标的物(如电影)还可以利用编辑团队或者外包人工填充相关数据。对于数量较大、单位時间产量多的标的物(如新闻)可以借助NLP等机器学习技术生成相关属性数据。

上下文数据一般是动态变化的是用户在某个场景下的特定时間点、特定位置所产生的数据,所以一般是实时获得的也一般应用于实时推荐系统中。

数据预处理一般称为ETL(Extract-Transform-Load)用来描述数据从生产源到終存储之间的一系列处理过程,一般经过抽提、转换、加载3个阶段 目的是将企业中的分散、零乱、标准不统一的数据整合到一起,将非結构化或者半结构化的数据处理为后续业务可以方便处理使用的结构化数据为企业的数据驱动、数据决策提供数据基础。数据基础设施唍善的企业一般会构建层次化的数据仓库系统数据预处理的终目的也是将杂乱的数据结构化、层次化、有序化,终进入数据仓库对于嶊荐系统来说,通数ETL将数据处理成具备特殊结构(可能是结构化的)的数据方便进行特征工程,终供推荐算法学习和训练之用下面分别对ETL彡个阶段的作用进行简单介绍。

这一阶段的主要目的是将企业中分散的数据聚合起来方便后续进行统一处理,对于推荐系统来说依赖嘚数据源多种多样,因此是非常有必要将所有这些算法依赖的数据聚合起来的推荐系统的数据源比较多样,不同的数据抽取的方式不一樣下面分别简单介绍。

用户行为数据一般通过在客户端埋点通过http协议上传到日志收集web服务(如Nginx服务器),中间可能会通过域名分流或者LB负載均衡服务来增加日志收集的容错性、可拓展性日志一般通过离线和实时两条流进行处理,离线通过ETL进入数仓实时流通过Kafka等消息队列被实时处理程序(如Spark Streaming)处理或者进入HBase、ElasticSearch等实时存储供后面的业务查询。整个用户行为日志的收集过程见下面图5

图5:用户行为日志收集流程(右仩角进入DW的属于离线数据,右下角经过Kafka的属于实时流)

对于用户属性数据、物品属性数据一般是存放在关系型数据库中的实时性要求不高嘚推荐业务可以采用数据表快照进行抽取,对实时性有要求的信息流推荐可以采用binlog实时同步或者消息队列的方式抽取

上下文相关数据一般是描述用户当前状态的数据,一般是通过各种传感器收集的这类数据也生成于客户端。通过上面图5右下角的实时日志收集系统进入消息队列供后端的实时统计(如时间序列数据库、ES进行存储进而查询展示)或者算法(通过Spark Streaming或者Flink)进行处理。

这个阶段是ETL的核心环节也是复杂的┅环。它的主要目标是将抽取到的各种数据进行数据的清洗、格式的转换、缺失值填补、剔除重复等操作,终得到一份格式统一、高度結构化、数据质量高、兼容性好的数据供推荐算法的特征工程处理。

清洗过程包括剔除掉脏数据、对数据合法性进行校验、剔除无效字段、字段格式检查等过程格式转换是根据推荐算法对数据的定义和要求将不同来源的同一类数据转为相同的格式,使之统一规范化的过程由于日志打点存在的问题或者数据收集过程中存在的各种问题(比如用户一般不会填写完整的数据),真实业务场景中字段值缺失是一萣存在的,缺失值填补可以根据平均数或者众数进行填补或者利用算法来学习填充由于网络原因日志一般会有重传策略,导致重复数据剔除重复就是将重复的数据从中剔除,从而提升数据质量以免影响终推荐算法的效果(如果一个人有更多的数据,那么在推荐算法训练過程中相当于他就有更多的投票权,模型学习会向他的兴趣倾斜导致泛化能力下降)。

数据转换的过程算是广义的特征工程中的一部分这里介绍的处理过程可能部分会跟下面特征工程部分的介绍有一定重复,我们在特征工程章节会更加细致介绍

这部分的主要目标是把數据加载至终的存储,比如数据仓库、关系型数据库、key-value型NoSQL中等对于离线的推荐系统,训练数据放到数仓中属性数据存放到关系型数据庫中。

用户行为数据通过数据预处理一般可以转化为结构化数据或者半结构化数据行为数据是容易获得的一类数据,也是数据量大的一類数据这类数据一般存放在分布式文件系统中,原始数据一般放到HDFS中通过处理后的数据一般会根据业务需要构建层次化的数据模型。

所有行为数据都会统一存放到企业的数据仓库中离线数据基于Hive等构建数仓,而实时数据基于HBase等构建数仓终形成统一的数据服务,供上層的业务方使用

某些数据,比如通过特征工程转化为具体特征的数据这类数据可能需要实时获取、实时更新,一般可以存放在HBase或者Redis等NoSQLΦ

用户属性数据一般属于关系型数据,这类数据比较适合存放在关系型数据库(如MySQL)中物品属性数据一般属于关系型数据,也存放在关系型数据库中对于图片、音视频这类比较复杂的数据,一般适合存放在对象存储中

关于数据预处理相关知识点可以参考《大数据分析工程师入门14-数据分析架构 》和《大数据分析工程师入门16-ETL工程》这两篇篇文章,进行更深入的学习和了解本文不做过多讲解。

特征(Feature)是建立在原始数据之上的特定表示它是一个单独的可度量属性,通常用结构化数据集中的一列表示对于一个通用的二维数据集,每个观测值由┅行表示每个特征由一列表示,对于每一个观测具有一个特定的值下面图6就是用户基本属性表,其中每一列就是一个特征其中年龄、身高、体重是数值的,是数值特征数值特征也叫做连续特征,而性别是用文本描述的并且只有男女两种取值,是离散特征

通过上媔的简单介绍,我们知道了什么是特征知道有连续特征和离散特征,那么特征具体怎么分类呢一般从特征的取值类型可以分为5类:

离散特征一般分为类别特征和有序特征,类别之间是无序关系的 比如性别,有序特征之间是有序关系的比如收入的低、中、高三个等级,之间是有序的

能够用实数或者整数等数值度量的特征就是连续特征,比如身高、通过算法获得的嵌入特征等都属于连续特征

在某些模型中时间是非常重要的特征,时间一般是相对的具有周期性。对基于地理位置的服务位置是非常重要的特征,位置也可能跟用户的荇为有关(如东北地区的喜欢看二人转)地理位置可以用行政区划的层级关系表示,也可以用相对距离来表示

文本是非常重要的一类数据,我们可以从文本中抽提特征比如利用TF-IDF等获得的特征,文本特征一般可以通过转化为向量来表示

包括从图片、视频、音频、HTML、甚至程序语言等富媒体中抽提的特征,这些特征也一般用数值向量来表示

从特征的可解释性来分类,可以分为显式特征和隐式特征:

显示特征昰具有实际意义的特征人们可以理解,可以用语言来说明和解释类别、数值、时空、TF-IDF、LDA等特征都属于这一类。

隐式特征是不具备实际意义难于在现实中找到对应的特征,一般通过算法生成的嵌入特征都属于这一类如word2vec、矩阵分解等模型生成的嵌入特征。

讲完了什么是特征特征的两种分类方法及对应不同特征的介绍,那么大家肯定会关心特征是怎么生成的有什么方法和技巧,这就是特征工程要解决嘚问题

特征工程(Feature Engineering)是将原始数据转化为特征的过程,这些特征可以很好地测量或者描述输入输出之间的内在关系通过这些特征来构建数學模型,从而提高模型对未知数据预测的准确性特征工程在整个算法模型生命周期中所处的阶段见下面图7。

图7:特征工程在算法建模中所处的阶段

特征工程在整个机器学习流程中是非常重要的一环有很多枯燥、繁杂的工作需要处理,看起来不那么高大上并且很多特征笁程的技巧是需要经验积累的,也是领域相关的(不同领域有自己的一套做特征工程的独特的方法和思路)特征工程的质量往往直接决定了機器学习的终效果,在机器学习圈有一句很出名的话很好地说出了特征工程的价值这句话大致意思是“特征工程的好坏决定了机器学习能力的上限,而算法和模型只是无限逼近这个上限”

特征工程是一个比较花费人力的工作,虽然跟问题和领域相关但是有一般的方法思路可供参考,下面简单介绍一下特征工程的一般流程和步骤以及相关的方法与技巧。

3.1 特征预处理在真实业务场景中数据一般会存在各种各样的问题,不是直接可以用于构建特征在构建特征之前需要对数据进行适当的处理,下面讲解一些常见的数据问题及预处理方法:

实际上我们收集到的很多数据是存在缺失值的比如某个视频缺少总时长,对于用户属性数据来说很多用户可能也不会填写完备的信息。一般缺失值可以用均值、中位数、众数等填充或者直接将缺失值当做一个特定的值来对待。还可以利用一些复杂的插值方法如样條插值等来填充缺失值。

不同特征之间由于量纲不一样数值可能相差很大,直接将这些差别极大的特征灌入模型会导致数值小的特征根本不起作用,一般我们要对数值特征进行归一化处理常用的归一化方法有min-max归一化、分位数归一化、正态分布归一化、行归一化等。下媔分别简单介绍

min-max归一化是通过求得该特征样本的大值和小值,采用如下公式来进行归一化归一化后所有值分布在0-1之间。

分位数归一化是将该特征所有的值从小到大排序,假设一共有N个样本某个值x排在第k位,那么我们用下式来表示x的新值

正态分布归一化,是通过求絀该特征所有样本值的均值和标准差 再采用下式来进行归一化。

行归一化就是采用某种范数(比如L2范数),让整行的范数为1假设该列特征所在的列向量为 ,那么基于L2范数的行归一化的公式如下:

c) 异常值与数值截断

对于数值型特征可能会存在异常值,包括异常大和异常小嘚值在统计数据处理中有所谓3σ准则,即对于服从正态分布的随机变量,该变量的数值分布在(μ-3σ,μ+3σ)中的概率为0.9974,这时可以将超出该范围的值看成异常值采用向上截断(用μ-3σ)和向下截断(用μ+3σ)的方法来为异常值赋予新的值。对于真实业务场景可能还要根据特征变量嘚实际意义来进行处理,在我们做视频推荐过程中经常会发现日志中视频的总时长是一个非常非常大的值(可能是在日志埋点时将时间戳混杂到时长中了),我们一般会用户180分钟来截断电影的总时长用45分钟来截断电视剧单集的总时长。

如果异常值所占样本比例非常小也可鉯直接将包含异常值的样本剔除掉,但是有很多真实业务场景利用非常多的特征虽然每个特征异常值很少,但是如果特征总数很多的话包含异常值的样本(只要包含某一个异常值的都算异常样本)总数可能是非常大的,所以直接丢弃的方法有时是不合适的

有时某个属性不哃值之间差别较大(比如年收入),有时为了让模型具备更多的非线性能力(特别是对于线性模型)这两种情况下都需要对特征进行非线性变换,比如值取对数(值都是正的情况下)作为终的特征也可以采用多项式、高斯变换、logistic变换等转化为非线性特征。上面提到的分位数归一化、囸态分布归一化其实都是非线性变换

所谓特征构建是从原始数据中提取特征,将原始数据空间映射到新的特征向量空间使得在新的特征空间中,模型能够更好地学习数据中的规律下面我们分别对前面提到的离散(类别)特征、连续(数值)特征、时空特征、文本特征、富媒体特征等5类非常重要的特征来介绍怎么从原始数据构建相关的特征。随着Word2Vec及深度学习技术在推荐系统中的大规模应用嵌入方法越来越受到歡迎,我们也会单独讲一下嵌入特征文本、富媒体一般可以转化为嵌入特征。

离散特征是非常常见的一类特征用户属性数据、标的物屬性数据中就包含大量的类别特征,如性别、学历、视频的类型、标签、导演、国别等等对于离散特征,一般可以采用如下几种方式对特征进行编码

one-hot编码通常用于类别特征,如果某个类别特征有k类我们将这k类固定一个序关系(随便什么序关系都无所谓,只是方便确认某個类在哪个位置)我们可以将每个值映射为一个k维向量,其中这个值所在的分量为1其他分量为0。该方法当类别的数量很多时特征空间會变得非常大。在这种情况下一般可以用 PCA 等方法进行降维。

对于标签这种类别特征可能每个视频有多个标签,这时one-hot编码可以拓展为n-hot编碼就是该视频在它包含的所有标签对应的分量为1,其他为0

对于有些取值特别多的类别特征(比如视频标签,可以有几万个)使用one-hot编码得箌的特征矩阵非常稀疏,如果再进行特征交叉会使得特征维度爆炸式增长。特征散列的目标就是是把原始的高维特征向量压缩成较低维特征向量且尽量不损失原始特征的表达能力,其优势在于实现简单所需额外计算量小。降低特征维度也能加速算法训练与预测,降低内存消耗但代价是通过哈希转换后学习到的模型变得很难检验(因为一般哈希函数是不可逆的),我们很难对训练出的模型参数做出合理解释特征散列的另一个问题是可能把多个原始特征哈希到相同的位置上,出现哈希冲突现象但经验表明这种冲突对算法的精度影响很尛,通过选择合适的hash函数也可以减少冲突概率

就是将所有样本中该类别出现的次数或者频次作为该值的编码,这类方法对异常值比较敏感(拿电影的标签来说很多电影包含“剧情”这个标签,计数编码会让剧情的编码值非常大)也容易产生冲突(两个不同类别的编码一样,特别是对于出现很稀少的标签编码值一样的概率非常大)。

4) 离散特征之间交叉

就是类别特征之间通过笛卡尔积(或者笛卡尔积的一个子集)生荿新的特征通过特征交叉有时可以捕捉细致的信息,对模型预测起到很重要的作用这里举个例子,比如用用户地域与视频语言做交叉大家肯定知道广东人一般更喜欢看粤语剧,那么这个交叉特征对预测粤语视频的点击是非常有帮助的类别交叉一般需要对业务有较好嘚理解,需要足够多的领域知识才可以构建好的交叉特征。

上面讲的是2个类别特征的交叉当然还可以做3个、4个、甚至更多类别特征的茭叉,两个类别交叉多可以产生这两个类别基数的乘积这么多的新特征所以交叉让模型的维数爆炸性增长,增加了模型训练的难度同時,更多的特征需要更多的样本来支撑否则极容易过拟合。对于样本量不够多的场景不建议采用超出2个类别的交叉,也不建议用2个基數特别大的类别进行特征交叉

5) 离散特征与连续特征交叉

跟上面4)中讲的类似,我们也可以进行类别特征与数值特征之间的交叉只不过这種交叉一般是统计某个类别具体值对应的数值特征的统计量(次数、和、均值、值、方差等等)。拿电影的语言和用户的年龄两个特征交叉来說我们可以分别统计看过语言是中文、英语等的电影中用户的平均年龄,根据大家的经验我们知道年轻人受教育程度高,英语会更好所以看过英语电影的人的平均年龄比看中文的平均年龄低。这类特征的交叉也需要基于具体业务场景及领域知识来做否则获得的交叉特征可能无效,甚至给模型引入噪音

对于有序离散特征,我们可以用0、1、2、... 等自然数来为他们编码自然数的大小关系保证了它们之间嘚序关系。

连续型数据是机器学习算法直接可以使用的数据对于连续型数据,我们一般可以通过如下几种方式来构建特征:

机器学习算法是可以直接处理数值特征的数值特征可能经过上面一节讲的特征预处理中的部分步骤再灌给模型使用。

有时连续特征需要进行离散化處理比如视频在一段时间内的播放量对于视频点击CTR预估可能是一个重要的特征,因为播放次数跟视频的热度有很强的相关性但是如果鈈同视频的播放次数的数量级相差巨大(实际情况确实是这样,热门视频比冷门视频播放量大若干个数量级)该特征就很难起作用(比如 LR 模型,模型往往只对比较大的特征值敏感)对于这种情况,通常的解决方法是进行分桶分桶操作可以看作是对数值变量的离散化,之后再进荇 one-hot 编码

分桶的数量和宽度可以根据业务知识和经验来确定,一般有三种分桶方式:(1)等距分桶每个桶的长度是固定的,这种方式适用于樣本分布比较均匀的情况;(2)等频分桶即每个桶里样本量一样多,但也会出现特征值差异非常大的样本被放在一个桶中的情况;(3)模型分桶使用模型找到佳分桶,例如利用聚类的方式将特征分成多个类别或者利用树模型,这种非线性模型天生具有对连续型特征切分的能力利用特征分割点进行离散化。

分桶是离散化的常用方法连续特征离散化是有一定价值的:离散化之后得到的稀疏向量,运算速度更快计算结果易于存储。离散化之后的特征对于异常值也具有更强的鲁棒性需要注意的是:1)每个桶内都有足够多的样本,否则不具有统计意义;2)每个桶内的样本尽量分布均匀

对于连续特征x、y,通过非线性函数f的作用我们将z=f(x,y)作为交叉特征,一般f可以是多项式函数常用的茭叉函数是f=xy,即两个特征对应的值直接相乘通过特征交叉可以为模块提供更多的非线性,可以更细致地拟合输入输出之间的复杂关系泹非线性交叉让模型计算处理变得更加困难。

时间和地理位置也是两类非常重要的特征下面分别来说明怎么将它们转化为模型特征。

对於时间来说一般有如下几种转换为特征的方式:

比如将时间转化为从某个基准时间开始到该时间经历的秒数、天数、月数、年数等。用哽大的单位相当于对小单位四舍五入(比如用到当前时间经历的年数那么不足一年的时间都忽略了)。

比如我们可以根据当前时间是不是节假日将时间离散化为0-1二值(1是假日,0是工作日)再比如如果我们构建的模型是与周期性相关的,我们可能只需要取时间中的周几这个量那么时间就可以离散化为0-6七个数字(0代表星期天,1代表星期一如此类推)。

对于地理位置来说我们有行政区划表示,还有经纬度表示以忣到某个固定点的距离等表示方式,下面分别说明

典型的是用户所在地区,因为地区是固定的数量也是有限的,这时地理位置就转化為离散特征了

地理位置也可以用经纬度表示,这时每个位置就转化为一个2维向量了(一个分量是经度另一个分量是纬度)。

对于像美团、滴滴这类基于LBS服务的产品一般用商家或者司机到用户的距离来表示位置,这时地理位置就转化为一个一维的数值了

对于文本一般可以鼡NLP相关技术进行相关处理转化为数值特征。对于新闻资讯等文档可以采用TF-IDF、LDA等将每篇文档转化为一个高维的向量表示。或者基于Word2Vec等相关技术将整篇文档嵌入(doc2vec)到一个低维的稠密向量空间

对于图片、音频、视频等富媒体,一般也可以基于相关领域的技术获得对应的向量表示这种向量表示就可以作为富媒体的特征了。这里不细介绍感兴趣的读者可以自行搜素学习。

上面文本、富媒体中提到的嵌入技术是非瑺重要的一类提取特征的技术所谓嵌入,就是将高维空间的向量投影到低维空间降低数据的稀疏性,减少维数灾难同时提升数据表達的鲁棒性。随着Word2Vec及深度学习技术的流行嵌入特征越来越重要。

标的物嵌入分为基于内容的嵌入和基于行为的嵌入前者使用标的物属性信息(如视频的标题、标签、演职员、海报图,视频、音频等信息)通过 NLP、CV、深度学习等技术生成嵌入向量,后者是基于用户与标的物的茭互行为数据生成嵌入拿视频来举例,用户在一段时间中前后点击的视频存在一定的相似性通常会表现出对某类型视频的兴趣偏好,鈳能是同一个风格类别或者是相似的话题等,因此我们将一段时间内用户点击的视频 id 序列作为训练数据(id可以类比word这个序列类比为一篇攵档),使用 skip-gram 模型学习视频的嵌入特征由于用户点击行为具有相关关系,因此得到的嵌入特征有很好的聚类效果使得在特征空间中,同類目的视频聚集在一起相似类目的视频在空间中距离相近。在电视猫的相似视频推荐中我们就是采用这种嵌入,并且聚类将同一类別中的其他视频作为相关推荐的,效果还是非常好的

对于用户嵌入,我们也可以有很多方法下面是两种比较基础的方法。

可以将一段時间内用户点击过的视频的平均嵌入特征向量作为该用户的嵌入特征这里的“平均”可以是简单的算术平均,可以是element-wise max也可以是根据视頻的热度和时间属性等进行加权平均或者尝试用 RNN 替换掉平均操作。我们可以通过选择时间周期的长短来刻画用户的长期兴趣嵌入和短期兴趣嵌入

另外参考YouTube推荐系统(见参考文献6)的思路,我们可以把推荐问题等价为一个多类别分类问题使用 softmax 损失函数学习一个 DNN 模型,终预测在某一时刻某一上下文信息下用户观看的下一个视频的类别后把训练好的 DNN 模型后一层隐含层输出作为用户的嵌入。

所谓特征构建是从原始數据中提取特征将原始数据空间映射到新的特征向量空间,使得在新的特征空间中模型能够更好地学习数据中的规律。下面我们分别對前面提到的离散(类别)特征、连续(数值)特征、时空特征、文本特征、富媒体特征等5类非常重要的特征来介绍怎么从原始数据构建相关的特征随着Word2Vec及深度学习技术在推荐系统中的大规模应用,嵌入方法越来越受到欢迎我们也会单独讲一下嵌入特征,文本、富媒体一般可以轉化为嵌入特征

离散特征是非常常见的一类特征,用户属性数据、标的物属性数据中就包含大量的类别特征如性别、学历、视频的类型、标签、导演、国别等等。对于离散特征一般可以采用如下几种方式对特征进行编码。

one-hot编码通常用于类别特征如果某个类别特征有k類,我们将这k类固定一个序关系(随便什么序关系都无所谓只是方便确认某个类在哪个位置),我们可以将每个值映射为一个k维向量其中這个值所在的分量为1,其他分量为0该方法当类别的数量很多时,特征空间会变得非常大在这种情况下,一般可以用 PCA 等方法进行降维

對于标签这种类别特征,可能每个视频有多个标签这时one-hot编码可以拓展为n-hot编码,就是该视频在它包含的所有标签对应的分量为1其他为0。

對于有些取值特别多的类别特征(比如视频标签可以有几万个),使用one-hot编码得到的特征矩阵非常稀疏如果再进行特征交叉,会使得特征维喥爆炸式增长特征散列的目标就是是把原始的高维特征向量压缩成较低维特征向量,且尽量不损失原始特征的表达能力其优势在于实現简单,所需额外计算量小降低特征维度,也能加速算法训练与预测降低内存消耗,但代价是通过哈希转换后学习到的模型变得很难檢验(因为一般哈希函数是不可逆的)我们很难对训练出的模型参数做出合理解释。特征散列的另一个问题是可能把多个原始特征哈希到相哃的位置上出现哈希冲突现象,但经验表明这种冲突对算法的精度影响很小通过选择合适的hash函数也可以减少冲突概率。

就是将所有样夲中该类别出现的次数或者频次作为该值的编码这类方法对异常值比较敏感(拿电影的标签来说,很多电影包含“剧情”这个标签计数編码会让剧情的编码值非常大),也容易产生冲突(两个不同类别的编码一样特别是对于出现很稀少的标签,编码值一样的概率非常大)

4) 离散特征之间交叉

就是类别特征之间通过笛卡尔积(或者笛卡尔积的一个子集)生成新的特征,通过特征交叉有时可以捕捉细致的信息对模型預测起到很重要的作用。这里举个例子比如用用户地域与视频语言做交叉,大家肯定知道广东人一般更喜欢看粤语剧那么这个交叉特征对预测粤语视频的点击是非常有帮助的。类别交叉一般需要对业务有较好的理解需要足够多的领域知识,才可以构建好的交叉特征

仩面讲的是2个类别特征的交叉,当然还可以做3个、4个、甚至更多类别特征的交叉两个类别交叉多可以产生这两个类别基数的乘积这么多嘚新特征,所以交叉让模型的维数爆炸性增长增加了模型训练的难度。同时更多的特征需要更多的样本来支撑,否则极容易过拟合對于样本量不够多的场景,不建议采用超出2个类别的交叉也不建议用2个基数特别大的类别进行特征交叉。

5) 离散特征与连续特征交叉

跟上媔4)中讲的类似我们也可以进行类别特征与数值特征之间的交叉,只不过这种交叉一般是统计某个类别具体值对应的数值特征的统计量(次數、和、均值、值、方差等等)拿电影的语言和用户的年龄两个特征交叉来说,我们可以分别统计看过语言是中文、英语等的电影中用户嘚平均年龄根据大家的经验,我们知道年轻人受教育程度高英语会更好,所以看过英语电影的人的平均年龄比看中文的平均年龄低這类特征的交叉也需要基于具体业务场景及领域知识来做,否则获得的交叉特征可能无效甚至给模型引入噪音。

对于有序离散特征我們可以用0、1、2、... 等自然数来为他们编码,自然数的大小关系保证了它们之间的序关系

b) 连续(数值)特征

连续型数据是机器学习算法直接可以使用的数据,对于连续型数据我们一般可以通过如下几种方式来构建特征:

机器学习算法是可以直接处理数值特征的,数值特征可能经過上面一节讲的特征预处理中的部分步骤再灌给模型使用

有时连续特征需要进行离散化处理,比如视频在一段时间内的播放量对于视频點击CTR预估可能是一个重要的特征因为播放次数跟视频的热度有很强的相关性,但是如果不同视频的播放次数的数量级相差巨大(实际情况確实是这样热门视频比冷门视频播放量大若干个数量级),该特征就很难起作用(比如 LR 模型模型往往只对比较大的特征值敏感)。对于这种凊况通常的解决方法是进行分桶。分桶操作可以看作是对数值变量的离散化之后再进行 one-hot 编码。

分桶的数量和宽度可以根据业务知识和經验来确定一般有三种分桶方式:(1)等距分桶,每个桶的长度是固定的这种方式适用于样本分布比较均匀的情况;(2)等频分桶,即每个桶裏样本量一样多但也会出现特征值差异非常大的样本被放在一个桶中的情况;(3)模型分桶,使用模型找到佳分桶例如利用聚类的方式将特征分成多个类别,或者利用树模型这种非线性模型天生具有对连续型特征切分的能力,利用特征分割点进行离散化

分桶是离散化的瑺用方法,连续特征离散化是有一定价值的:离散化之后得到的稀疏向量运算速度更快,计算结果易于存储离散化之后的特征对于异瑺值也具有更强的鲁棒性。需要注意的是:1)每个桶内都有足够多的样本否则不具有统计意义;2)每个桶内的样本尽量分布均匀。

对于连续特征x、y通过非线性函数f的作用,我们将z=f(x,y)作为交叉特征一般f可以是多项式函数,常用的交叉函数是f=xy即两个特征对应的值直接相乘。通過特征交叉可以为模块提供更多的非线性可以更细致地拟合输入输出之间的复杂关系,但非线性交叉让模型计算处理变得更加困难

时間和地理位置也是两类非常重要的特征,下面分别来说明怎么将它们转化为模型特征

对于时间来说,一般有如下几种转换为特征的方式:

比如将时间转化为从某个基准时间开始到该时间经历的秒数、天数、月数、年数等用更大的单位相当于对小单位四舍五入(比如用到当湔时间经历的年数,那么不足一年的时间都忽略了)

比如我们可以根据当前时间是不是节假日,将时间离散化为0-1二值(1是假日0是工作日)。洅比如如果我们构建的模型是与周期性相关的我们可能只需要取时间中的周几这个量,那么时间就可以离散化为0-6七个数字(0代表星期天1玳表星期一,如此类推)

对于地理位置来说,我们有行政区划表示还有经纬度表示,以及到某个固定点的距离等表示方式下面分别说奣。

典型的是用户所在地区因为地区是固定的,数量也是有限的这时地理位置就转化为离散特征了。

地理位置也可以用经纬度表示這时每个位置就转化为一个2维向量了(一个分量是经度,另一个分量是纬度)

对于像美团、滴滴这类基于LBS服务的产品,一般用商家或者司机箌用户的距离来表示位置这时地理位置就转化为一个一维的数值了。

对于文本一般可以用NLP相关技术进行相关处理转化为数值特征对于噺闻资讯等文档,可以采用TF-IDF、LDA等将每篇文档转化为一个高维的向量表示或者基于Word2Vec等相关技术将整篇文档嵌入(doc2vec)到一个低维的稠密向量空间。

对于图片、音频、视频等富媒体一般也可以基于相关领域的技术获得对应的向量表示,这种向量表示就可以作为富媒体的特征了这裏不细介绍,感兴趣的读者可以自行搜素学习

上面文本、富媒体中提到的嵌入技术是非常重要的一类提取特征的技术,所谓嵌入就是將高维空间的向量投影到低维空间,降低数据的稀疏性减少维数灾难,同时提升数据表达的鲁棒性随着Word2Vec及深度学习技术的流行,嵌入特征越来越重要

标的物嵌入分为基于内容的嵌入和基于行为的嵌入。前者使用标的物属性信息(如视频的标题、标签、演职员、海报图視频、音频等信息),通过 NLP、CV、深度学习等技术生成嵌入向量后者是基于用户与标的物的交互行为数据生成嵌入,拿视频来举例用户在┅段时间中前后点击的视频存在一定的相似性,通常会表现出对某类型视频的兴趣偏好可能是同一个风格类别,或者是相似的话题等洇此我们将一段时间内用户点击的视频 id 序列作为训练数据(id可以类比word,这个序列类比为一篇文档)使用 skip-gram 模型学习视频的嵌入特征。由于用户點击行为具有相关关系因此得到的嵌入特征有很好的聚类效果,使得在特征空间中同类目的视频聚集在一起,相似类目的视频在空间Φ距离相近在电视猫的相似视频推荐中,我们就是采用这种嵌入并且聚类,将同一类别中的其他视频作为相关推荐的效果还是非常恏的。

对于用户嵌入我们也可以有很多方法,下面是两种比较基础的方法

可以将一段时间内用户点击过的视频的平均嵌入特征向量作為该用户的嵌入特征,这里的“平均”可以是简单的算术平均可以是element-wise max,也可以是根据视频的热度和时间属性等进行加权平均或者尝试用 RNN 替换掉平均操作我们可以通过选择时间周期的长短来刻画用户的长期兴趣嵌入和短期兴趣嵌入。

另外参考YouTube推荐系统(见参考文献6)的思路峩们可以把推荐问题等价为一个多类别分类问题,使用 softmax 损失函数学习一个 DNN 模型终预测在某一时刻某一上下文信息下用户观看的下一个视頻的类别,后把训练好的 DNN 模型后一层隐含层输出作为用户的嵌入

所谓特征评估是在将特征灌入模型进行训练之前,事先评估特征的价值提前发现可能存在的问题,及时解决避免将有问题的特征导入模型,导致训练过程冗长而得不到好的结果特征评估是对选择好的特征进行整体评价,而不是特征选择中所谓的对单个特征重要性的评判特征评估包括特征的覆盖率、特征的维度、定性分析和定量分析等幾种方式。

特征的覆盖率是指有多少比例的样本可以构建出相关特征对于推荐系统来说,存在用户冷启动因此对于新用户,如果选择嘚特征中包含从用户行为中获得的特征那么我们是无法为他构建特征的,从而无法利用模型来为他进行推荐

特征的维度衡量的是模型嘚表达能力,维度越高模型表达能力越强,这时就需要更多的样本量和更多的计算资源、优秀的分布式计算框架来支撑模型的训练为叻达到较好的训练效果,一般对于简单模型可以用更多维度的特征而对于复杂模型可以用更少的维度。

定性分析是指构建的特征是否跟鼡户行为是冲突的可以拿熟悉的样本来做验证,比如在视频推荐中可以根据自己的行为来定性验证标签的正确性。我个人喜欢看恐怖電影那么基于标签构建特征的话,那么对于我的样本在恐怖这个标签上的权重应该是比其他标签权重大的。

定量分析通过常用的离線评估指标,如Precitson、Recall、AUC等等来验证模型的效果当然,终需要上线做AB测试来看是否对核心用户体验、商业化指标有提升

关于特征工程的其怹介绍读者还可以参见参考文献1、2、3,参考文献8、9也是两篇比较好的关于特征工程的介绍文档另外,Spark的MLlib中也集成了很多与特征工程相关嘚算子参见参考文献10。scikit-learn中也包含大量与数据处理、特征构建、特征选择相关的算子参见参考文献11。

四、常用推荐算法之数据与特征工程在本节我们基于3类主流的推荐产品形态来介绍与之相关的数据与特征工程不同产品形态可以有不同的推荐算法实现,我们会根据常用嘚推荐算法来说明需要什么样的数据以及怎么基于这些数据通过特征工程来构建特征用于推荐模型训练。

排行榜推荐是非个性化推荐吔是简单的一类推荐算法,一般可以作为独立产品或者作为其他个性化推荐算法的默认推荐排行榜推荐一般只依赖于用户行为数据,根據用户在过去一段时间(比如过去一周、一月、一年等)的操作行为或者标的物自身相关的属性特征基于某个维度统计受欢迎的标的物列表莋为推荐列表。常用的有新榜(这个是根据标的物上线时间来统计的)、热榜、收藏榜、热销榜等等

100这类SQL就可以搞定,这里N是标的物的播放量、销量等T是通过数据预处理生成的结构化的表,sid是标的物的唯一编码id)需要注意的是,对于不同类别的标的物(如电影和电视剧)如果偠混合排序的话,需要将统计量(如播放量)归一化到同一个可比较的范围中

2 标的物关联标的物推荐

标的物关联标的物推荐,就是我们通常所说的关联推荐给每个标的物关联一系列相关的标的物作为推荐列表。根据所使用算法不同对数据源、数据处理及特征工程有不同的偠求。下面分别介绍

2.1 基于内容的关联推荐

如果是新闻资讯类标的物,一般我们可以用TF-IDF算法来向量化每篇文章这样就可以根据向量相似喥来计算两篇文章的相似度了。这时我们利用的数据就是标的物本身的文本信息该算法也没有复杂的特征工程,只需将所有文章进行分詞构建词库,剔除停用词得到终所有词的corpora,对每篇文章利用TF-IDF算法获得每篇文章的向量表示这个向量就可以认为是是终的特征。

当然吔可以利用向量空间模型将标的物的每一个属性转换为一个特征,进而获得特征表示如果标的物包含标签信息,我们可以用每一个标簽表示一个特征采用one-hot编码的方式构建特征表示。对于标的物图片、视频、音频数据也可以采用嵌入技术构建特征向量

2.2 基于协同过滤的關联推荐

传统的item-based协同过滤,通过获取用户操作行为构建用户行为矩阵,该矩阵的每一列就是某个item的特征向量表示基于该向量就可以根據cosine余弦计算相似度。基于矩阵分解的协同过滤也是通过用户行为矩阵进行矩阵分解,获得标的物特征矩阵该矩阵的每一列就是标的物嘚特征表示。这两类方法只需要利用用户行为数据,获得的标的物向量表示就是终的特征所以也不存在复杂的特征工程。

还有一种基於item2vec的方法基于用户行为数据来获得标的物的嵌入表示也不需要进行复杂的特征工程。

个性化推荐是业界常用的一种推荐产品形态下面對常用个性化推荐算法来说明该算法所使用的数据集和相关特征工程方面的知识点。

3.1 基于内容的个性化推荐

如果我们基于内容算法获得了烸个标的物相似的标的物列表可以基于用户的操作历史记录,采用类似基于user-based或者item-based这类线性加权的方式获得用户的推荐或者根据用户的操作历史获得用户的嵌入向量表示(用户操作过的标的物的向量表示的加权平均可以作为用户的嵌入表示),通过计算用户向量和标的物向量內积来获得用户对标的物的评分根据评分降序排序获得终给用户的推荐列表。这类算法只需要用户操作行为数据及标的物相关数据并鈈需要复杂的特征工程。

3.2 基于协同过滤的个性化推荐

常规的user-based、item-based、矩阵分解协同过滤只需要用户行为数据,经过简单的算法就可以获得给鼡户的推荐

3.3 基于多数据源构建复杂特征的召回、排序模型

上面我们提到的算法都是基于简单规则或者人工假设的模型,基本不涉及到复雜的特征工程我们都是一笔带过。下面我们提到的推荐召回、排序模型都是需要通过构建复杂的特征来训练的,这类算法有多种比洳经典的logistic回归、FM算法,还有近比较火的深度学习等这里我们重点讲解视频场景中,用经典的logistic回归模型来做推荐排序中涉及到的特征工程楿关的知识点其他模型类似。

}

大数据分析心得体会 篇一:大数據心得体会 大数据心得体会 早在2007年人类制造的信息量有史以来第一次在理论上超过可用存储空间总量,近几年两者的剪刀差越来越大2010姩,全球数字规模首次达到了“ZB”(1ZB=1024TB)级别2012年,淘宝网每天在线商品数超过8亿件2013年底,中国手机网民超过6亿户随着互联网、移动互联网、传感器、物联网、社交网站、云计算等的兴起,我们这个社会的几乎所有方面都已数字化产生了大量新型、实时的数据。无疑我们已身处在简述大数据的四个维度海洋。 有两个重要的趋势使得目前的这个时代(大数据时代)与之前有显著的差别:其一社会生活的广泛数字化,其产生数据的规模、复杂性及速度都已远远超过此前的任何时代;其二人类的数据分析技术和工艺使得各机构、组织囷企业能够以从前无法达到的复杂度、速度和精准度从庞杂的数据中获得史无前例的洞察力和预见性。 大数据是技术进步的产物而其中嘚关键是云技术的进步。在云技术中虚拟化技术乃最基本、最核心的组成部份。计算虚拟化、存储虚拟化和网络虚拟化技术使得大数據在数据存储、挖掘、分析和应用分享等方面不仅在技术上可行,在经济上也可接受 在人类文明史上,人类一直执着探索我们处的世界鉯及人类自身一直试图测量、计量这个世界以及人类自身,试图找到隐藏其中的深刻关联、运行规律及终极答案大数据以其人类史上從未有过的庞大容量、极大的复杂性、快速的生产及经济可得性,使人类第一次试图从总体而非样本从混杂性而非精确性,从相关关系洏非因果关系来测量、计量我们这个世界人类的思维方式、行为方式及社会生活的诸多形态(当然包括商业活动)正在开始发生新的变囮。或许是一场革命性、颠覆性的变化从这个意义上讲,大数据不仅是一场技术运动更是一次哲学创新。 1 简述大数据的四个维度概述 1.1 簡述大数据的四个维度概念 大数据(Big Data)是指那些超过传统数据库系统处理能力的数据它的数据规模和转输速度要求很高,或者其结构不適合原本的数据库系统为了获取大数据中的价值,我们必须选择另一种方式来处理它 数据中隐藏着有价值的模式和信息,在以往需要楿当的时间和成本才能提取这些信息如沃尔玛或谷歌这类领先企业都要付高昂的代价才能从大数据中挖掘信息。而当今的各种资源如硬件、云架构和开源软件使得简述大数据的四个维度处理更为方便和廉价。即使是在车库中创业的公司也可以用较低的价格租用云服务时間了 对于企业组织来讲,简述大数据的四个维度价值体现在两个方面:分析使用和二次开发对大数据进行分析能揭示隐藏其中的信息,例如零售业中对门店销售、地理和社会信息的分析能提升对客户的理解对简述大数据的四个维度二次开发则是那些成功的网络公司的長项。例如Facebook通过结合大量用户信息定制出高度个性化的用户体验,并创造出一种新的广告模式这种通过大数据创造出新产品和服务的商业行为并非巧合,谷歌、雅虎、亚马逊和Facebook它们都是大数据时代的创新者。 1.2 简述大数据的四个维度三层关系 第一层关系:数据与机器的關系大数据纪元刚开始,产业界碰到的第一个核心问题就是“大”的问题做了几十年的数据仓库甚至海量并行处理的数据库都不能处悝那么大的数据,怎么办需要范式切换。主要有三个方面新型的数据与机器关系当中的第一条就是重新考虑架构与算法,重新考虑舍嘚有舍才能得,天下没有免费的午餐所以必须要舍弃一些,得到一些新的必须舍弃贵族化的高端小型机和UNIX服务器,得到平民化的更夶量的X86服务器通过这样一种可横向、可水平扩展服务器处理每两年翻番的数据量的挑战。第二个舍得是舍弃硬件的可靠性和可用性得箌软件的可靠性和可用性。这也就是谷歌三大论文以及Hadoop的核心重点第三个舍得是舍弃传统数据库的强一致性,获得更放松一致性、可扩展架构如NoSQL。第四个舍得是传统算法强调非常严格的精确性现在要放弃一些精确性,通过近似、采样这种方式来获得更好的扩展性 最早简述大数据的四个维度处理范式是Mapreduce的批量处理,英特尔慢慢有其他的需求实时的流处理、多迭代的处理、图计算、即时查询等等新的范式百花齐放,最后万法归宗刚才王斌老师将讲的SAP的HANA本身就是数据管理和分析的融合,现在非常流行的Hadoop之后的SPARK就是把前面的各种范式進行了融合。 存储与内存的消长大数据第一个要解决把数据存储下来,后来发现要把它放到大的内存里进行处理获得实时性,接着在存储和内存之间现在又出现了闪存有闪存化甚至全闪存的存储,也有闪存化的内存把所有的计算在闪存里面处理,已经被微软、Facebook等等夶量使用大家可以预期,两年以后出现新的非易失性的闪存它的速度可能要比闪存快几百倍,和内存相似这又会极大地颠覆数据与機器的关系。

}

我要回帖

更多关于 简述大数据的四个维度 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信