数据预处理是数据操作过程的重要组成部分,它直接确定所有后续数据工作的质量和价值输出。从数据预处理的主要内容出发,包括数据的清理,转换,缩减,聚合,采样等。由于全部篇幅较长将12个条原则拆分成上、中、下三篇。
本3篇文章不讲技术只介绍业务思路,具体操作代码可以参考我的其他文章或者自行查询。
标准化,使数据落入同一范围
数据标准化是一种常用的数据预处理操作。目的是处理不同比例和维度的数据,以便可以将其缩放到相同的数据间隔和范围,从而减少比例,特征和分布差异对模型的影响。除了用于模型计算之外,标准化数据还具有直接计算和生成复合指标的含义,这是对指标进行加权的必要步骤。
Z-Score用于集中化和正态分布
基于原始数据的均值和标准偏差的标准化。假设原始转换后的数据为x,新数据为x',则x'=(x-mean)/ std,其中mean和std为其中x是列的均值和标准差。
此方法适用于大多数类型的数据,并且是许多工具的默认标准化方法。归一化后的数据为正态分布,平均值为0,方差为1。但是,ZScore方法是一种集中式方法,它将改变原始数据的分布结构,并且不适合处理稀疏数据。
在许多情况下,数据集将具有稀疏特征,其特征是标准偏差小以及许多元素的值为0.最常见的稀疏数据集是用于协作过滤的数据集,大多数数据为0 ,只有一小部分数据是1的稀疏数据的标准化不能集中进行,否则稀疏数据的结构将被破坏。
Max-Min标准化方法是线性转换原始数据。假设原始转换后的数据是x,新数据是x',则x'=(x-min)/(max-min),其中min和max是x是列的最小值和最大值。
这种标准化方法已被广泛使用,并且获得的数据将完全落在区间[0,1](Z分数没有类似的区间)内。该方法可以规范化数据并落入一定间隔内。同时,可以更好地维护原始数据结构。
MaxAbs用于稀疏数据
最大绝对值标准化(MaxAbs)是根据最大值的绝对值进行标准化。假设原始转换后的数据为x,新数据为x',则x'= x / | max |,其中max是该列的最大值,其中x是value。
MaxAbs方法类似于Max-Min用法,数据落入一定间隔,但此方法的数据间隔为[-1,1]。 MaxAbs还具有不破坏原始数据分发结构的特性,因此它也可以用于稀疏数据,稀疏CSR或CSC矩阵。
CSR(压缩稀疏行,行压缩)和CSC(压缩稀疏列,行压缩)是稀疏矩阵的两种存储格式。这两个稀疏矩阵在scipy.sparse包中被广泛使用。除了这两种格式,用于存储稀疏矩阵的格式还包括COO,CSR,DIA,ELL,HYB等。
适用于离群值的RobustScaler
在某些情况下,如果数据集中存在离群值,则可以使用Z-Score进行标准化,但是标准化数据并不理想,因为离群值的特征在标准化之后往往会失去离群值。此时,可以使用RobustScaler标准化离群值。此方法具有更强大的参数控制功能,可实现数据居中和数据缩放的鲁棒性。
离散化,操作数据的逻辑分层
所谓离散化是将无限空间中的有限个体映射到有限空间。数据离散化操作主要在连续数据上执行。处理后,数据值范围分布将从连续属性更改为离散属性。此属性通常包含两个或多个值范围。
离散化的必要性
1. 节省计算资源,提高计算效率。
2. 算法模型(尤其是分类模型)的计算需求。尽管决策树等许多模型可以支持连续数据的输入,但是决策树本身首先会将连续数据转换为离散数据,因此离散化转换是必不可少的步骤。
3. 增强模型的稳定性和准确性。数据离散化后,处于异常状态的数据将不会清楚地突出显示异常特征,但是会被分成子集的一部分。
时间数据离散化
离散时间。通常,时间戳会转换为秒,分钟,小时或早晨和下午。通常,日期会转换为星期数,星期几,月份,工作日或休息日,季度,年份等。
时间数据离散化可以将细粒度的时间序列数据离散化为粗粒度的三类数据:
1. 离散化为分类数据,例如上午和下午;
2. 离散化为连续数据,例如星期一,星期二,星期三;
3. 离散化是数字数据。例如,一年中有52周,而周数是数字数据。
多值离散数
多值离散数据的离散化指的是要进行离散化处理的数据本身不是数值型数据,而是分类或顺序数据。例如,用户收入变量的值最初可以分为10个间隔。根据新的建模要求,仅需要划分4个间隔,然后将原来的10个间隔合并。
为了离散化多值离散数据,除法逻辑可能存在问题,需要重新除法。此问题通常是由于业务逻辑的变化所致,导致原始数据中不同历史数据下的范围定义不同。例如,用户活动变量的值最初分为三类:高值,中值和低值。根据业务发展的需要,将新的用户活动变量的值定义为高值,中值,低值和负值。此时,有必要按照统一规则离散化不同类型的数据。
连续数据离散化
连续数据离散化是主要的离散化应用,在分类或关联分析中应用尤其广泛,这些算法的结果以类别或属性标识为基础,而非数值标记。例如,分类规则的典型结果逻辑是:如果变量1=值1并且变量2=值2那么目标变量(T)连续数据的离散化结果可以分为两类:一类是将连续数据划分为特定区间的集合,例如{(0,10],(10,20],(20,50],(50,100]};一类是将连续数据划分为特定类,例如类1、类2、类3;常见实现针对连续数据离散化的方法包括:
1. 分位数法:使用四分位数,五分位数,十分位数和其他分位数进行离散化。
2. 距离间隔方法:可以使用等距间隔或自定义间隔执行离散化。此操作更加灵活,可以满足自定义要求。另外,这种方法(尤其是等距间隔)可以更好地保持原始数据的分布。
3. 频率间隔法:根据不同数据的频率分布对数据进行排序,然后根据相等的频率或指定的频率离散化。此方法会将数据转换为均匀分布。好处是每个间隔中的观测值是相同的,但缺点是原始数据的分发状态已更改。
4. 聚类方法:例如,使用K均值将样本集划分为多个离散聚类。
5. 卡方:通过使用基于卡方的离散化方法,找到数据的最佳相邻间隔并合并以形成较大的间隔。
连续数据的二值化
在许多情况下,我们可能需要对变量特征进行二值化:将每个数据点与阈值进行比较,将大于阈值的值设置为固定值(例如1),将小于阈值的值设置为a固定值(例如0),然后获得只有两个值范围的二进制数据集。
二值化后的值设置取决于场景。例如,大多数数据处理可以设置为1或0。在图像处理中,将其设置为0或255。只要满足对后续数据和结果的识别,理解和应用,对如何设置就没有固定要求。二值化的前提是数据集中的所有属性值都表示相同或相似的含义。例如,通过读取图像获得的数据集是颜色值的集合(特定的颜色模式取决于读取图像时的模式设置,例如灰度,RGB等),因此每个数据点代表颜色,此时可以对整个数据集进行二值化处理。在某些情况下,也可能仅对特定列执行二值化,因此尽管不同列的属性不同,但同一列中生成的二值化结果仍然具有比较和分类的意义。
数据处理应考虑哪些运营业务因素
数据处理不仅取决于数据工作人员的经验,还取决于实际的运营业务因素。这种同时考虑了两种工作逻辑的工作方法将帮助数据工作人员避免出现弯路,并减少数据项目失败的可能性。它还将有助于提高数据工作的效率和输出,并真正使运营能够理解和应用数据来推动业务。
在数据处理期间应考虑的运营业务因素包括固定和意外的运营周期,运营要求的有效性,适合运营着陆场景的交付,专家经验,业务要求和其他可变因素。
经营业务的周期属性主要体现在两个方面:
1. 计划的周期:运营业务计划的制定具有明显的周期性法律,对于运营业务的执行也是如此。这种计划的周期通常包括不同级别的周期。例如,操作通常首先制定年度计划和季度计划,然后将其分解为月度计划,然后逐步将月度计划完善为每周和每日计划,并逐步跟踪它们。
2. 临时或意外周期:除了计划的操作周期外,事故的发生也会影响操作业务。例如,由于内部DBA的操作不当,数据库中的某些数据被删除,这直接影响了公司的正常销售和运营状态。发生这种情况的时间和影响时间通常是不确定的。
3. 运营业务的周期性特征对数据的影响:计划的运营周期对于数据的选择和分析非常重要,尤其是在比较(链比较,按年比较等)方面。是选择具有相同属性基础的比较周期的结论。计划的操作周期对时间序列特性的建模(包括时间序列,时间序列相关性,隐马尔可夫模型等)有很大的影响。这些算法和模型都需要具有明显序列状态相关性的数据。使用此类算法需要将操作周期的属性与算法和应用程序的属性进行匹配。
在不同周期中生成的数据可能会有所不同,尤其是对于新公司的快速发展。不同周期中的数据可能具有明显的线性,指数,二项式和其他变化特征,甚至可能包含由业务因素引起的异常。数据点。
操作过程中可能会产生意外的数据工作要求,例如对异常事件的临时分析,并且由于无法提前进行目标数据的分发,跟踪和收集,这些要求可能会导致数据不完整或根本没有有效数据。执行分析。
数据工作的整个过程都需要业务业务人员的参与,而且依赖业务业务人员的参与时间以及相应的方法和切入点也很重要。例如,当正常的业务工作非常繁重甚至无法摆脱困境时,如果业务需要过多地参与数据工作,势必会在业务方面形成很大的阻力。目前,需要更多的数据自动化和程序工作模式。
考虑运营要求的有效性
在实际开始数据工作项目之前,通常会有多个通信,反馈,验证和映射过程。这些操作的目的是根据业务需求,数据的实际状态以及数据工作本身的局限性,全面考虑操作需求是否有效。 。数据工作者不一定需要承担所有操作数据要求。他们可能拒绝或延迟处理某些要求的主要原因如下:
1. 数据不足:现有数据无法满足运营商的数据分析需求。一个典型的案例是应对紧急情况时的数据分析需求。
2. 需求不合理:经核实,发现经营者提出的需求不合理,或不能用数据得出结论。例如,运营商需要分析客户对新产品的期望。除了市场和客户研究之外,这种需求基本上是无法实现的,因为期望本身无法用数据来衡量。
3. 有条件的限制:尽管操作员的要求是合理的,但是无法达到主观和客观条件,例如现有服务器,算法,技术和经验。例如,该操作建议从监视视频中获得整个人的离线商店中浏览,查看和购买商品的所有轨迹行为,由于缺乏相应的技术和经验而无法实现。
4. 资源限制:当前数据工作已完全加载,无法并行执行更多工作。
5. 低价值需求:运营商可以满足自己的基本需求。在许多情况下,操作员会很懒惰。基本的数据访问,查询,统计和分析都由数据工作人员完成。对于这些简单且常用的工作内容,由于它们属于数据工作的类别,因此大多数数据工作人员将获得执行。这些工作固然有价值,但要真正最大化数据工作者的价值,我们不能仅仅关注这些内容。这些基本任务可以通过可视化报告,自动邮件和数据工作文化培养逐渐从数据工作中分离出来,或者逐渐减少内容比率。通过这种方式,可以将更多资源应用于潜在法律,预测性和探索性知识的发现。
对于满足以上特征的数据场景,数据工作人员需要仔细考虑是否继续投入资源,必须及时提出需要拒绝的资源,以免造成数据工作项目失败,降低数据工作的价值。
考虑交付时,应适合作战着陆现场
尽管数据处理只是一个中间过程,但尚未到达数据分析,建模,部署和应用的后期阶段,但是此阶段的许多工作将直接影响以后的交付和操作。
典型因素包括:
1. 保持原始指标:以后需要使用原始业务指标(变量),以促进业务理解和应用。如果有类似的要求,则数据转换方法不能用于数据处理(如降维),应根据实际情况以多种方式选择维或不选择降维。
2. 更易于理解的算法模型:某些运算符可能更“严肃”,将非常重视算法模型的实现过程。如果使用无法解释特定过程的算法(例如神经网络的实现过程)或难以理解的算法(例如SVM中的超平面),则此类运算符通常会怀疑算法的有效性和正确性。数据工作。此时,选择一个更易于理解的算法模型(例如决策树,线性回归等)比算法的准确性和及时性更为重要。在数据处理过程中,应针对这些易于理解的模型进行目标数据处理。
3. 数据生产和应用环境:如果数据工作项目的结果不是分析或挖掘报告,则需要以编程方式执行,因此交付通常是代码或脚本。当数据处理程序发布并联机时,应尽可能使用生产和应用程序中的现有模块,环境,库,语言和版本,以减少附加部署,开发和维护的工作量。
不要忽视业务专家的经验
1. 数据工作方向:数据工作方向是指在整个数据工作项目中需要完成的工作,输出是什么,应该考虑中间过程的方向等。这些内容集中在“什么”上。这些内容直接来自业务专家的经验,受影响的主要数据工作内容包括:数据项目的工作目标和要求;
数据探索和指导;可交付数据的形式和规格。
2. 数据工作逻辑:数据工作逻辑是指业务人员可以根据数据工作本身向数据工作者提供的价值参考和工作建议。这些内容集中于“如何做”。受影响的主要数据工作链接包括:选择总体数据周期,规则,条件等;数据抽样规则,特别是分层抽样和整群抽样;集成,匹配和关联多个数据;不同数据源和数据之间的清洗和转换逻辑;重复值,离群值和缺失值的处理逻辑;数据离散化的方法选择和区间定义;选择数据变量并根据其重要性降低维数;数据算法和模型选择;调整,评估和优化数据模型。
如果您只擅长运营,那么这就是纯粹的业务属性价值点。如果您只擅长数据,则这是纯数据属性值点。只有同时具有业务+数据的双重属性,才能实现真正的“分析”。成功的数据工作必须是两条腿走路的数据+操作!
考虑业务需求的变化
业务需求的变化主要来自业务环境的变化或业务需求本身的变化。前者是由于客观环境的变化导致业务需求的变化,而后者则是由于经营业务本身的主观环境引起的。
在数据工作项目中,不断变化的需求将影响整个数据工作的所有链接。业务需求的频繁更改会给数据工作带来极大的困扰,甚至可能直接导致数据工作项目的失败。因此,数据处理必须考虑业务需求的变化。无法预测涉及客观环境的变化,并且在许多情况下可以预先准备业务主观思维的变化:
1. 充分有效的沟通。沟通是建立持久稳定关系的重要方式。在开始数据项目上的工作之前,数据工作人员一定不能因为麻烦而跳过此步骤。有必要邀请相关的直接需求业务人员,业务负责人和数据提供者(通常对应于业务数据管理员)进行正式会议进行沟通。同时,为避免口头表达和理解会议通讯时出现误解,有必要在每次会议后写下会议记录,并找到相应人员进行确认,并复制到会议记录中。多方领导要使各方注意并认真考虑沟通和实施的内容。
2. 更完整和原始的数据集。在选择和处理数据集时,应在时间,维度,来源等方面覆盖更多数据,并放宽甚至取消业务给定的数据过滤条件,这可以减少重复访问工作并使所有后续处理的需求降至最低程序。次要调整影响;为了减少数据量,请尝试优先选择直接选择而不是转换,以最大程度地满足企业对原始数据维度和指标的需求。
3. 具有较强的可理解性和清晰规则的算法和模型。在确保一定程度的模型准确性的情况下,请优先选择具有较强可理解性和清晰规则的算法和模型,以减少由于业务不了解而导致的返工或着陆失败。
4. 模块化工作方式。在大多数过程数据工作中,我们发现可以重复使用工作内容的许多基本功能模块。这意味着,如果我们需要第一次开发10个模块,那么我们可能仅需要第二次开发5个其他模块。五个模块可重复用于首次开发。第三次,只能开发三个附加模块。以此类推,随着项目的增加,越来越多的功能模块可以重复使用。尽管根据不同的场景和数据,同一模块将具有不同的实现方法,参数等,但这只是对原始模块的优化和升级。稍后阶段将形成更通用,更完整和更复杂的内容。具有使用功能的功能模块。这些功能模块不仅可以用来提高数据项目的效率,而且可以有效地响应业务需求的个性化和灵活需求的变化。
5. 建立数据工作流程和机制
6. 没有规则就没有标准。所有数据工作都应具有相应的流程和机制,以确保其正常运行。对于数据工作流程,有必要建立一个从数据需求到数据着陆的完整流程,其中需要包括响应需求变化的时间,频率,方法,范围和影响规范,以及批准和授权系统。 (必须得到相应的批准。人员和领导同意),以便可以实施该系统。当然,仅靠系统是不够的,更重要的是要依靠实施!
内容扩展:预处理非结构化数据
网页数据分析
根据要爬网的实际数据,分析可能会生成哪些字段,将发生哪些冲突,包含关系以及相关效应。
业务常识分析
Web用户日志解析Web用户日志是一种非结构化数据。解析方法需要根据不同服务器和跟踪实现的自定义模块。
图像的基本预处理
主要内容包括:图片翻译、图像旋转、透视变换、转换为灰度图像、边缘检测、二进制图像、图像平滑、形态处理
自然语言文本预处理
1. 基本处理:根据不同的文本数据源,可能涉及的基本文本处理包括:删除无效标签,编码转换,文档分段,基本错误纠正,删除空格,统一大写,删除标点,删除停用词以及保留特殊字符。
2. 删除无效标签:例如,从网页的源代码获得的文本信息包含HTML标签。此时,应提取特定标签的内容,并删除标签。
3. 编码转换:不同的编码转换对中文处理的影响更大,例如UTF-8,UTF-16,GBK,GB2312等之间的转换。
4. 文档分割:如果要获取包含多个文件的单个文档,则需要执行单独的分割以分离不同的文档。
5. 基本错误更正:更正常见短语中的错误,例如文本和特定场景中的人物姓名和地名。
6. 删除空格:需要删除文本中可能包含的大量空格和空白行。
7. 大小写统一:将文本中的英文统一为大写或小写。
8. 删除标点符号:删除句子中的标点符号,特殊符号等。
9. 停用词:常见的停用词包括在上方,下方,上方,上方等的、、、、和。
10. 保留特殊字符:在某些情况下,可能仅需要处理中文字符,英文或数字,而其他字符则需要过滤掉。
分词
分词是根据一定的逻辑将一系列连续的字符串分成单独的单词。在英语中,单词之间的空格用作自然定界符;在中文中,只有单词,句子和段落可以用明显的定界符简单地定界,但作为单词,则没有正式的定界符。因此,中文分词比英语和其他语言更加困难和复杂。对于复杂的中文分词,常用的分词方法包括最大匹配法,反向最大匹配法,双向匹配法,最佳匹配法,关联回溯法等。
文本到矢量(word2ver)
人们通常使用向量空间模型来描述文本向量,即文档被用作一行,并且在分词之后获得的词(向量空间模型中的词称为向量,也称为特征,维或维)用作列,矩阵的值为。它是通过字频统计算法获得的值。这种空间矢量模型也称为文档特征矩阵。
内容概要:本章介绍了数据操作过程中的12种数据预处理经验,涵盖了常见的数据清洗,徽标转换,数据降维,样本不平衡,数据源冲突,采样,共线性和相关性分析,数据标准化,数据离散化,等等,最后提出了运营业务对数据处理的影响和对策。扩展内容简要介绍了网页,日志,图像和自然语言的文本预处理。
客观地说,本章的每个部分都非常重要。原因是没有对所有内容的单一答案。要求读者根据不同的情况进行判断,然后选择最合适的处理方法。因此,掌握每种方法的适用条件以及如何区分其应用前提是关键。