机器学习中的数据清洗与特征处理综述

随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富。通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向。目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐、筛选排序、搜索排序、用户建模等等,为公司创造了巨大的价值。

本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法。主要内容已经在内部公开课”机器学习InAction系列”讲过,本博客的内容主要是讲座内容的提炼和总结。

如上图所示是一个经典的机器学习问题框架图。数据清洗和特征挖掘的工作是在灰色框中框出的部分,即“数据清洗=>特征,标注数据生成=>模型学习=>模型应用”中的前两个步骤。灰色框中蓝色箭头对应的是离线处理部分。主要工作是-从原始数据,如文本、图像或者应用数据中清洗出特征数据和标注数据。-对清洗出的特征和标注数据进行处理,例如样本采样,样本调权,异常点去除,特征归一化处理,特征变化,特征组合等过程。最终生成的数据主要是供模型训练使用。

灰色框中绿色箭头对应的是在线处理的部分。所做的主要工作和离线处理的类似,主要的区别在于1.不需要清洗标注数据,只需要处理得到特征数据,在线模型使用特征数据预测出样本可能的标签。2.最终生成数据的用处,最终生成的数据主要用于模型的预测,而不是训练。在离线的处理部分,可以进行较多的实验和迭代,尝试不同的样本采样、样本权重、特征处理方法、特征组合方法等,最终得到一个最优的方法,在离线评估得到好的结果后,最终将确定的方案在线上使用。另外,由于在线和离线环境不同,存储数据、获取数据的方法存在较大的差异。例如离线数据获取可以将数据存储在Hadoop,批量地进行分析处理等操作,并且容忍一定的失败。而在线服务获取数据需要稳定、延时小等,可以将数据建入索引、存入KV存储系统等。后面在相应的部分会详细地介绍。

本文以点击下单率预测为例,结合实例来介绍如何进行数据清洗和特征处理。首先介绍下点击下单率预测任务,其业务目标是提高团购用户的用户体验,帮助用户更快更好地找到自己想买的单子。这个概念或者说目标看起来比较虚,我们需要将其转换成一个技术目标,便于度量和实现。最终确定的技术目标是点击下单率预估,去预测用户点击或者购买团购单的概率。我们将预测出来点击或者下单率高的单子排在前面,预测的越准确,用户在排序靠前的单子点击、下单的就越多,省去了用户反复翻页的开销,很快就能找到自己想要的单子。离线我们用常用的衡量排序结果的AUC指标,在线的我们通过ABTest来测试算法对下单率、用户转化率等指标的影响。

在确定好要使用哪些数据之后,我们需要对使用数据的可用性进行评估,包括数据的获取难度,数据的规模,数据的准确率,数据的覆盖率等,-数据获取难度例如获取用户id不难,但是获取用户年龄和性别较困难,因为用户注册或者购买时,这些并不是必填项。即使填了也不完全准确。这些特征可能是通过额外的预测模型预测的,那就存在着模型精度的问题。-数据覆盖率数据覆盖率也是一个重要的考量因素,例如距离特征,并不是所有用户的距离我们都能获取到。PC端的就没有距离,还有很多用户禁止使用它们的地理位置信息等。用户历史行为,只有老用户才会有行为。用户实时行为,如果用户刚打开app,还没有任何行为,同样面临着一个冷启动的问题。-数据的准确率单子质量,用户性别等,都会有准确率的问题。

Ok,在选定好要用的特征之后,我们需要考虑一个问题。就是这些数据从哪可以获取?只有获取了这些数据我们才能用上。否则,提一个不可能获取到的特征,获取不到,提了也是白提。下面就介绍下特征获取方案。-离线特征获取方案离线可以使用海量的数据,借助于分布式文件存储平台,例如HDFS等,使用例如MapReduce,Spark等处理工具来处理海量的数据等。

出于性能考虑。在粗排阶段,使用更基础的特征,数据直接建入索引。精排阶段,再使用一些个性化特征等。

特征数据只有在和标注数据合并之后,才能用来做为模型的训练。下面介绍下如何清洗标注数据。主要是数据采样和样本过滤。

数据采样,例如对于分类问题:选取正例,负例。对于回归问题,需要采集数据。对于采样得到的样本,根据需要,需要设定样本权重。当模型不能使用全部的数据来训练时,需要对数据进行采样,设定一定的采样率。采样的方法包括随机采样,固定比例采样等方法。

