← 返回Book 6目录
第01章

万物皆数

All Is Number

从数据分析、机器学习视角再看数字

1.1 万物皆数:从矩阵说起

这是一个有关数字的故事,故事的开端便是表格数据。 生活中大部分数据都可以用表格形式呈现、保存、运算、分析。

任何表都可以看成是由行(row)和列(column)构成。 从线性代数角度来看,我们管这个表格叫做矩阵。鸢尾花书中,矩阵这个数学概念无处不在。

《矩阵力量》介绍过矩阵的每一行可以看成是一个行向量(row vector), 每一列为列向量(column vector)。

将矩阵记做X,X可以写成一组列向量X = [x₁, x₂, …, x_D]。X当然也可以写成一组行向量X = [x⁽¹⁾, x⁽²⁾, …, x⁽ⁿ⁾]ᵀ。

多行、多列矩阵

Column12...DRow123...n-1n

点击按钮切换不同视角:完整矩阵、行向量视角、列向量视角

鸢尾花数据表格(特征数据单位为厘米 cm)

Setosa
Versicolor
Virginica
IndexSepal length (X₁)Sepal width (X₂)Petal length (X₃)Petal width (X₄)Species (C)
15.13.51.40.2Setosa
24.931.40.2Setosa
34.73.21.30.2Setosa
495.33.71.50.2Setosa
5053.31.40.2Setosa
5173.24.71.4Versicolor
526.43.24.51.5Versicolor
536.93.14.91.5Versicolor
1016.33.362.5Virginica
1025.82.75.11.9Virginica
1505.935.11.8Virginica

这是鸢尾花书最常用的数据集,表格中四列特征就可以看成一个矩阵,最后一列为鸢尾花分类标签

一幅照片本质上也是数据矩阵。 照片可以用红、绿、蓝三色组成,每个像素点都是一个数值,整张照片就是一个巨大的矩阵。

照片也是数据矩阵

鸢尾花照片

→

像素矩阵 X

2990 × 2714

→
0.6692 0.6364
0.6165 0.5476

数值

一个矩阵还可以衍生得到其他形式。从两个视角看待数据矩阵X:

鸢尾花数据衍生得到的几个矩阵

两个方阵
格拉姆矩阵 G:D×D,包含向量模、向量夹角信息
余弦相似度矩阵 C:D×D,仅包含向量夹角信息
统计视角
质心 E(X):1×D,数据中心位置
中心化数据 X_c:n×D,去均值
协方差矩阵 Σ:D×D,描述数据分布
标准化数据 Z_X:n×D,Z分数
相关性系数矩阵 P:D×D,标准化的相关性

协方差矩阵 Σ 相当于 X_c 的格拉姆矩阵。相关性系数矩阵 P 相当于 Z_X 的格拉姆矩阵。 对 X 进行 SVD 分解可以得到四个空间。

图论(graph theory)中,无向图(undirected graph)是一类图(graph), 其中的节点(nodes)通过边(edge)相连, 但这些边无方向(undirected)。图和网络是本册的重要话题,所占篇幅超过一半。

简单来说,图是表示关系的节点和边的集合。 节点是对应于对象的节点;边是连接对象之间的关系。图的边有时带有权重,表示节点之间连接的强度或其他属性。

根据鸢尾花数据前两个特征欧氏距离矩阵创建的无向图

SetosaVersicolorVirginica

节点代表鸢尾花样本,边代表样本之间的欧氏距离关系

我们可以使用图来模拟社交网络中的友谊关系。 图的节点是人,而边表示友谊关系。图与物理对象和情境的对应关系意味着我们可以使用图来模拟各种各样的系统。

1.2 数据分类:定量、定性、连续、离散

定量数据指的是,可以采用数值表达的数据, 比如股票价格、人体高度、气温等等。

连连续数据(Continuous data)

连续数据是指在一定区间内可以任意取值的数据,比如气温、GDP数据等等。 一天24小时之内的温度数据不可能被持续记录,按一定时间频率需要采样。

气温身高GDP股价距离

离离散数据(Discrete data)

离散数据只能采取特定值,比如说个数(整数)、一到五星好评、骰子点数等等。

个数人数星级评分骰子点数硬币正反

采样数据示例:GDP增长曲线

GDP, ×10¹²510151960197019801990200020102020放大后看是折线

当数据量足够大时,GDP增长曲线看上去是连续曲线;但展开局部数据时,可以发现所谓的连续数据实际上是相邻点相连构成的"折线"

数据分类

DataQuantitative dataContinuous dataDiscrete dataQualitative dataNominal dataOrdinal data

📈 时间序列(Timeseries)

时间序列是指按照时间顺序排列的一系列数据点或观测值,通常是等时间间隔下的测量值,如每天、每小时、每分钟等。 时间序列数据通常用于研究时间相关的现象和趋势,例如股票价格、气象数据、经济指标等。本书专门有一个版块介绍和时间序列相关内容。

混合

很多时候,一个表格常常是各种数据的集合体。 比如一个学生信息表格,每一行代表一个学生的某些基本数据。表格第1列为学生姓名,表格第2列为性别(定类数据), 表格第3列为身高(连续定量数据),第4列为成绩(定序数据),第5列为血型(定类数据)。

大家已经很熟悉的鸢尾花数据也是混合数据表格。 表格的第一列为序号,之后四列为花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征的连续数据。最后一列为鸢尾花分类标签。

1.3 机器学习:四大类算法

鸢尾花书不管是编程、可视化,还是数学工具、数据分析,都是为机器学习时间服务的。 从机器学习算法角度来看,我们首先关心数据是否有标签。

有标签、无标签数据

