机器学习的数据准备
本部分详细介绍了如何理解传入的数据并对数据的性质和质量建立基本的了解。这些信息反过来有助于选择模型,然后如何应用模型。因此,本部分传授的知识可帮助初学者迈出有效建模和解决机器学习问题的第一步。
介绍
我们已经了解了人类学习的类型,以及它们在某些方面与机器学习的类型(监督学习、无监督学习和强化学习)有何关联。监督学习意味着从过去的数据(也称为训练数据)中学习,这些数据具有已知的值或类别。机器可以从过去的数据中“学习”或“训练”,并将类别或值分配给未知数据(称为测试数据)。这有助于解决与预测相关的问题。这很像人类通过专家指导进行学习,婴儿从父母那里学习,学生从老师那里学习。因此,机器的监督学习可以被视为从人类输入中进行的引导式学习。无监督机器学习没有标记数据可供学习。它试图在未标记的数据中寻找模式。这很像人类试图将形状相似的物体组合在一起。这种学习不受标记输入的引导。
最后但并非最不重要的是强化学习,其中机器尝试通过惩罚/奖励机制进行自我学习——这与人类自我学习的方式非常相似。
我们还看到了机器学习在不同领域的一些应用,例如银行和金融、保险和医疗保健。欺诈检测是一个关键的业务案例,几乎全球所有银行都在实施,并且主要使用机器学习。新客户的风险预测是保险行业类似的关键案例,其中发现了机器学习的应用。在医疗保健领域,疾病预测广泛使用机器学习。
虽然机器学习技术的发展已经很广泛,其应用也已很普遍,但作为一名从业者,我们需要获得一些基本的了解。我们需要了解如何应用机器学习中可用的一系列工具和技术来解决问题。事实上,这将非常具体地针对我们试图解决的问题类型。如果这是一个预测问题,那么所涉及的活动类型将与我们试图在没有任何数据过去知识的情况下试图揭示数据中的模式的问题完全不同。
因此,机器学习项目是什么样子或者构成机器学习项目核心的显著活动是什么,将取决于它是属于监督学习、无监督学习还是强化学习领域。
然而,无论变化如何,在开始学习核心机器学习概念和关键算法之前,都需要建立一些基础知识。在本节中,我们将快速了解一些典型的机器学习活动,并重点介绍所有从业者在开始机器学习领域的旅程之前需要掌握的一些基础概念。
机器学习活动
机器学习活动的第一步始于数据。在监督学习的情况下,它是标记的训练数据集,然后是未标记的测试数据。在无监督学习的情况下,不存在标记数据的问题,但任务是在输入数据中寻找模式。需要彻底审查和探索数据,以了解数据的类型、数据的质量以及不同数据元素之间的关系。基于此,在我们继续进行核心机器学习活动之前,可能需要对输入数据进行多项预处理活动。以下是输入数据进入机器学习系统后进行的典型准备活动:
- 了解给定输入数据集中的数据类型。
- 探索数据以了解其性质和质量。
- 探索数据元素之间的关系,例如特征间关系。
- 查找数据中的潜在问题。
- 如果需要,进行必要的补救,例如估算缺失数据值等。
- 根据需要应用预处理步骤。
- 一旦数据准备好进行建模,学习任务就开始了。作为其中的一部分,请执行以下活动:
- 首先将输入数据分为两部分——训练数据和测试数据(称为保留数据)。此步骤仅适用于监督学习。
- 考虑选择不同的模型或学习算法。
- 根据监督学习问题的训练数据训练模型并应用于未知数据。将所选的无监督模型直接应用于无监督学习问题的输入数据。
在选择模型、进行训练(用于监督学习)并应用于输入数据后,将评估模型的性能。根据可用选项,可以采取具体措施来提高模型的性能(如果可能)
机器学习中的基本数据类型
在开始介绍数据类型之前,让我们先了解一下什么是数据集以及数据集的元素是什么。数据集是相关信息或记录的集合。信息可能涉及某个实体或某个主题领域。如以下示例所示,我们可能有一个关于学生的数据集,其中每条记录都包含有关特定学生的信息。同样,我们可以有一个关于学生成绩的数据集,其中包含提供成绩的记录,即各个科目的分数。
数据集的每一行称为样本。每个数据集还具有多个属性,每个属性都提供有关特定特征的信息。例如,在学生数据集中,有四个属性,即学号、姓名、性别和年龄,每个属性都可以理解为学生实体的特定特征。
属性也可以称为特征、变量、维度或字段。学生数据集和学生成绩都具有4个特征或维度;因此它们被称为具有4维数据空间。一行或样本代表4维数据空间中的一个点,因为每行都有4个属性或特征的特定值。属性的值可能因样本而异,这是可以理解的。例如,如果我们参考学生数据集中的前两个样本,属性名称、性别和年龄的值是不同的
既然已经给出了数据集的背景,让我们尝试理解机器学习问题中通常遇到的不同类型的数据。数据大致可分为以下两种类型:
- 定性数据(qualitative data)
- 定量数据(quantitative data)
定性数据提供有关对象质量的信息或无法测量的信息。例如,如果我们用“好”、“平均”和“差”来考虑学生的表现质量,它就属于定性数据的类别。此外,学生的姓名或学号是无法使用某种测量尺度来衡量的信息。所以它们属于定性数据。定性数据也称为分类数据。
定性数据可进一步细分为以下两种类型:
- 名义数据(nominal data)
- 序数数据(ordinal data)
名义数据没有数值,但有命名值。它用于将命名值分配给属性。名义值无法量化。名义数据的例子有
- 血型:A、B、O、AB
- 国籍:印度、美国、英国等
- 性别:男、女
显然,加法、减法、乘法等数学运算无法对名义数据执行。因此,均值、方差等统计函数也无法应用于名义数据。但是,可以进行基本计数。
序数数据除了具有名义数据的属性外,还可以自然排序。这意味着序数数据也会为属性分配命名值,但与名义数据不同,它们可以按值增加或减少的顺序排列,以便我们可以判断一个值是否优于或大于另一个值。序数数据的示例有
- 客户满意度:“非常满意”、“满意”、“不满意”等。
- 等级:A、B、C 等。
- 金属硬度:“非常硬”、“硬”、“软”等。
由于序数数据可以排序,因此可以确定中位数和四分位数。但仍然无法计算平均值。
定量数据与对象数量的信息有关,因此可以测量。例如,如果我们考虑属性“标记”,则可以使用测量尺度来测量。定量数据也称为数字数据。定量数据有两种类型:
- 间隔数据(interval data)
- 比率数据(ratio data)
间隔数据是数值数据,不仅知道其顺序,还知道值之间的确切差异。间隔数据的一个理想示例是摄氏温度。摄氏温度下每个值之间的差异保持不变。例如,12℃和18℃之间的差异是可测量的,15.5℃和21.5℃之间的差异为6℃。其他示例包括日期、时间等。
对于间隔数据,可以进行加减等数学运算。因此,对于间隔数据,可以通过平均值、中位数或众数来衡量集中趋势。也可以计算标准差。但是,间隔数据没有所谓的“真零”值。例如,没有所谓的“0温度”或“无温度”。因此,间隔数据只能进行加减运算。不能使用比率。这意味着,我们可以说40℃的温度等于20℃的温度+20℃的温度。但是,我们不能说40℃的温度意味着它是20℃温度的两倍。
比率数据表示可以测量精确值的数字数据。比率数据具有绝对零度。此外,这些变量可以加、减、乘或除。集中趋势可以通过平均值、中位数或众数以及标准差等分散方法来衡量。比率数据的示例包括身高、体重、年龄、工资等。