除了采样外,经常对样本还需要进行过滤,包括-1.结合业务情况进行数据的过滤,例如去除crawler抓取,spam,作弊等数据。-2.异常点检测,采用异常点检测算法对样本进行分析,常用的异常点检测算法包括-偏差检测,例如聚类,最近邻等。-基于统计的异常点检测算法例如极差,四分位数间距,均差,标准差等,这种方法适合于挖掘单变量的数值型数据。全距(Range),又称极差,是用来表示统计资料中的变异量数(measuresofvariation),其最大值与最小值之间的差距;四分位距通常是用来构建箱形图,以及对概率分布的简要图表概述。-基于距离的异常点检测算法,主要通过距离方法来检测异常点,将数据集中与大多数点之间距离大于某个阈值的点视为异常点,主要使用的距离度量方法有绝对距离(曼哈顿距离)、欧氏距离和马氏距离等方法。-基于密度的异常点检测算法,考察当前点周围密度,可以发现局部异常点,例如LOF算法

在分析完特征和标注的清洗方法之后,下面来具体介绍下特征的处理方法,先对特征进行分类,对于不同的特征应该有不同的处理方法。

根据不同的分类方法,可以将特征分为(1)Lowlevel特征和Highlevel特征。(2)稳定特征与动态特征。(3)二值特征、连续特征、枚举特征。

Lowlevel特征是较低级别的特征,主要是原始特征,不需要或者需要非常少的人工处理和干预,例如文本特征中的词向量特征,图像特征中的像素点,用户id,商品id等。Lowlevel特征一般维度比较高,不能用过于复杂的模型。Highlevel特征是经过较复杂的处理,结合部分业务逻辑或者规则、模型得到的特征,例如人工打分,模型打分等特征,可以用于较复杂的非线性模型。Lowlevel比较针对性,覆盖面小。长尾样本的预测值主要受highlevel特征影响。高频样本的预测值主要受lowlevel特征影响。

在对特征进行分类后,下面介绍下对特征常用的处理方法。包括1.特征归一化,离散化,缺省值处理。2.特征降维方法。3.特征选择方法等。

在介绍特征降维之前,先介绍下特征升维。在机器学习中,有一个VC维理论。根据VC维理论,VC维越高,打散能力越强,可容许的模型复杂度越高。在低维不可分的数据,映射到高维是可分。可以想想,给你一堆物品,人脑是如何对这些物品进行分类,依然是找出这些物品的一些特征,例如:颜色,形状,大小,触感等等,然后根据这些特征对物品做以归类,这其实就是一个先升维,后划分的过程。比如我们人脑识别香蕉。可能首先我们发现香蕉是黄色的。这是在颜色这个维度的一个切分。但是很多东西都是黄色的啊,例如哈密瓜。那么怎么区分香蕉和哈密瓜呢?我们发现香蕉形状是弯曲的。而哈密瓜是圆形的,那么我们就可以用形状来把香蕉和哈密瓜划分开了,即引入一个新维度:形状,来区分。这就是一个从“颜色”一维特征升维到二维特征的例子。

那问题来了,既然升维后模型能力能变强,那么是不是特征维度越高越好呢?为什么要进行特征降维&特征选择?主要是出于如下考虑:1.特征维数越高,模型越容易过拟合,此时更复杂的模型就不好用。2.相互独立的特征维数越高,在模型不变的情况下,在测试集上达到相同的效果表现所需要的训练样本的数目就越大。3.特征数量增加带来的训练、测试以及存储的开销都会增大。4.在某些模型中,例如基于距离计算的模型KMeans,KNN等模型,在进行距离计算时,维度过高会影响精度和性能。5.可视化分析的需要。在低维的情况下,例如二维,三维,我们可以把数据绘制出来,可视化地看到数据。当维度增高时,就难以绘制出来了。在机器学习中,有一个非常经典的维度灾难的概念。用来描述当空间维度增加时,分析和组织高维空间,因体积指数增加而遇到各种问题场景。例如,100个平均分布的点能把一个单位区间以每个点距离不超过0.01采样;而当维度增加到10后,如果以相邻点距离不超过0.01小方格采样单位超一单位超正方体,则需要10^20个采样点。

正是由于高维特征有如上描述的各种各样的问题,所以我们需要进行特征降维和特征选择等工作。特征降维常用的算法有PCA,LDA等。特征降维的目标是将高维空间中的数据集映射到低维空间数据,同时尽可能少地丢失信息,或者降维后的数据点尽可能地容易被区分-PCA算法通过协方差矩阵的特征值分解能够得到数据的主成分,以二维特征为例,两个特征之间可能存在线性关系(例如运动的时速和秒速度),这样就造成了第二维信息是冗余的。PCA的目标是发现这种特征之间的线性关系,并去除。

主要分为产生过程,评估过程,停止条件和验证过程。

