Python机器学习技术:模型关系管理
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 数据源

数据源可以分为结构化数据与非结构化数据两种基本形式,结构化数据表现为数值,其形状为行大于列(长数据[1]),涉及低维问题;半结构化数据表现为图像与自然语言,其形状为列大于行(宽数据),涉及高维问题。机器学习如何充分利用不同形状的数据达到分析的目的是本节的重点。

1.1.1 数值:单元格

对于大数据而言,数据往往存储于数据库,一行表示一条观测值的所有信息是经典数据格式,几乎可以应用于所有的数据分析领域。然而,观测值在不同场景下的含义不尽相同,可以表示客户的喜好行为,也可以表示一笔订单、一次物流等。

单元格示意如图1-1-1所示,从列的角度可以观察到群体特征,并使用数据分布来描述群体信息。从行的角度只能观察到一个人的信息,观察不到群体特征,如客户003的年龄是52岁。可见,单元格同时具有行、列信息,这就是数据框(Dataframe),进而可以展开相关分析(列间)与距离分析(行间),这也是构建模型的基础。

图1-1-1 单元格示意

1.1.2 图像:像素点

图像分析中将视频、图片视为同一种图像类型,并以像素为分析的基础单元。对于机器学习而言,需要将像素平铺成一行,即一行表示一张图片,一列表示图片中的每个像素点,如图1-1-2(a)所示,照片由3个维度(3968×2976×3)组成,数值3表示RGB的3个通道。

图像分析的重点在于图像梯度[2],对于计算机而言,颜色对梯度的影响往往是相对的,所以通常转化为单通道,即灰色[见图1-1-2(b)]。因为不同图像的尺寸不同,所以需要将图像约束为相同的尺寸[见图1-1-2(c)],否则平铺后的数据维度会参差不齐,存在大量缺失。此外,还需要考虑图像尺寸,尺寸太大会增加运算量,太小则容易出现马赛克,模糊不清[见图1-1-2(d)]。

图1-1-2 图片像素

图像数据的平铺过程如图1-1-3所示,图1-1-3(a)~图1-1-3(d)分别对应图1-1-2(a)~图1-1-2(d)。可见,一张图片构成了图像数据的行信息,第一个像素点对应第一个维度,即通常意义上的自变量。当前图片共有100个像素点(10×10),则对应100个维度,因此图像数据是典型的高维数据,维度达到百万级,甚至千万级都很正常。

图1-1-3 图像数据的平铺过程

1.1.3 文本:词向量

1.文本编码

文本编码首先将文本转化为数值,然后基于一定规则转化为数据向量。以数据向量的方式出现便于模型使用,适用于机器学习和深度学习。

假设文本数据是“我爱工作同样也爱家庭”。

文本编码需要文本分词技术,通过分词赋予文本数值含义,分词后的文本中,0表示“我”、1表示“爱”、2表示“工”、……、8表示“庭”[3],数据编码后的形式为0我1爱2工3作4同5样6也1爱7家8庭,其中,“爱”是重复的,也用数值1来表示。此外,将文本中某个词作为y的取值,其上下文对应的词作为x的取值,得到如下编码形式:

可见,单词的上下文构成了预测因素,当前值是被预测的对象。

以上是机器学习中常用的编码形式,独热编码也可以用于机器学习,但常用于深度学习。

2.文本独热编码

数据向量xy可以作为数据源(y表示因变量,x表示自变量,下同),但这种数据格式更适用于机器学习,而深度学习经常需要对xy进行独热编码(或哑变量中的GLM变换),其编码形式如下:

转化为独热编码后,x的行对应,某个词作为目标后,同样也将该词上下文对应的词作为自变量x,因此需要2行x对应1行y。若某个目标词对应上下文6个词(一侧3个词),则需要增加6行x与1行y,以此类推。

若文本数据“我爱工作同样也爱家庭”对应y的取值为0,并且第二行文本“我爱足球运动”对应y的取值为1,则可以得到如下编码:0我1爱2工3作4同5样6也1爱7家8庭、0我1爱9足10球11运12动,数值编码可以顺延下去,其数据向量的形式:

可见,x的维度是(2,10),y的维度是(2,1),尽管x的第二行数据不可避免地存在缺失值,但当文本序列比较长时,一般不影响文本分析。

3.软件包与代码

统计学习和机器学习软件包(如Statsmodels和Sklearn)主要以数值为分析对象,很少有非结构化数据的直接导入接口,一般需要用户手动转换,而深度学习软件包,如Keras、Tensorflow、Torch等,则提供了各类非结构化数据的丰富接口。

知识拓展 (重要性★★☆☆☆)

半结构化数据

区别结构化数据和非结构化数据的一个非正式的定义是数据的列是否存在意义。例如,结构化数据中,年龄是有意义的,但非结构化数据中,图像像素对应的列却很难赋予实际意义。

某个案库系统中,如果要求机台工人在机油栏中记录经验,那么机油是列标签,具有结构化数据的特征。如果发生机械震动问题,那么在震动栏中记录的所致问题是结构化数据。但是如果发生一个全新事件,可能无法编码或无法及时命名,那么此时的数据是非结构化的。如果数据同时具有结构化和非结构化的特征,那么可以视为半结构化数据。半结构化数据包括报表、账单、邮件、扫描文件等。

如果将统计学习视为结构化小数据的颠覆性算法,那么机器学习就是结构化大数据的颠覆性算法,深度学习是非结构化数据的颠覆性算法。但半结构化数据的算法中,尽管已有可加模型、强集成学习模型、混合专家模型,但仍未出现可以称为颠覆性算法的技术。

不过无需多虑,如果非结构化数据已经大到足以产生巨量价值,那么数据科学家们必将蜂拥而至,这个领域的百花齐放之日也将加速到来。