除了上面详述的方法之外,还可以根据可以分配的值的数量将属性分为多种类型。根据这个因素,属性可以是离散的,也可以是连续的。
离散属性可以假设有限或可数无限个值。名义属性(例如学号、街道号、邮政编码等)可以具有有限数量的值,而数字属性(例如计数、学生排名等)可以具有可数无限个值。一种只能假设两个值的特殊类型的离散属性称为二元属性。二元属性的示例包括男/女、正/负、是/否等。
连续属性可以假设任何可能的实数值。连续属性的示例包括长度、高度、重量、价格等。
一般来说,名义属性和序数属性是离散的。另一方面,间隔和比率属性是连续的。
探索数据结构
现在,我们了解到,在机器学习中,我们会遇到两种基本数据类型——数字和分类。考虑到这一点,我们可以更深入地了解数据集。我们需要了解在数据集中,哪些属性是数字的,哪些属性本质上是分类的。这是因为,探索数字数据的方法不同于探索分类数据的方法。
对于标准数据集,我们可能有数据字典可供参考。数据字典是一个元数据存储库,即与数据集中包含的每个数据元素的结构相关的所有信息的存储库。数据字典提供了每个属性的详细信息——描述以及数据类型和其他相关细节。
如果没有数据字典,我们需要使用我们正在使用的机器学习工具的标准库函数来获取详细信息。暂时,让我们先使用UCI机器学习存储库中的标准数据集,该数据集包含400多个数据集,可作为机器学习社区研究人员和从业人员的基准。
下图所示的数据集是UCI存储库中提供的Auto MPG数据集:
如数据集所示,‘mpg’、‘cylinders’、‘displacement’、‘horsepower’、‘weight’、‘acceleration’、‘model year’和‘origin’等属性都是数字。在这些属性中,‘cylinders’、‘model year’和‘origin’本质上是离散的,因为这些属性中的值数量有限。其余的数字属性,即‘mpg’、‘displacement’、‘horsepower’、‘weight’和‘acceleration’可以假设任何实际值。
由于属性‘cylinders’或‘origin’具有少量的可能值,因此人们可能更愿意将其视为分类或定性属性并以这种方式进行探索。无论如何,我们将这些属性视为数字或定量,因为我们试图在本节中展示数据探索和相关的细微差别。因此,这些属性本质上是连续的。唯一剩下的属性‘汽车名称’是分类类型,或者更具体地说是名义类型。该数据集用于预测每加仑英里的燃油消耗量,即数字属性‘mpg’是目标属性。
了解了数据集属性后,我们可以开始分别探索数值属性和分类属性。
探索数值数据
探索数值数据有两种最有效的数学图表——箱线图和直方图。我们将逐一探索这两种图表,从最关键的箱线图开始。
了解集中趋势
为了理解数值变量的性质,我们可以应用数据的集中趋势度量,即平均值和中位数。在统计学中,集中趋势度量有助于我们了解一组数据的中心点。根据定义,平均值是所有数据值的总和除以数据元素的数量。例如,一组观测值的平均值:\(21\)、\(89\)、\(34\)、\(67\)和\(96\)的计算方法如下。
\[\mathrm{Mean}=\frac{21+89+34+67+96}5=61.4\]
如果上述数字代表一个班\(5\)名学生的分数,则平均分数为\(61.4\)。
相反,中位数是出现在有序数据元素列表中间的元素的值。如果我们考虑上述\(5\)个数据元素,则有序列表将是:\(21\)、\(34\)、\(67\)、\(89\)和\(96\)。有序列表中的第\(3\)个元素被视为中位数。因此,这组数据的中位数是\(67\)。
为什么要回顾两种集中趋势测量?原因是平均值和中位数受出现在范围开头或结尾的数据值的影响不同。平均值是根据数据值的累积和计算出来的,如果太多数据元素的值更接近范围的远端,即接近最大值或最小值,平均值就会受到影响。它对异常值(即与其他值相比异常高或低的值)特别敏感。即使存在少量异常值,平均值也可能会发生剧烈偏移。如果我们观察到某些属性的平均值和中位数之间的偏差相当大,我们应该进一步调查这些属性,并尝试找出根本原因以及补救措施。
因此,在Auto MPG数据集的背景下,让我们尝试找出每个数字属性的平均值和中位数。我们还可以找出这些值之间的偏差是否很大。所有属性的平均值和中位数之间的比较如下所示:
我们可以看到,对于“mpg”、“weight”、“acceleration”和“model.year”等属性,平均值和中位数之间的偏差并不显著,这意味着这些属性具有太多异常值的可能性较小。但是,对于属性“cylinders”、“displacement”和“origin”,偏差很大。因此,我们需要进一步深入研究并查看这些属性的更多统计数据。此外,属性“horsepower”的值也存在一些问题,因此无法计算平均值和中位数。
经过一番调查,我们可以发现问题是由于如下所示的\(6\)个数据元素没有属性“horsepower”的值而发生的。
众数是出现次数最多的数字。例如,我们有\(9\)个值
\[13,13,13,13,14,14,16,18,21\]
\(13\)出现的次数最多,因此众数为\(13\)。
了解数据分布
我们已经探索了不同数值属性的集中趋势,并且我们清楚地知道哪些属性在平均值和中位数之间有较大的偏差。让我们仔细看看这些属性。为了进一步深入研究,我们需要查看属性的整个值范围,但不是数据元素级别,因为这可能太大而无法手动查看。因此,我们将以以下形式详细查看数据分布
- 数据的分散
- 不同数据值的位置
测量数据分散性
考虑两个属性的数据值
- 属性1的值:\(44\)、\(46\)、\(48\)、\(45\)和\(47\)
- 属性2的值:\(34\)、\(46\)、\(59\)、\(39\)和\(52\)
这两组值的平均值和中位数均为\(46\)。但是,属性1的第一组值更集中在平均值/中位数附近,而属性2的第二组值则相当分散。
为了测量数据的分散程度,或者找出数据的不同值分散的程度,需要测量数据的方差。数据的方差使用以下公式来测量:
\[\mathrm{var}(x)=\frac1n\sum_{i=1}^nx_i^2-\left(\frac1n\sum_{i=1}^nx_i\right)^2\]
其中\(x\)是需要测量方差的变量或属性,\(n\)是变量\(x\)的观测值或值的数量。
数据的标准差测量如下:
\[\sigma(x)=\sqrt{\mathrm{var}(x)}\]
在上述情况下,\(\mathrm{var}(\mathrm{attribute}\ 1)=2\),而\(\mathrm{var}(\mathrm{attribute}\ 2)=79.6\)。
因此,从测量结果可以清楚地看出,属性1的值相当集中在平均值附近,而属性2的值则极其分散。
测量数据值位置
当属性的数据值按升序排列时,我们之前已经看到,中位数给出中心数据值,它将整个数据集分为两半。同样,如果将数据的前半部分分成两半,每半部分占数据集的四分之一,则前半部分的中位数称为第一四分位数或\(\mathrm{Q1}\)。同样,如果将数据的后半部分分成两半,则后半部分的中位数称为第三四分位数或\(\mathrm{Q3}\)。整体中位数也称为第二四分位数或\(\mathrm{Q2}\)。因此,任何数据集都有五个值 - 最小值、第一四分位数(\(\mathrm{Q1}\))、中位数(\(\mathrm{Q2}\))、第三四分位数(\(\mathrm{Q3}\))和最大值。
让我们回顾一下属性“cylinders”、“displacement”和“origin”的这些值。下表总结了这些属性的统计范围。
如果我们以属性“displacement”为例,我们可以看到最小值和\(\mathrm{Q1}\)之间的差异为\(36.2\),\(\mathrm{Q1}\)和中位数之间的差异为\(44.3\)。相反,中位数和\(\mathrm{Q3}\)之间的差异为\(113.5\),\(\mathrm{Q3}\)和最大值之间的差异为\(193\)。换句话说,较大的值比较小的值更分散。这有助于理解为什么对于属性“displacement”,平均值远高于中位数。同样,在属性“cylinders”的情况下,我们可以观察到最小值和中位数之间的差异为\(1\),而中位数和最大值之间的差异为\(4\)。对于属性“origin”,最小值和中位数之间的差异为\(0\),而中位数和最大值之间的差异为\(2\)。
绘制和探索数值数据
箱线图
现在,我们已经对数据集属性的分布和集中趋势有了相当清晰的了解,让我们尝试将整个数据集可视化为箱线图。箱线图是一种非常有效的机制,可以一目了然地了解数据的性质。但在我们回顾Auto MPG数据集不同属性的箱线图之前,让我们首先尝试了解箱线图的一般情况,箱线图(也称为箱线图)中不同方面的解释可以对数据的五个数字汇总统计数据进行标准可视化,即最小值、第一四分位数(\(\mathrm{Q1}\))、中位数\(\mathrm{Q2}\)、第三四分位数(\(\mathrm{Q3}\))和最大值。下面显示了一个箱线图。
- 中央矩形或方框从第一四分位数跨越到第三四分位数(即\(\mathrm{Q1}\)到\(\mathrm{Q3}\)),从而给出四分位距(\(\mathrm{IQR}\))。
- 中位数由方框内的线或带给出。
- 下须从方框底部延伸至四分位距 (或\(\mathrm{IQR}\))的\(1.5\)倍,即第一四分位数或\(\mathrm{Q1}\)。让我们尝试通过一个例子来理解这一点。假设对于一组特定的数据,\(\mathrm{Q1}=73\),中位数 \(=76\),\(\mathrm{Q3}=79\)。因此,\(\mathrm{IQR}\)将为\(6\)(即\(\mathrm{Q3}-\mathrm{Q1}\))。所以,下须可以最大程度地延伸到\(\mathrm{Q1}-1.5\times\mathrm{IQR}=73-1.5\times6=64\)。但是,假设有较低范围的数据值,例如\(70\)、\(63\)和\(60\)。因此,下须将位于\(70\),因为这是大于\(64\)的最低数据值。
- 上须从箱顶延伸至四分位距(或\(\mathrm{IQR}\))的\(1.5\)倍,即第三四分位数或\(\mathrm{Q3}\)。与下须类似,上须的实际长度也取决于在(\(\mathrm{Q3}+\mathrm{IQR}\)的\(1.5\)倍)内的最高数据值。让我们尝试通过一个例子来理解这一点。对于上面提到的同一组数据,上须可以最大延伸到\(\mathrm{Q3}+1.5\times\mathrm{IQR}=79+1.5\times6=88\)。如果有更高的数据值范围,如\(82\)、\(84\)和\(89\)。那么,上须将位于\(84\),因为这是低于\(88\)的最高数据值。
- 超出下须或上须的数据值分别是异常低或高的值。这些是异常值,可能值得特别考虑。
让我们将“cylinders”、“displacement”和“origin”这三个属性的箱线图可视化。我们还将查看平均值和中位数之间的偏差很小的另一个属性的箱线图,并查看各个箱线图中的基本差异是什么。
直方图
直方图是另一种有助于有效可视化数字属性的图表。它有助于理解数字数据在一系列间隔(也称为“区间”)中的分布。直方图可能具有不同的形状,具体取决于数据的性质,如下所示
直方图和箱线图之间的重要区别是
- 直方图的重点是绘制数据值的范围(充当“箱”),每个范围中的数据元素数量将取决于数据分布。基于此,与不同范围相对应的每个条形的大小将有所不同。
- 箱线图的重点是将数据集中的数据元素分成四个相等的部分,使得每个部分包含相等数量的数据元素。
直方图可能具有不同的形状,具体取决于数据的性质,例如如上图所示的偏斜度。这些模式使我们快速了解数据,因此可以作为出色的数据探索工具。
现在让我们检查接下来介绍的Auto MPG数据集的不同属性的直方图。“mpg”和“weight”的直方图是右偏的。“acceleration”的直方图是对称和单峰的,而“model.year”的直方图是对称和均匀的。对于其余属性,直方图本质上是多峰的。
现在让我们深入研究其中一个直方图,比如说属性“加速度”的直方图。
直方图由多个条形组成,每个“箱”出现一个条形。条形的高度反映了值落在特定箱值或频率范围内的数据元素总数。在加速度直方图的背景下,每个“箱”代表\(2\)个单位的加速度值间隔。因此,例如,第二个箱反映了\(10\)到\(12\)个单位的加速度值。相应的条形图高度反映了值介于\(10\)到\(12\)个单位之间的所有数据元素的数量。
此外,从直方图中可以看出,它跨越了\(8\)到\(26\)个单位的加速度值。对应于箱的数据元素的频率首先不断增加,直到达到\(14\)到\(16\)个单位的箱。在这个范围内,条形的尺寸最高。所以我们可以得出结论,最大数量的数据元素落入这个范围内。在此范围之后,条形大小开始减小,直到加速度值为\(26\)个单位时整个范围结束。
请注意,当直方图均匀时,如属性“model.year”的情况,它暗示所有值都同样可能出现。
探索分类数据
我们已经看到有多种方法可以探索数字数据。但是,探索分类数据的选项并不多。在Auto MPG数据集中,属性“car.name”本质上是分类的。此外,正如我们前面讨论的那样,我们可以将“cylinders”视为分类变量而不是数字变量。
第一个摘要是属性“car name”有多少个唯一名称,或者“cylinders”属性有多少个唯一值。我们可以得到以下结果:
探索变量之间的关系
到目前为止,我们一直在孤立地探索单个属性。数据探索的另一个重要角度是探索属性之间的关系。有多种图可以让我们探索变量之间的关系。最基本和最常用的图是散点图。
散点图
散点图有助于可视化双变量关系,即两个变量之间的关系。它是一个二维图,其中的点或圆点绘制在由属性值提供的坐标上。例如,在数据集中有两个属性 - attr_1和attr_2。我们想要了解两个属性之间的关系,即随着一个属性(例如attr_1)的值的变化,另一个属性(例如attr_2)的值会如何变化。我们可以绘制一个散点图,将attr_1映射到\(x\)轴,将attr_2映射到\(y\)轴。因此,图中的每个点在\(x\)坐标上的值都是attr_1,在\(y\)坐标上的值都是attr_2。与二维图一样,attr_1被称为独立变量,attr_2被称为因变量。
在数据集Auto MPG中,预计属性“displacement”和“mpg”之间存在某种关系。
我们将“displacement”映射为\(x\)坐标,将“mpg”映射为\(y\)坐标。散点图如下
双向交叉表
双向交叉表(也称为交叉表或列联表)用于以简洁的方式理解两个分类属性之间的关系。它具有矩阵格式,可呈现双变量频率分布的汇总视图。
交叉表非常类似于散点图,有助于了解一个属性的数据值随着另一个属性的数据值的变化而变化的程度。让我们尝试在Auto MPG数据集的上下文中通过示例来查看。
让我们假设属性“cylinders”、“model.year”和“origin”为分类属性,并尝试检查一个属性相对于另一个属性的变化。据我们了解,属性“气缸”反映汽车的气缸数,取值为\(3\)、\(4\)、\(5\)、\(6\)和\(8\)。属性“model.year”捕获每辆汽车的车型年份,“origin”给出汽车的地区,origin的值\(1\)、\(2\)和\(3\)分别对应北美、欧洲和亚洲。以下是交叉表。让我们试着了解它们实际上提供了什么信息。
下一个交叉表显示了属性“model.year”和“origin”之间的关系,这有助于我们了解北美、欧洲和亚洲每个地区每年的汽车数量。从另一个角度来看,我们可以得到不同年份每个地区的汽车数量。所有这些都是在Auto MPG数据集中给出的样本数据的背景下。
下面的交叉表给出了样本数据集中每个地区的\(3\)、\(4\)、\(5\)、\(6\)或\(8\)缸汽车的数量。
我们可以为不同的属性组合创建交叉表,以更全面地了解属性之间的关系。
数据质量与修复
数据质量
机器学习的成功很大程度上取决于数据的质量。在监督学习的情况下,具有正确质量的数据有助于实现更好的预测准确性。但是,期望数据完美无缺是不现实的。我们已经遇到了至少两种类型的问题:
- 某些数据元素没有值或数据有缺失值。
- 数据元素的值与其他元素截然不同,我们将其称为异常值。
有多种因素导致这些数据质量问题。以下是其中一些:
- 样本集选择不正确:由于样本集选择不正确,数据可能无法反映正常或常规质量。例如,如果我们从节日期间选择一组销售交易样本并尝试使用该数据来预测未来的销售额。在这种情况下,预测将与实际情况相差甚远,仅仅是因为样本集是在错误的时间选择的。同样,如果我们试图使用训练数据来预测民意调查结果,而训练数据中没有包含来自不同群体(例如年龄、性别、种族多样性等)的正确选民组合,那么预测注定会失败。这种情况也可能由于样本量不正确而发生。例如,小规模的样本可能无法捕捉到模型正确学习所需的所有方面或信息。
- 数据收集错误:导致异常值和缺失值
- 在许多情况下,一个人或一组人负责收集用于学习活动的数据。在这个手动过程中,可能会错误地记录数据,无论是在数值方面(例如,\(20.67\)被错误地记录为\(206.7\)或\(2.067\)),还是在测量单位方面(例如,\(\mathrm{cm}\)被错误地记录为\(\mathrm m\)或\(\mathrm{mm}\))。这可能导致数据元素的值与其他元素的值异常不同。此类记录称为异常值。
- 也可能完全不记录数据。在进行调查以收集数据的情况下,调查响应者可能选择不回答某个问题。因此,该响应者的记录中缺少该数据元素的数据值。
数据修复
如上所述,数据质量问题需要得到补救。在上述两个主要错误中,第一个错误可以通过适当的采样技术来补救。这是一个完全不同的领域——作为统计学的一个专门学科领域。
然而,无论我们进行何种制衡,人为错误都必然会发生。因此,需要针对上述第二个领域采取适当的补救措施。我们将讨论如何处理异常值和缺失值。
处理异常值
异常值是具有异常高值的数据元素,可能会影响预测准确性,尤其是在回归模型中。一旦识别出异常值并决定修改这些值,您可以考虑以下方法之一。
- 删除异常值:如果异常值记录的数量不多,则一种简单的方法可能是删除它们。
- 插补:另一种方法是用平均值、中位数或众数插补值。最相似的数据元素的值也可用于插补。
- 上限:对于超出\(\mathrm{IQR}\)限值的\(1.5\)倍的值,我们可以通过将低于下限的观测值替换为第\(5\)个百分位数的值,将高于上限的观测值替换为第\(95\)个百分位数的值来限制它们。
如果存在大量异常值,则应在统计模型中单独处理它们。在这种情况下,应将数据视为两个不同的数据集,为两者建立模型,然后可以合并输出。
但是,如果异常值是自然的,即数据元素的值由于合理的原因而出奇地高或低,那么我们不应该修改它。
处理缺失值
在数据集中,一个或多个数据元素可能在多条记录中存在缺失值。如上所述,这可能是由于收集样本数据的人员或响应者疏忽造成的,主要是由于他们不愿意响应或不了解提供响应所需的内容。
有多种策略可以处理数据元素的缺失值。下面将讨论其中一些策略。
消除数据元素值缺失的记录
如果具有缺失值的数据元素的比例在可容忍的范围内,一种简单但有效的方法是删除具有此类数据元素的记录。如果删除具有缺失值的数据元素后剩余的数据量很大,则这是可能的。
对于Auto MPG数据集,在398条记录中,只有6条记录的属性“马力”值缺失。如果我们删除这6条记录,我们仍然会有392条记录,这绝对是一个相当大的数字。因此,我们可以很好地删除记录并继续使用剩余的数据集。
但是,如果具有缺失值的数据元素的记录比例非常高,这将是不可能的,因为这会由于训练数据大小的减少而降低模型的功效。
估算缺失值
归纳法是一种为具有缺失值的数据元素分配值的方法。平均值/众数/中位数是最常分配的值。
对于定量属性,所有缺失值都用同一属性下剩余值的平均值、中位数或众数来归纳。对于定性属性,所有缺失值都用同一属性下所有剩余值的众数来归纳。但是,另一种策略是识别已知值的类似类型的观测值,并使用这些已知值的平均值/中位数/众数。
例如,在Auto MPG数据集的属性“马力”中,由于该属性是定量的,我们取剩余数据元素值的平均值或中位数,并将其分配给所有具有缺失值的数据元素。因此,我们可以分配平均值\(104.47\),并将其分配给所有六个数据元素。另一种方法是,我们可以采用基于相似性的平均值或中位数。如果我们参考属性“马力”缺失值的六个观测值,而“气缸”是与“马力”逻辑上最相关的属性,因为随着汽车气缸数量的增加,汽车的马力预计也会增加。
如下表所示,对于五个观测值,我们可以使用气缸数\(=4\)的“马力”属性数据元素的平均值;即\(78.28\);对于气缸数\(=6\)的一个观测值,我们可以使用气缸数\(=6\)的数据元素的类似平均值,即\(101.5\),将值归咎于缺失的数据元素。
估计缺失值
如果有与缺失属性值的数据点相似的数据点,则可以用这些相似数据点的属性值代替缺失值。为了找到相似的数据点或观测值,可以使用距离函数。
例如,假设一名年龄\(12\)岁、身高\(5\)英尺的俄罗斯学生的体重缺失。然后可以分配任何其他年龄接近\(12\)岁、身高接近\(5\)英尺的俄罗斯学生的体重。
数据预处理
缩放、规范化和标准化
属性或特征缩放、规范化和标准化涉及转换数据以使其更适合机器学习。这些技术可以帮助提高模型性能,减少异常值的影响,并确保数据处于同一尺度。接下来,我们将探讨缩放、规范化和标准化的概念,包括它们为何重要以及如何将它们应用于不同类型的数据。
什么是特征缩放?
特征缩放(scaling)是一种数据预处理技术,用于将数据集中特征或属性的值转换为相似的比例。目的是确保所有特征对模型的贡献相同,并避免具有较大值的特征占主导地位。
当处理包含具有不同范围、测量单位或数量级的特征的数据集时,特征缩放是必要的。在这种情况下,特征值的变化可能会导致模型性能出现偏差或学习过程中出现困难。
特征缩放有几种常见的技术,包括标准化、规范化和最小-最大缩放。这些方法在调整特征值的同时保留它们的相对关系和分布。
通过应用特征缩放,数据集的特征可以转换为更一致的尺度,从而更容易构建准确有效的机器学习模型。缩放有助于在特征之间进行有意义的比较,提高模型收敛性,并防止某些特征仅根据其大小而掩盖其他特征
为什么我们应该使用特征缩放?
一些机器学习算法对特征缩放很敏感,而其他算法几乎不变。让我们更深入地探讨这些。
基于距离的算法
基于距离的算法,如k-最近邻 (k-NN)、K均值聚类和支持向量机(SVM),受特征范围的影响最大。这是因为,在幕后,它们使用数据点之间的距离来确定它们的相似性。
例如,假设我们有包含学生高中CGPA分数(范围从\(0\)到\(5\))及其未来收入(以千为单位)的数据:
由于两个特征的尺度不同,因此有可能对量级较高的特征赋予更高的权重。这将影响机器学习算法的性能;显然,我们不希望我们的算法偏向某一特征。缩放后的数据如下:
当我们比较缩放前后学生1和2以及学生2和3的数据点之间的Euclidean距离时,缩放的效果非常明显,如下所示:
- 缩放前学生1和学生2之间的距离\(\sqrt{(40-60)^2+(3-3)^2}=20\)
- 缩放前学生2和学生3之间的距离\(\sqrt{(40-40)^2+(4-3)^2}=1\)
- 缩放后学生1和学生2之间的距离\(\sqrt{(-1.10-1.52)^2+(-1.18+1.18)^2}=2.6\)
- 缩放后学生2和学生3之间的距离\(\sqrt{(-1.10+1.10)^2+(0.42+1.18)^2}=1.59\)
基于梯度下降的算法
许多机器学习算法使用梯度下降作为优化技术,需要对数据进行缩放。请看下面的梯度下降公式:
\[\theta_i(k+1)=\theta_i(k)-\mu\frac{\partial L(k)}{\partial \theta_i(k)}x_i(k)\]
公式中特征值\(x\)的存在会影响参数的更新。特征范围的巨大差异会导致参数的更新非常不同。具有相似尺度的特征可以帮助梯度下降更快地收敛到最小值。
规范化(Normalization)
规范化是一种数据预处理技术,用于将数据集中特征的值调整为通用比例。这样做是为了便于数据分析和建模,并减少不同比例对机器学习模型准确性的影响。
规范化是一种缩放技术,其中值被移位和重新缩放,以便它们最终介于\(0\)和\(1\)之间。它也被称为Min-Max缩放(归一化):
\[x'=\frac{x-x_{\min}}{x_{\max}-x_{\min}}\]
其中\(x_{\min}\)和\(x_{\max}\)表示\(x\)的最小值和最大值
标准化(Standardization)
标准化是另一种缩放方法,将数据集中在具有单位标准差的平均值附近。这意味着属性的平均值变为零,并且结果分布具有单位标准差。以下是标准化公式:
\[x'=\frac{x-\mu}\sigma\]
其中\(\mu\)和\(\sigma\)表示\(x\)的平均值和标准差。请注意,在这种情况下,值不限于特定范围。
规范化还是标准化?
然而,归根结底,使用规范化或标准化的选择将取决于您的问题和您使用的机器学习算法。没有硬性规定告诉您何时规范化或标准化数据。您可以随时将模型拟合到原始、规范化和标准化数据,然后比较性能以获得最佳结果。
降维
直到20世纪90年代末,很少有数据集具有大量的属性或特征。一般来说,机器学习中使用的数据集只有几十个。然而,在过去的二十年里,高维数据经常出现。
高维数据集需要大量的计算空间和时间。同时,并非所有特征都有用。如果数据集的维数(即数据集中的特征数量)降低,大多数机器学习算法的性能都会更好。降维有助于减少特征中的不相关性和冗余性。此外,如果学习活动中涉及的特征数量较少,则更容易理解模型。
降维是指通过组合原始属性来创建新属性来降低数据集维数的技术。最常见的降维方法称为主成分分析(PCA)。PCA是一种统计技术,用于将一组相关变量转换为一组转换后的不相关变量,称为主成分。主成分是原始变量的线性组合。它们彼此正交。由于主成分不相关,它们可以捕获数据中的最大变异量。
另一种常用的降维技术是奇异值分解(SVD)。
特征子集选择
特征子集选择或简称为特征选择,无论是监督学习还是无监督学习,都试图找出整个特征集中的最佳子集,从而显著降低计算成本,而不会对学习准确性产生任何重大影响。
特征子集似乎会导致有用信息的丢失,因为某些特征将被排除在用于学习的最终特征集之外。然而,对于消除,只选择不相关或冗余的特征。
如果特征在对一组数据实例进行分类或分组时起的作用不大(或几乎没有提供任何信息),则该特征被视为不相关。在选择最终特征子集时,所有不相关的特征都会被消除。
如果特征提供的信息与一个或多个其他特征大致相同,则该特征可能是冗余的。在一组可能冗余的特征中,可以选择少量特征作为最终特征子集的一部分,而不会对模型准确性造成任何负面影响。
有多种方法来选择特征子集。我们稍后将详细讨论特征选择。
全 文 翻 译 \(\times2\)