前言
机器学习 (machine learning, ML)的主要目的是设计和分析一些学习算法,让计算机可以从数据(经验)中自动分析并获得规律,之后利用学习到的规律对未知数据进行预测,从而帮助人们完成一些特定任务,提高开发效率。
首先我们以一个生活中的例子来介绍机器学习中的一些基本概念。首先,我们从市场上随机选取一些西瓜,列出每个西瓜的特征(feature),包括颜色、大小、形状、产地、品牌等,以及我们需要预测的标签(label)。特征也可以称为属性(attribute),标签也称为目标(target)。我们可以将一个标记好特征以及标签的西瓜看作一个样本(sample),也经常称为示例(instance)。
一组样本构成的集合称为数据集(data set)。一般将数据集分为两部分:训练集(training set)和测试集(test set)。训练集中的样本是用来训练模型的,而测试集中的样本是用来检验模型好坏的。
我们通常会用
D={(x1,y1),(x2,y2),⋯,(xN,yN)}
表示N个样本的数据集,每个特征xi=(xi1,xi2,⋯,xip)T 是包含p个特征的向量,称为特征向量(feature vector)。而标签通常用标量y来表示。
我们可以把机器学习过程看作在某个函数集合中进行搜索的过程,应用某个评价准则(evaluation criterion),找到与训练集匹配最优的模型。模型所属的函数集合称为假设空间(hypothesis space),评价准则要优化的函数称为代价函数(cost function)。
机器学习算法可以按照不同的标准来进行分类,比如按照目标函数的不同可分为线性模型和非线性模型。但一般来说,我们会按照训练样本提供的信息以及反馈方式的不同,将机器学习算法分为监督学习、无监督学习、强化学习。有时还包括半监督学习、主动学习。
- 监督学习(supervised learning):如果每个样本都有标签,机器学习的目的是建立特征和标签之间的映射关系,那么这类机器学习称为监督学习。根据标签数值类型的不同,监督学习又可以分为回归问题和分类问题。回归(regression)问题中的标签是连续值,回归分类(regression)问题中的标签是离散值。
- 无监督学习(unsupervised learning):是指从不包含目标标签的训练样本中自动学习到一些有价值的信息。典型的无监督学习问题有聚类、密度估计、特征学习、降维等。
- 强化学习(reinforcement learning):并不是训练于一个固定的数据集上。强化学习会和环境进行交互,在没有人类操作者指导的情况下,通过试错来学习。
监督学习需要每个样本都有标签,而无监督学习则不需要标签.一般而言,监督学习通常需要大量的有标签数据集,这些数据集一般都需要由人工进行标注,成本很高.因此,也出现了很多弱监督学习(Weakly Supervised Learning)和半监督学习(Semi-Supervised Learning,SSL)的方法,希望从大规模的无标注数据中充分挖掘有用的信息,降低对标注样本数量的要求.强化学习和监督学习的不同在于,强化学习不需要显式地以“输入/输出对”的方式给出训练样本,是一种在线的学习机制。

