白话机器学习算法
上QQ阅读APP看书,第一时间看更新

1.1 准备数据

数据科学就是关于数据的科学。如果数据的质量差,那么分析得再精确也只能得到平淡无奇的结果。本节将介绍数据分析中常用的数据格式,还会涉及一些用来改进结果的数据处理方法。

1.1.1 数据格式

在数据分析中,表格是最常用的数据表示形式,如表1-1所示。表格中的每一行就是一个数据点,代表一个观测结果;每一列是一个变量,用来描述数据点。变量也叫属性、特征维度

表1-1 假设一些动物顾客去超市购物,以下是交易数据集。每一行代表一笔交易,每一列则描述交易的某一方面信息

根据需求,可以更改每行观测的类型。例如,通过表1-1这种表示形式,我们可以借助大量交易来研究交易模式。但是,如果想根据日期研究交易模式,则需要以行为单位汇总每一日的数据。为了分析得更全面,可以另外再添加几个变量,比如天气等,如表1-2所示。

表1-2 根据日期汇总后的交易数据集,并且另外添加了几个变量

1.1.2 变量类型

变量主要有4类,正确区分它们对于为算法选择合适的变量至关重要。

二值变量:这是最简单的变量类型,它只有两种可能的值。在表1-1中,“是否买鱼”就是二值变量。

分类变量:当某信息可以取Z两个以上的值时,便可以使用分类变量来表示它。在表1-1中,“顾客类别”就是分类变量。

整型变量:这种变量用来描述可以使用整数表示的信息。在表1-1中,“水果购买量”就是整型变量,它表示每位顾客所购水果的数量。

连续变量:这是最精细的变量,用来表示小数。在表1-1中,“支出”就是连续变量,它表示每位顾客花费的金额。

1.1.3 变量选择

原始数据集可能包含许多变量。往一个算法中放入过多变量,可能导致计算速度变慢,或者因干扰过多而产生错误的预测结果。因此,需要从众多变量中筛选出那些与研究目标密切相关的变量,这个过程就是变量选择。

通常,变量选择是一个试错的过程,需要根据反馈结果不断更换变量。一开始,可以借助简单的图来研究变量之间的相关性(详见6.5节),选取那些最有希望的变量,以待进一步分析。

1.1.4 特征工程

有时候,需要做一些处理才能获得最佳变量。例如,如果要预测表1-1中的哪些动物顾客不会买鱼,可以通过查看“顾客类别”获知,兔子、马和长颈鹿不会买鱼。不过,如果以食草动物、杂食动物和食肉动物这3大类划分表中的动物顾客,将得到更广义的结论:食草动物不吃鱼。

除了对单个变量进行重新编码之外,还可以合并多个变量,这个技巧叫作降维,第3章将进行讲解。降维可以提取最有用的信息,从而获得更精简的变量集,以供进一步分析。

1.1.5 缺失数据

我们收集的数据并非总是完整的。比如,在表1-1的最后一笔交易中,水果购买量就没有被记录下来。数据缺失会妨碍分析,因此要尽可能地使用如下一些方法来解决数据缺失问题。

近似:如果缺失值所属的类型为二值变量或分类变量,那么可以使用该变量的众数(即出现次数最多的那个值)来替换它。若缺失值属于整型变量或连续变量,则可以使用中位数来替换它。利用这个方法,可以将表1-1中的缺失值替换为5,即猫购买了5个水果,因为其他7笔交易中水果购买量的中位数为5。

计算:对于缺失值,还可以使用更高级的监督学习算法(详见1.2节)将它计算出来。虽然计算更耗时,但是所得到的数值更准确,这是因为算法基于类似交易来估算缺失值,这一点与近似方法(考虑每一笔交易)有所不同。从表1-1可知,买鱼的顾客购买的水果往往比较少,因此推断猫购买的水果大约只有2个或3个。

移除:万不得已时,可以把包含缺失值的整行数据移除。但是,尽量不要这样做,因为这会减少分析时可用的数据量。而且,移除数据点可能会导致数据样本倾向或偏离特定的群体。例如,猫可能不太愿意公开自己所购水果的数量,如果把未记录水果购买量的顾客移除,那么最终的样本就会丢失有关猫的数据。

处理完数据集之后,就该对数据集进行分析了。