其他如双向搜索(BDS,BidirectionalSearch),序列浮动选择(SequentialFloatingSelection)等

随机算法共同缺点:依赖随机因素,有实验结果难重现。

在发现特征出现异常时,我们会及时采取措施,对服务进行降级处理,并联系特征数据的提供方尽快修复。对于特征数据生成过程中缺乏监控的情况也会督促做好监控,在源头解决问题。

THE END
1.机器学习:开启智能未来的钥匙腾讯云开发者社区机器学习作为人工智能的核心方法,通过分析数据中的隐藏规律,让计算机从中获取新的经验和知识,不断提升和改善自身性能,从而像人一样根据所学知识做出决策。https://cloud.tencent.com/developer/article/2478495
2.人工智能基础知识速成一、机器学习概念与原理 什么是机器学习? 机器学习是人工智能的一个分支,通过从数据中学习和改进算法,使计算机系统在没有明确编程的情况下也能够自动地学习和改进。机器学习是一种实现人工智能的技术手段,能够让计算机“自我学习”,从而实现更准确的预测和决策。 https://www.jianshu.com/p/90fcb8dc2b95
3.机器学习找不到创新点?三种特征选择的方法包你拿下顶会!最近特征选择特别火!多次荣登各大期刊会议,例如登上Nature子刊bGGO、计算效率狂提98%的FSFS……妥妥的机器学习领域热门创新点! 通过从原始特征集中精心挑选出最相关、最有用的特征,能够显著提高模型的准确性,大大减少了过拟合的风险,降低了计算成本。 特征选择的主流策略涵盖了过滤法、包裹法、嵌入法等多种方法。为https://www.bilibili.com/read/cv40067807
4.人工智能机器学习深度学习这一系列主要分享Iran Goodfellow&Yoshua Bengo《深度学习》的阅读总结。 人工智能、机器学习以及深度学习的关系人工智能,在Dartmouth会议的定义:学习或者智能的任何特性都能够被精确地加以描述,使得机器可…https://zhuanlan.zhihu.com/p/8976535645
5.机器学习知识:机器学习中的离线训练与在线推理其次,在离线训练中,模型的参数和超参数是可以不断进行调节和优化的,而在线推理中,则需要将训练好的模型固定下来不再进行修改。最后,离线训练和在线推理都需要考虑时间和计算资源的限制,从而在算法和模型上进行优化。 四、结语 离线训练和在线推理都是机器学习中非常重要的领域,这两个领域的发展直接关系到机器学习技术https://wenku.baidu.com/view/269b3033862458fb770bf78a6529647d2728349d.html
6.机器学习:在线学习和离线学习区别机器学习中的在线学习(Online Learning)和离线学习(Offline Learning)是两种不同的学习方式,它们在数据处理和模型更新方面有着明显的区别。以下是它们的主要区别: 数据获取方式: 在线学习:在在线学习中,模型是不断地从数据流中接收新的样本并进行学习。这意味着模型会随着时间的推移不断更新,以适应新的数据。 https://blog.csdn.net/weixin_41194129/article/details/132998721
7.机器学习RLHF:在线方法与离线算法在大模型语言模型校准中的博弈基于人类反馈的强化学习(Reinforcement Learning from Human Feedback,简称RLHF)作为一种有效的校准方法,已逐渐在GPT-4、ChatGPT等先进模型中展现出其独特优势。然而,随着离线对齐算法的迅速崛起,RLHF所面临的挑战也日益严峻。本文将从RLHF的基本概念入手,探讨在线方法与离线算法在大型语言模型校准中的优劣,并通过实验https://developer.aliyun.com/article/1542161
8.强化学习离线模型离线模型和在线模型强化学习离线模型 离线模型和在线模型 在推荐算法领域,时常会出现模型离线评测效果好,比如AUC、准召等指标大涨,但上线后业务指标效果不佳,甚至下降的情况,比如线上CTR或CVR下跌。 本文尝试列举一些常见的原因,为大家排查问题提供一点思路。 1. 离线、在线特征不一致https://blog.51cto.com/u_14499/11815202
9.2020届计算机科学方向毕业设计(论文)阶段性汇报CUDA中对于统一内存寻址的实现以及原本CUDA处理内存问题的对比。 郝琰 三维特征点提取的前期实验调查 本次汇报介绍了用于三维特征点提取的机器学习方法和传统几何方法的实验结果对比。 金之涵 二次分配问题中的组合构型第一次汇报 Monge矩阵和Kalmanson矩阵中最小哈密顿圈有通解。事实上,Monge矩阵可以被刻画为二阶差分非https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
10.从8个维度全面比较机器学习算法不同的 ML 算法会有不同的偏差 - 方差权衡,偏差误差来自于模型偏向于特定解或假设的事实。例如,在非线性数据上拟合线性决策边界时,偏差较大。另一方面,是方差测量模型方差带来的误差,它是模型预测与期望模型预测的均方差。 5. 在线和离线 在线和离线学习是指机器学习软件学习更新模型的方式。在线学习意味着可以一次https://time.geekbang.org/column/article/226084
11.网站工具。涉及大数据几大组件Python机器学习和数据分析学习记录的一些笔记,以及所看得一些电子书eBooks、视频资源和平常收纳的一些自己认为比较好的博客、网站、工具。涉及大数据几大组件、Python机器学习和数据分析、Linux、操作系统、算法、网络等 - josonle/Coding-Nowhttps://github.com/josonle/Coding-Now/
12.机器学习,能为5G通信技术带来哪些新挑战?强化学习是基于智能体与外部环境之间的动态交互,可以在线处理数据。智能体通过探索环境和奖励或惩罚行为来学习,并以最佳行动序列优化累积奖励。 图一:人工智能,机器学习,监督学习,无监督学习,强化学习之间的关系 3、机器学习在5G通信中的应用 近年来,全球研究人员对利用机器学习发展5G通信技术表现出了极大的兴趣。接下来https://www.xakpw.com/single/31167
13.蚂蚁金服新计算实践:基于Ray的融合计算引擎架构蔡芳芳随着计算和 AI 体系逐步成熟,我们希望机器学习应用能更多地在动态环境下运行、实时响应环境中的变化,这推动了机器学习从传统离线学习逐渐向在线学习演进。相比于传统的离线机器学习,在线学习可以带来更快的模型迭代速度,让模型预测效果更贴真实情况,对于线上的波动更加敏锐。https://www.infoq.cn/article/ualTzk5OwDb1crVHg7c1
14.机器学习与微博:TensorFlow在微博的大规模应用与实践微博机器学习平台承担了离线训练和在线预测任务。微博实时产生的文本、图片、视频显示后转入后台,用于提取特征、离线训练。 越来越多的业务使用深度学习方法,TensorFlow/Caffe 框架被集成进来。 离线训练主要使用 GPU 机群。由于业务增长过快,计算机群有一部分来自阿里云。 https://36kr.com/p/1721923682305
15.FEM前沿研究:智能工业数据解析与优化—论文—科学网已有的建模方法多为静态建模,当工况发生改变时,需要人工离线对模型进行调整,无法满足工业系统的实时、快速需求。针对时变的生产工况,将系统优化与数据解析相结合,通过学习、预测、反馈、调整,提出带有反馈闭环结构的优化模型在线调整方法,对模型参数进行自适应修正并对优化方案进行重新调整和再优化。https://news.sciencenet.cn/htmlpaper/2021/7/20217151683757164957.shtm
16.机器学习方法在数字芯片设计中的应用电子创新网Imgtec社区随着深度学习的概念深入人心,相比于传统方法,机器学习(ML, Machine learning)的方法对于处理NP-complete问题提供了一整套新的解决方案。芯片设计过程可以看成不断的伴随着从一个step到另外一个step的抽象化任务模型建模的过程,其方法论在半导体发展的过程中不断的完善,汇集了种类繁多的各种抽象化模型任务,几乎可以包含所https://imgtec.eetrend.com/blog/2022/100565005.html
17.大数据与人工智能学习中心《人工智能应用基础》、《机器学习技术应用》、《深度学习技术应用》、《计算机视觉技术应用》、《自然语言处理》。 (4)主要特色 以真实的专业领域工程问题为依托,结合在线学习平台,智能终端实训套件及项目应用环境,将多学科交叉项目与应用场景结合起来,让学生在工程实践过程中主动学习和建构“AI + X”产业知识,从而培https://www.mitu.cn/wzxy/dsjyrgznxxzx/list.htm
18.机器学习平台可视化建模模型部署深度学习机器学习机器学习平台覆盖算法开发、模型训练评估、在线推理预测建模全流程。 有效支撑数据智能化分析场景,赋能企业AI转型升级。https://sf.163.com/product/ml
19.一文看懂什么是强化学习?(基本概念+应用嘲+主流算法)在线学习 VS 离线学习 详细请查看《强化学习方法汇总》 百度百科和维基百科 百度百科版本 强化学习(reinforcement learning),又称再励学习、评价学习,是一种重要的机器学习方法,在智能控制机器人及分析预测等领域有许多应用。 但在传统的机器学习分类中没有提到过强化学习,而在连接主义学习中,把学习算法分为三种类型,https://easyai.tech/ai-definition/reinforcement-learning/