在实际任务中使用机器学习模型一般会包含以下几个步骤:
- 数据预处理:对数据的原始形式进行初步的缺失值处理、数据规范化、数据变换等。
- 特征工程:主要有特征选择、特征提取、降维等。
- 模型训练及评估:机器学习的核心部分,学习模型并逐渐调优。
没有免费午餐定理 (No Free Lunch Theorem,NFL) 是由Wolpert 和Macerday在最优化理论中提出的。没有免费午餐定理证明:对于基于迭代的最优化算法,不存在某种算法对所有问题(有限的搜索空间内)都有效。如果一个算法对某些问题有效,那么它一定在另外一些问题上比纯随机搜索算法更差。也就是说,不能脱离具体问题来谈论算法的优劣,任何算法都有局限性.必须要具体问题具体分析。
没有免费午餐定理对于机器学习算法也同样适用,不存在一种机器学习算法适合于任何领域或任务。
奥卡姆剃刀 (Occam’s razor) 是一种常用的、自然科学研究中最基本的原则。主张选择与经验观察一致的最简单假设。如果有两个性能相近的模型,我们应该选择更简单的模型数据探索。
描述统计
数据集的特征通常分为连续(continuous)和离散(discrete)两种。描述统计(summary statistics)是用量化的单个数或少量的数来概括数据的各种特征,主要包括集中趋势分析、离散程度分析和相关分析三大部分。
平均数(mean):是描述数据集中趋势的测度值。均值容易受极值的影响,当数据集中出现极值时,所得到的的均值结果将会出现较大的偏差。
μ=xˉ=N1i=1∑Nxi
中位数(median):是集中趋势的测量。中位数是按顺序排列的一组数据中居于中间位置的数,大于该值和小于该值的样本数各占一半。中位数不受极值影响,因此对极值缺乏敏感性。通常用 m0.5 来表示中位数。
四分位数(quartile):是指在统计学中把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值,即为四分位数。四分位数分为上四分位数(处在75%位置上的数值,即最大的四分位数)、下四分位数(处在25%位置上的数值,即最小的四分位数)、中间的四分位数(即为中位数)。三个四分位数通常用 Q1,Q2,Q3表示。
四分卫间距(InterQuartile Range,IQR):第三四分位数与第一四分位数的差距,与方差、标准差一样,表示变量的离散程度。
IQR=Q3−Q1
极差(range):连续变量最大值和最小值之间的差值。极差是描述数据分散程度的量,极差描述了数据的范围,但无法描述其分布状态。且对异常值敏感,异常值的出现使得数据集的极差有很强的误导性。
R=max(x)−min(x)
方差(variance)与标准差(standard deviation):是描述数据的离散程度。在正态分布中,95% 的样本在平均值的两倍标准差范围内。
σ2=N1i=1∑N(xi−μ)2
变异系数(coefficient of variation,CV):标准差与期望的比值。变异系数是个无量纲的量,可以比较度量单位不同的数据集之间的离散程度的差异。
CV=μσ
偏度(skewness):用来衡量分布的不对称性。任何对称分布偏度为 0。具有显著的正偏度的分布有很长的右尾,具有显著的负偏度的分布有很长的左尾。一般当偏度大于两倍标准差时,认为分布不具有对称性。
S=N1i=1∑N(σxi−μ)3
峰度(kurtosis):以正态分布为标准,用来衡量量分布的陡峭程度。完全符合正态分布的数据峰度值为 0,且正态分布曲线被称为基线。峰度为正表示数据比正态分布峰要陡峭,称为尖峰态(leptokurtic)。峰度为负表示数据比正态分布峰要平缓,称为平峰态(platykurtic)。
K=N1i=1∑N(σxi−μ)4−3
频率(frequency):是指离散变量每个值出现的次数与总次数的比值,用来表示变量的分布情况。
众数(mode):是指离散变量频率最大的数值。描述数据的集中趋势,不受极值影响。
列联表(contingency table)是由两个或更多变量进行交叉分类的频数分布表。列联表的目的是寻找变量间的关系。
协方差(covariance)用于衡量两个变量的总体误差,可作为描述两个变量相关程度的量
cov(x,y)=N1i=1∑N(xi−xˉ)(yi−yˉ)
独立性检验
假设检验(Hypothesis Testing),或者叫做显著性检验(Significance Testing)是数理统计学中根据一定假设条件由样本推断总体的一种方法。
卡方检验
卡方检验(Pearson Chi-square test):用于检验两个分类变量是否相互独立。原假设为两分类变量独立,即 P(XY)=P(X)P(Y)。假设两分类变量的类别数分别为 r 和 c,将样本分成rc个区间,其根本思想就是在于比较原假设期望频数和实际频数的吻合程度
χ2=j=1∑ci=1∑rEij(Aij−Eij)2=j=1∑ci=1∑rnpij(Aij−npij)2∼χ2((r−1)(c−1))
其中 Aij 是小区间 i,j 的样本数,Eij是第 i,j 个小区间的期望频数,n 为总样本数,pij是小区间 i,j 的期望频率。当n比较大时,χ2 统计量服从 (r−1)(c−1) 个自由度的卡方分布。
实际分布 |
y1 |
y2 |
total |
x1 |
15 |
85 |
100 |
x2 |
95 |
5 |
100 |
total |
110 |
90 |
200 |
变量 X 的期望频率 P(x1)=100/200=0.5
变量 Y 的期望频率 P(y1)=110/200=0.55,P(y2)=0.45
期望频数 |
y1 |
y2 |
total |
x1 |
55 |
45 |
100 |
x2 |
55 |
45 |
100 |
total |
110 |
90 |
200 |
χ2=55(15−55)2+45(85−45)2+55(95−55)2+45(5−45)2=129.3>10.828 ,显著相关。
CMH检验
Cochran-Mantel-Haenszel 检验,简称CMH检验。 其原假设是,两个分类变量在第三个变量的每一层中都是条件独立的。
Kruskal-Wallis 检验
Kruskal-Wallis 检验:用于检验有序分类变量和分类变量的相关性。若分类变量有 k 个类别,原假设 H0:μ1=μ2=⋯=μk。检验统计量
H=n(n+1)12i=1∑kni(Rˉi−Rˉ)2∼χ2(k−1)
其中,n为总的样本数,ni为分类变量第 i 个类别的样本数,Ri=rank(xi) 是有序分类变量的秩。
方差分析
方差分析(Analysis of Variance,简称ANOVA)用于检验连续变量和分类变量的相关性。对于仅有一个分类变量, 又称为单因素方差分析(one-way ANOVA)。
方差分析认为方差的基本来源有两个:
(1) 组间差异:变量在各组的均值与总均值的偏差平方和,记作 SSA
(2) 随机误差:测量误差个体间的差异,各组的均值与该组内变量值的偏差平方和,记作 SSE
方差 |
自由度 df |
平方和 SS |
均方 MS |
组间方差 |
k-1 |
SSA=∑i=1kni(xˉi−xˉ)2 |
MSA=SSA/(k−1) |
组内方差 |
n-k |
SSE=∑i=1k∑j=1ni(xij−xˉi)2 |
MSE=SSE/(n−k) |
总方差 |
n-1 |
SST=SSA+SSE |
MS=SST/(n−k) |
方差分析主要通过 F检验(F-test)来进行效果评测,原假设 H0:μ1=μ2=⋯=μk。检验统计量
F=MSEMSA∼F(k−1,n−k)
其中,n=∑i=1kni 为总样本数, k 为分类变量的类别数。
相关系数
相关系数
相关系数(correlation coefficient)反映了两个变量间的相关性,常用的相关系数如下:
(1) Pearson相关系数:衡量了两个连续变量之间的线性相关程度
r=σxσycov(x,y)=∑i=1n(xi−xˉ)2∑i=1n(yi−yˉ)2∑i=1n(xi−xˉ)(yi−yˉ)
其取值范围 −1⩽r⩽1 。通常情况下通过以下相关系数取值范围判断变量的相关强度:0.8-1.0 极强相关;0.6-0.8 强相关;0.4-0.6 中等程度相关;0.2-0.4 弱相关;0.0-0.2 极弱相关或无相关。
如果 x,y 都服从正态分布,可以用 F-test来检验Pearson相关系数的显著性
F=1−r2r2(n−2)∼F(1,n−2)
也可以用 t 检验 t=F∼t(n−2)
(2) Spearman秩相关系数:衡量两个有序分类变量之间的相关程度。定义和Pearson相关系数一样,但其值不考虑具体数值的影响,只和变量的秩相关
r=1−n(n2−1)6∑i=1Ndi2
其中,di 表示数据点 (xi,yi) 的秩的差值 di=rank(xi)−rank(yi) 。其取值范围 −1⩽r⩽1 。
和Pearson相关系数一样,可以使用F检验 F=1−r2r2(n−2)∼F(1,n−2) 或 t 检验 t=F∼t(n−2) 来检验显著性。
(3) Kendall’s Tau相关系数:也是一种非参数的秩相关度量,是基于样本数据对 (xi,yi) 之间的关系来衡量两个有序分类变量之间的相关程度。
τ=n(n−1)2i<j∑sign(xi−xj)sign(yi−yj)
简单的说就是将两个变量进行排序,使用同序对(Concordant pairs)和异序对(Discordant pairs)个数的差值度量。其取值范围 −1⩽r⩽1 。同序对计数为 1,异序对计数为 -1,则数据对的判段逻辑如下
p(i,j)=sign(xi−xj)sign(yi−yj)
Cramer’s V系数
Cramer’s V系数:衡量两分类变量的相关程度
V=n∗min{r−1,c−1}χ2
其取值范围 0⩽V⩽1 ,越接近1相关性越强。卡方值
χ2=j=1∑ci=1∑rnpij(Aij−npij)2
其中,两分类变量的类别数分别为 r 和 c。 Aij 是小区间 i,j 的样本数,Eij是第 i,j 个小区间的期望频数,n 为总样本数,pij是小区间 i,j 的期望频率。
IV 和 WOE
IV(Information Value,信息价值)用来评估分箱特征对二分类变量的预测能力,IV 值越大表示该变量预测能力越强。IV 值的计算相当于WOE值的一个加权求和。
IV=∑(PTPi−NTNi)∗WOEi
其中,Pi,Ni 为第 i 个分箱中的正负样本数,PT,NT 为总的正负样本数。
常见的IV值阈值为0.02,如果IV值小于此阈值,则被认为是不重要的特征。
- IV<0.02:无用特征
- 0.02⩽IV<0.1:弱价值特征
- 0.1⩽IV<0.3:中价值特征
- 0.3⩽IV<0.5:强价值特征
- IV⩾0.5:价值过高,不真实
WOE(Weight of Evidence,证据权重)用来衡量该组与整体的差异。
WOEi=log(PTPi/NTNi)
age |
positive |
negative |
WOE |
weight |
<28 |
25 |
75 |
log(0.25/0.375)=−0.4055 |
-0.125 |
[28, 60] |
60 |
40 |
log(0.6/0.2)=1.0986 |
0.4 |
>=60 |
15 |
85 |
log(0.15/0.425)=−1.0415 |
-0.275 |
total |
100 |
200 |
|
|
IV=(−0.4055)∗(−0.125)+1.0986∗0.4+(−1.0415)∗(−0.275)=0.7765
VIF
方差膨胀因子(Variance Inflation Factor,VIF):通常用来衡量一个变量和其他变量间的多重共线性
VIF=1−R21
多重共线性指目标变量可有其他变量线性组合。R2 指以目标变量拟合的线性模型的决定系数(R-Square),其取值范围为[0,1],一般来说,R-Square 越大,表示模型拟合效果越好。
R2=1−∑(yi−yˉi)2∑(yi−y^i)2
- 当 VIF<10时,不存在多重共线性;
- 当 10⩽VIF<100 时,存在较强的多重共线性;
- 当 VIF⩾100 时,存在严重的多重共线性。
互信息
互信息(Mutual Information):用于衡量两个分类变量相互依赖的程度
I(X;Y)=x∈X∑y∈Y∑P(x,y)logP(x)P(y)P(x,y)
其中 P(x,y) 是 X 和 Y 的联合概率分布,而P(x)和P(y)分别是 X 和 Y 的边缘概率分布。
实际分布 (概率分布) |
y1 |
y2 |
total (margin) |
x1 |
15 (7.5%) |
85 (42.5%) |
100 (50%) |
x2 |
95 (47.5%) |
5 (2.5%) |
100 (50%) |
total (margin) |
110 (55%) |
90 (45%) |
200 (100%) |
I(x1,y1)=0.075∗log0.5∗0.550.075=−0.0974
I(x1,y2)=0.425∗log0.5∗0.450.425=0.2703
I(x2,y1)=0.475∗log0.5∗0.550.475=0.2596
I(x2,y2)=0.025∗log0.5∗0.450.025=−0.0549
互信息 I(X,Y)=−0.0974+0.2703+0.2596−0.0549=0.3776
距离和范数
距离
机器学习中距离(distance)常用来描述两个样本间的相似关系。
欧几里得距离(Euclidean distance)
d(x,y)=i=1∑n(xi−yi)2
切比雪夫距离(Chebyshev Distance)
d(x,y)=max(∣xi−yi∣)
闵可夫斯基距离(Minkowski distance)
d(x,y)=(i=1∑n∣xi−yi∣p)1/p
其中 p∈R 且 p⩾1 。下面是三个常见的例子
- 当 p=1 时,表示 Manhattan 距离,绝对值距离
- 当 p=2 时,表示 Euclidean 距离(L2 范数)。
- 当 p→∞ 时,表示 Chebyshev 距离。
坎贝拉距离(Canberra distance)也称 Lance and Williams distance。
d(x,y)=i=1∑n∣xi∣+∣yi∣∣xi−yi∣
Mahalanobis 距离:是一种有效的计算两个未知样本集的相似度的方法。下式中 Σ−1 是协方差矩阵的逆。
d(x,y)=(x−y)Σ−1(x−y)T
余弦距离(Cosine distance)机器学习中借用这一概念来衡量两个样本之间的差异
cos(x,y)=∥x∥⋅∥y∥x⋅y
杰卡德距离(Jaccard distance):用来衡量两个集合差异性的一种指标,它是杰卡德相似系数的补集,适用于集合相似性度量,字符串相似性度量 。
d(X,Y)=1−J(X,Y)=1−∣X∪Y∣∣X∩Y∣
范数
在机器学习中,我们经常使用被称为范数(norm)的函数衡量向量大小。向量 x∈Rn 的Lp 范数定义如下
∥x∥p=(∣x1∣p+∣x2∣p+⋯+∣xn∣p)1/p
其中 p∈R 且 p⩾1 。直观上来说,向量 x 的范数衡量从原点到点 x 的距离。
- 当 p=1 时,L1 范数表示从原点到点 x 的 Manhattan 距离
- 当 p=2 时,L2 范数表示从原点到点 x 的 Euclidean 距离。L2 范数在机器学习中出现地十分频繁,经常简化表示为∥x∥,略去了下标2。平方L2 范数也经用来衡量向量的大小,可以简单地通过点积 xTx 计算。
另外一个经常在机器学习中出现的范数是 L∞ 范数,也被称为最大范数(max norm)。这个范数表示向量中具有最大幅值的元素的绝对值
∥x∥∞=1⩽i⩽nmax∣xi∣
同时结合L1和L2的混合范数称为弹性网(Elastic-Net)
R(x)=ρ∥x∥1+2(1−ρ)∥x∥22
有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用 Frobenius 范数(Frobenius norm)
∥A∥F=ij∑aij2=tr(ATA)
信息论
自信息
信息的大小跟随机事件的概率有关,越小概率的事情发生产生的信息量越大。如“今天早上太阳升起”如此肯定,没什么信息量,但"今天早上有日食"信息量就很丰富。我们想要通过这种基本想法来量化信息。特别地
- 非常可能发生的事件信息量要比较少,并且极端情况下,确定发生的事件没有信息量。
- 较不可能发生的事件具有更高的信息量。
- 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。
为了满足上述三个性质,定义自信息(self-information)来量化一个事件的信息。若离散型随机变量 X 的概率分布为 P(x),定义自信息
I(x)=logP(x)1=−logP(x)
信息熵
自信息只度量单个事件的信息量,我们可以使用自信息的期望度量整个概率分布中的复杂程度,称为信息熵(information entropy)
H(X)=E(I)=−x∈X∑P(x)logP(x)
其中 P(x) 代表随机事件 X=x 的概率。若 P(x)=0 ,则定义 0log0=0 。通常对数以2为底或以e为底,这时熵的单位分别称作 bit 或 nat 。由定义可知,熵只依赖 X 的分布,而与 X 的取值无关,因此熵也记作 H(P) 。信息熵也表示对离散随机变量 X 进行编码所需的最小字节数。
熵越大,随机变量的不确定性越大。若随机变量可以取 n 个离散值,则
0⩽H(P)⩽logn
随机变量只取两个值的熵曲线如下图

