数据准备在你的工作流程中起着重要作用。你需要以一种计算机能够处理的方式来转换数据。
数据预处理的步骤
任何数据库都是一个数据对象的集合。你也可以称它们为数据样本、事件、观察或记录。然而,它们中的每一个都是借助于不同的特征来描述的。在数据科学的行话中,它们被称为属性或特征。
在用这些特征建立模型之前,数据预处理是一个必要的步骤。
_(1).jpg)
它通常分阶段进行。让我们仔细看看它们中的每一个:
数据质量评估
首先,你需要好好看看你的数据库,进行一次数据质量评估。一个随机收集的数据往往有不相关的位子。这里有一些例子。
数据类型不匹配
很多时候,你可能把使用不同数据格式的数据集混在一起。因此,不匹配:整数与浮点数或UTF8与ASCII。
数据数组的不同维度
当你从不同的数据集汇总数据时,例如,从五个不同的数据数组中进行语音识别,其中一个数组中存在的三个字段可能在其他四个数组中缺失。
数据值的混合
让我们想象一下,你有数据,从两个独立的来源收集。结果,性别字段有两个不同的女性值:女人和女性。
为了清理这个数据集,你必须确保在数据集中使用相同的名称作为描述符(在我们的例子中可以是女性)。
数据集中的离群值
在纽约200年的每日温度观测中,有几天的夏季温度非常低。
离群值是非常危险的。它们会强烈影响机器学习模型的输出。通常,研究人员会评估异常值,以确定每个特定记录是数据收集中的错误造成的,还是数据处理中应该考虑的独特现象。
缺失的数据
你可能还会注意到一些重要的数值缺失。这些问题是由于人为因素、程序错误或其他原因造成的。它们会影响预测的准确性,所以在进一步处理数据库之前,你需要做数据清理。
为什么我们需要预处理数据?
通过预处理数据,我们。
- 使我们的数据库更加准确。 我们消除由于人为因素或错误而存在的不正确或缺失的数值。
- 提升一致性。 当数据存在不一致或重复时,会影响到结果的准确性。
- 使数据库更加完整。 如果需要的话,我们可以填补那些缺失的属性。
- 平滑数据。 这样我们就能让它更容易使用和解释。
数据清洗
数据清理的目的是为机器学习提供简单、完整、清晰的例子集。
缺失的数据
当你的数据集中有缺失数据的情况是很常见的。在这种情况下,你要寻找额外的数据集或收集更多的观测数据。
当你把两个或更多的数据集串联到一个数据库中以获得更大的训练集时,一些数据字段的不匹配是很常见的。
当不是所有的字段都在连接的海量数据中得到体现时,最好在合并之前提前删除这些字段。
该怎么做: 如果数据库的任何一行或一列有超过50%的值丢失,你必须删除整个行/列,除非有可能填补丢失的值。
想象一下,你做了一个关于Haskell爱好者的数据库。有几条记录的性别列的值是缺失的。尼,简,朱莉娅,和海伦。在这种情况下,研究人员可以根据他们的结论来添加缺失的数据。然而,这种方法有缺陷,模型要承担不准确的风险。
噪声数据
大量额外的无意义的数据被称为噪音。
_(1).jpg)
这可以是
- 重复的或半重复的数据记录。
- 对某项研究没有价值的数据段。
- 每个变量的不必要的信息字段。
一个例子是当你需要知道这个人是否讲英语。但你有一整套的特征,包括他们眼睛的颜色、鞋子的大小、脉搏和血压等等。
你可以应用以下方法之一来解决这个问题。
- 分选。如果你有一个分类的数据池,就使用分选。将所有的数据分成大小相同的小段,并在每段上分别应用你的数据集准备方法。例如,你可以将年龄的值分为21-35岁、36-59岁、60-79岁等类别。
- 回归。回归分析有助于决定哪些变量确实有影响。应用回归分析来平滑大量的数据。这将允许你只处理关键特征,而不是试图分析大量的变量。在我们关于回归的文章中,你可以了解更多关于如何一步步进行回归分析的信息。
- 聚类。最后,你可以应用聚类算法对数据进行分组。在这里,你需要小心处理离群值。
离群点是与其他领域不同的奇异数据点。
_(1).jpg)
重要的是,不要把离群值当作噪声来替代。例如,我们正在建立一个算法,将不同种类的苹果分类出来。在我们的数据集中,我们可以遇到两种类型的离群值。
- 图片中含有菠萝和猕猴桃等异国水果。它们可能是由于抽样错误而在你的数据中发现的,代表你的数据集中的噪音。
- 也可能有一些 "奇怪的苹果 "的照片,例如,它们有一个奇怪的形状。当我们的目标是教机器识别苹果的种类时,与群体的偏差是很重要的。这样的离群值将有助于教会ML模型识别特殊字符,提高预测的准确性。
当我们谈论的不是像苹果和菠萝这样明显的东西时,要决定这个项目是重要的还是只是噪音是相当复杂的。在这里,数据科学家的专业知识对ML建模的成功有很大影响。
数据转换
事实上,通过清理和平滑数据,我们已经进行了数据修改。然而,通过数据转换,我们理解的是将数据变成适当的格式供计算机学习的方法。
例子。为了研究全球的雾霾,你有关于风速的数据。然而,数据得到了混合,我们有三种变体的数字:米/秒、英里/秒和公里/小时。我们需要将这些数据转换为相同的尺度,以便进行ML建模。
以下是数据转换或数据缩放的技术。
聚合
在数据聚合的情况下,数据被汇集在一起,并以统一的格式呈现,用于数据分析。
与大量高质量的数据一起工作,可以从ML模型中获得更可靠的结果。
如果我们想建立一个模拟文森特-凡高风格的神经网络算法,我们需要尽可能多地提供这位著名艺术家的画作,以提供足够的训练材料。这些图像需要有相同的数字格式,我们将使用数据转换技术来实现这一点。
归一化
归一化可以帮助你在一个范围内缩放数据,以避免在训练和/或执行数据分析时建立不正确的ML模型。如果数据范围很宽,就很难对数字进行比较。通过各种规范化技术,你可以对原始数据进行线性转换,执行十进制缩放或Z-score规范化。
例如,为了比较X市的人口增长(100多万公民)和Y市的1千名新公民,我们需要将这些数字归一化。
_(1).jpg)
特征选择
特征选择是指在数据中选择对我们想要预测的变量有最佳预测作用的变量。
_(1).jpg)
如果有很多特征,那么分类器的操作时间就会增加。此外,预测的准确性往往会下降。尤其是当数据中存在大量的垃圾特征(与目标变量不相关)。在机器学习大师博客中,你可以学习如何为你的ML数据库进行特征选择。
分散化
在离散化过程中,程序员将数据转换为小区间的集合。例如,将人们归入 "年轻"、"中年"、"老年 "等类别,而不是用连续的年龄值工作。细化有助于提高效率。
概念层次的生成
如果你使用概念层次的生成方法,你可以在没有指定的属性之间生成一个层次结构。例如,如果你有包括街道、城市、省和国家的位置信息,但它们没有层次顺序,这种方法可以帮助你转换数据。
归纳法
在泛化的帮助下,有可能将低级别的数据特征转换为高级别的数据特征。例如,房屋地址可以被概括为更高层次的定义,如城镇或国家。
数据缩减
当你处理大量的数据时,想出可靠的解决方案会变得更加困难。数据缩减可以用来减少数据量,降低分析成本。
研究人员在处理言语数据集时,确实需要数据还原。大规模的阵列包含说话人的个别特征,例如,插话和填充词。 在这种情况下,巨大的数据库可以减少到一个有代表性的抽样来进行分析。
下面是一些减少数据的技术。
属性特征选择
数据转换的技术也可用于数据减少。如果你为了使数据挖掘过程更有效率而结合给定的特征构建一个新的特征,这就叫做属性选择。例如,可以将男性/女性和学生的特征构建为男性学生/女性学生。如果我们对有多少男性和/或女性是学生进行研究,但他们的学习领域并不引起我们的兴趣,这就很有用。
降维
用来解决现实生活中的任务的数据集有大量的特征。计算机视觉、语音生成、翻译和许多其他任务不能为了质量而牺牲操作速度。可以使用降维来削减使用的特征数量。
_(1).jpg)
数值减少
数值缩减是一种数据缩减的方法,它用较小的数据表示形式取代原始数据。有两种类型的数值缩减方法--参数化和非参数化。
参数化方法
参数方法使用模型来表示数据。通常情况下,回归被用来建立这种模型。