根据输出值有无标签,数据可以分为有标签数据(labelled data)和无标签数据(unlabelled data)。 鸢尾花数据显然是有标签数据。删去鸢尾花最后一列标签,我们便得到无标签数据。

有标签数据和无标签数据是机器学习中常见的两种数据类型,它们在不同的应用场景中有不同的用途。

动物的一种标签:冷血、温血

🐸🦎🐍🐟🐊

Cold-blooded animals

冷血动物

🐕🐈🐘🦁🐻

Warm-blooded animals

温血动物

在有标签数据中,每个样本都有对应的标签或分类信息

有标签数据通常用于监督学习(supervised learning), 即机器学习模型可以利用已知的标签信息进行训练,并在后续的预测过程中使用这些信息进行分类或回归。

无标签数据是指没有标签或分类信息的数据。 在无标签数据中,样本只有特征信息,而没有对应的标签信息。

无标签数据通常用于无监督学习(unsupervised learning), 即机器学习模型需要通过自己的学习过程,从数据中发现并学习出有意义的模式和结构。 无监督学习通常包括聚类、降维、异常检测等任务。

在实际应用中,有标签数据和无标签数据往往同时存在。例如,在文本分类任务中, 可以有大量已经标注好类别的文本数据(有标签数据),但同时还存在大量未分类的文本数据(无标签数据), 可以利用这些无标签数据进行半监督学习(semi-supervised learning)。

根据有无标签分类算法类型

Supervised learning
X
y
Labeled

Input variables + Response variable

Unsupervised learning
X
y
NaN / Unlabeled

Input variables + Unobserved

Semi-supervised learning
X
y
Mixed

Input variables + Mixed labels

四大类机器学习算法

Supervised learning
(a) Regression

标签为连续数据

Quantitative

(c) Classification

标签为分类数据

Categorical

Unsupervised learning
(b) Dimension reduction

寻找规律、简化数据

Quantitative

(d) Clustering

分成不同的簇

Categorical

机器学习一般流程

1📊
收集数据

从数据源获取数据集,包括数据清理、去除无效数据和处理缺失值等

2🔧
特征工程

对数据进行预处理,包括数据转换、特征选择、特征提取和特征缩放等

3✂️
数据划分

将数据集划分为训练集、验证集和测试集等

4🎯
选择模型

选择合适的模型,例如线性回归、决策树、神经网络等

5🏋️
训练模型

使用训练集对模型进行训练,并对模型进行评估

6🧪
测试模型

使用测试集评估模型的性能,并进行模型的调整和改进

7🚀
应用模型

将模型应用到新数据中进行预测或分类等任务

8📈
模型监控

监控模型在实际应用中的性能,并进行调整和改进

1.4 特征工程:提取、转换、构建数据

从原始数据中最大化提取可用信息的过程就叫做特征工程(feature engineering)。 特征很好理解,比如鸢尾花花萼长度宽度、花瓣长度宽度,人的性别、身体、体重等,都是特征。

特征工程是机器学习中非常重要的一个环节,指的是对原始数据进行特征提取、特征转换、特征选择和特征创造等一系列操作, 以便更好地利用数据进行建模和预测。

相信大家都听过"垃圾进,垃圾出(garbage in, garbage out, GIGO)"。 这句话的含义很简单,将错误的、无意义的数据输入计算机系统,计算机自然也一定会输出错误、无意义的结果。 在数据科学、机器学习领域,很多时候数据扮演核心角色。以至于在数据分析建模时,大部分的精力都在了处理数据上。

特征工程包括以下方法:

📤
特征提取

Feature Extraction

将原始数据转换为可用于机器学习算法的特征向量。注意,这个特征向量不是特征值分解中的特征向量。

🔄
特征转换

Feature Transformation

对原始特征进行数值变换,使其更符合算法的假设。例如,在回归问题中,可以对数据进行对数转换或指数转换等。

✅
特征选择

Feature Selection

选择最具有代表性和影响力的特征。例如,可以使用相关性分析、PCA等方法选择最相关或最重要的特征。

✨
特征创造

Feature Creation

根据原始特征创造新的特征,比如特征相加减、相乘除等等运算。

📏
特征缩放

Feature Scaling

将特征缩放到相同的尺度或范围内,避免某些特征对模型训练的影响过大。

特征工程在机器学习中扮演着至关重要的角色,它可以提高模型的精度、泛化能力和效率。 在实际应用中,需要根据具体问题选择合适的特征工程方法,并不断尝试和改进以达到最佳效果。

特征工程很好的混合了专业知识、数学能力。 虽然丛书不会专门讲解特征工程,但是本书的很多内容都可以用于特征工程。

📚 相关内容

本书下一版块中介绍的缺失值、离散值处理可以视作特征预处理。 而数据转换、插值、正则化、主成分分析、因子分析、典型相关分析也都是特征工程的利器。 此外,《统计至简》一册中的统计描述、统计推断,《机器学习》一册介绍的线性判别分析(LDA)、聚类算法等也都可以用于特征工程。

💡 核心洞察

万物皆数——从表格到矩阵,从照片到像素,数据无处不在。 矩阵是数据的基本表示形式,理解行向量、列向量的概念是理解机器学习的基础。

数据分类是数据分析的起点:定量vs定性、连续vs离散、定类vs定序。 理解数据类型决定了我们能使用什么样的分析方法和可视化手段。

四大类机器学习算法:有标签数据用于监督学习(回归、分类), 无标签数据用于无监督学习(降维、聚类)。这两种数据类型直接影响算法选择。

特征工程是机器学习中优化模型性能的关键步骤。 通过特征提取、选择、转换、创造和缩放技术,它帮助改善模型的准确度和效率,使模型能更好地理解数据的复杂结构。