条件熵
条件熵(condition entropy)用来度量在已知随机变量 X 的条件下随机变量 Y 的不确定性,定义为 Y 的条件概率分布 P(Y∣X) 的熵对 X 的期望
H(Y∣X)=x∈X∑P(x)H(Y∣x)=−x∈X∑y∈Y∑P(x,y)logP(y∣x)
其中,P(x,y) 是随机变量 (X,Y) 联合概率分布。其实条件熵可以理解为利用随机变量 X 对 Y 分组后,计算熵 H(Y) 的加权平均值。事件的条件熵一般小于熵,例如,知道西瓜的色泽(青绿,乌黑,浅白)后,西瓜质量的不确定性就会减少了。
交叉熵
如果对于同一个随机变量 X 有两个单独的概率分布P(x)和 Q(x),我们使用交叉熵(cross entropy)来度量两个概率分布间的差异性信息
H(P,Q)=−x∈X∑P(x)logQ(x)
交叉熵表示离散随机变量 X 使用基于 Q 的编码对来自 P 的变量进行编码所需的字节数。
KL散度
KL散度(Kullback-Leibler divergence)亦称相对熵(relative entropy)或信息散度(information divergence),可用于度量两个概率分布之间的差异。给定两个概率分布P(x)和 Q(x)
KL(P∥Q)=x∈X∑P(x)logQ(x)P(x)
若将KL散度的定义展开,可得
KL(P∥Q)=H(P,Q)−H(P)
其中 H(P) 为熵,H(P,Q) 为交叉熵。因此,KL散度可认为是使用基于 Q 的编码对来自 P 的变量进行编码所需的额外字节数。
性质:
- 非负性:由吉布斯不等式可知,KL(P∥Q)⩾0,当且仅当 P≡Q 时,KL(P∥Q)=0。
- 不对称性:相对熵是两个概率分布的不对称性度量,即KL(P∥Q)=KL(Q∥P)
相对熵是一些优化算法,例如最大期望算法(Expectation-Maximization algorithm, EM)的损失函数。此时参与计算的一个概率分布为真实分布,另一个为理论(拟合)分布,相对熵表示使用理论分布拟合真实分布时产生的信息损耗 。
互信息
互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量,或者说是一个随机变量由于已知另一个随机变量而减少的不肯定性。
两个离散随机变量 X 和 Y 的互信息可以定义为:
I(X;Y)=x∈X∑y∈Y∑P(x,y)logP(x)P(y)P(x,y)
其中 P(x,y) 是 X 和 Y 的联合概率分布函数,而P(x)和P(y)分别是 X 和 Y 的边缘概率分布函数。互信息是联合分布P(x,y)与边缘分布P(x)P(y)的相对熵。
性质:
- 对称性:I(X;Y)=I(Y;X)
- 非负性:I(X;Y)⩾0,当且仅当 X 和 Y 独立时,I(X;Y)=0
按照熵的定义展开可以得到:
I(X;Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)=H(X)+H(Y)−H(X,Y)
其中H(X)和H(Y) 是X 和 Y 熵,H(X∣Y)和H(Y∣X)是条件熵,而H(X,Y)是联合熵。

可视化
散点图
散点图(scatter plot):是科研绘图中最常见的图形类型之一,通常用来发现两变量间的关系与相关性
折线图
折线图(line plot):显示随时间而变化的连续数据
直方图
直方图(histogram):是一种统计报告图。是对连续变量的概率分布的估计
核密度估计
核密度估计(kernel density estimate,kde):是一种用于估计概率密度函数的非参数方法,可看作直方图的拟合曲线。
箱线图
箱线图(box plot):是由一组或多组连续型数据的「最小观测值」、第一四分位数、中位数、第三分位数和「最大观测值」来反映数据的分布情况的统计图。

小提琴图
小提琴图(violin plot):本质上是由核密度图和箱线图两种基本图形结合而来的,主要用来显示数据的分布形状。
热力图
热力图(heatmap):是一种通过色块将三维数据使用二维可视化的方法
方差齐性检验
单个正态总体的方差检验:卡方检验 χ2 test 原假设 H0:σ2=σ02
两个正态总体方差比:F检验 原假设 H0:σ12=σ22
分布的拟合度检验
正态分布检验 shapiro test
F分布检验 Kolmogorov-Smirnov(K-S)
二项分布检验 Binomial test
参考文献:
周志华.《机器学习》(西瓜书)
李航.《统计学习方法》