我们讨论一些相对独立的机器学习知识,他们很重要,值得被单独挑出来进行一些研究。
多分类学习
对于多分类学习 我们之前没有进行过系统性的介绍 在Logit回归中介绍了多项式Logit回归简单介绍了一点 但是是很不全面的 这里我们详细的解释如何从最常用的二分类模型构建多分类问题模型
我们的核心思想是 把多分类问题拆解成多个二分类问题来处理
One vs. One(O v O)
把N分类数据集进行二分类配对 产生N(N−1)/2 个分类器 分别把数据放入分类器中进行训练 最后对于我们要进行的分类任务:新样本将同时提交给所有分类器,于是我们将得到N(N−1)/2个分类结果,最终结果通过投票产生
One vs. Rest(OvR)
每次将一个类的样例作为正例、所有其他类的样例作为反例来
训练N个分类器.在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果,所示.若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果
Many vs. Many (MvM)
MvM是绛次将若干个类作为正类,若干个其他类作为反类 容易看出 前面两个方法都是它的特例 容易看出 我们需要一种方法来构造正反类了 最常用的技术为 纠错输出码(Error Correcting Output Codes,简称 ECOC)
它有着一定的纠错能力
ECOC的过程主要分类两步
- 编码:对 N 个类别做河次划分,每次划分将一部分类别划为正类,一部分划为反类,从而形成一个二分类训练集;这样一共产生M 个训练集,可训练出M 个分类器
- 解码:M 个分类器分别对测试样本进行预测,这些预测标记组成一个编码.将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果
一种常用的编码矩阵 (coding matrix)形式为

类别不平衡问题
类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况
在现实的分类学习任务中,我们经常会遇到类别不平衡,例如在通过拆分法解决多分类问题时,即使原始问题中不同类别的训练样例数目相当,在使
用OvR、MvM策略后产生的二分类任务仍可能出现类别不平衡现象
一种最基本的类别不平衡处理方法是再缩放 他通过按照正反例比例来再缩放我们的分类阈值实现 遗憾的是 再缩放的前提是 训练集是真实样本总体的无偏采样 这往往并不是真实的(尤其是我们进行了多分类学习调整) 因此我们还有更加一般的处理手段
现有技术大体上有三类做法:第一类是直接对训练集里的反类样例进行“欠采样”(undersampling),即去除一些反例使得正、反例数目接近,然后再进行学习;第二类是对训练集里的正类样例进行“过采样” (oversampling),即增加一些正例使得正、反例数目接近,然后再进行学习
注意 过采样手法不能简单地对初始正例样本进行重复采样,否则会招致严重的过拟合 一般要采用插值手法来得到额外的正例
欠采样法的代表性算法EasyEnsemble 则是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样对每个学习器来看都进行了欠采样,但在全局来看却不会丢失重要信息
聚类模型的性能度量
聚类是一种相对特殊的机器学习任务类型 我们也需要给出一些略显不同的有效性指标(validity index)
聚类的目标是什么? 直观上看,我们希望 “物以类聚”,即同一簇的样本尽可能彼此相似,不同簇的样本尽可能不同.换言之,聚类结果的“簇内相似度”(intra-cluster similarity)高 且 “簇间相似度”(inter-cluster similarity)低.
外部指标
顾名思义,外部验证度量假设事先知道准确的或真实的聚类。真实的分簇标签(即外部信息)用于评估一个给定的聚类。通常我们是不知道准确的聚类的;但外部度量可以用于测试和验证不同的聚类方法。
所有外部度量都需要一个 r×k 的列联表N,该表是根据某个聚类C和真实值分划T生成的,定义如下:
N(i,j)=nij=∣Ci∩Tj∣
换句话说,计数值nij代表分簇Ci和真实值划分Tj所共有的点的数目。
此外,为明确起见, 令ni=∣Ci∣代表分簇Ci中点的数目,mj=∣Tj∣代表划分Tj中点的数目。列联表可以从T 和C在O(n)时间内计算出来.
基于匹配的度量
纯度
纯度(purity)量化了一个分簇Ci中只包含一个划分的实体的程度。换句话说,它度量了每个分簇有多“纯净”。分簇Ci的纯度定义为:
purityi=ni1j=1maxk{nij}
聚类C的纯度定义为所有分簇纯度的带权和:
purity=i=1∑rnnipurityi=n1i=1∑rj=1maxk{nij}
其中比例nni表示分簇Ci中的点所占的比例。
C的纯度越大,说明它与真实值的吻合度越高。纯度的最大值为 1,指每个簇都是仅由一个划分中的点构成的。若
r=k,则纯度值为1表示一个完美聚类,即分簇与划分一一对应。不过,即使
r>k,纯度也可能为 1(当每个分簇都是一个标准划分的子集时)。若
r<k,则纯度不可能为 1,因为至少有一个分簇包含来自多于一个分划的点。
最大匹配
最大匹配(maximum matching)度量选择分簇和划分之间的某个映射, 使得公共点的数目之和最大化(假设给定一个划分,只有一个分簇可以与之匹配)。这与纯度的情况不同。
形式层面来讲,我们将列联表看作一个完全带权二部图G=(V,E),其中每个划分和每个分簇都是一个节点,即V=C∪T,且存在一条边 (Ci,Tj)∈E,以及权值 w(Ci,Tj)=nij, 对于所有Ci∈C和Tj∈T。
图中的一个匹配(matching)M是E的一个子集,使得M中的边两两不相邻(即没有共同的顶点)。最大匹配度量定义为G中的最大权匹配:
match=argMmax{nw(M)}
其中一个匹配M的权值为M中所有边的权值之和,即w(M)=∑e∈Mw(e)
F Measure
给定分簇Ci,令ji代表包含Ci中最多点的划分,即ji=maxj=1k{nij}。一个分簇Ci的精度(precision)与其纯度相同:
preci=ni1j=1maxk{nij}=niniji
分簇Ci的召回(recall)定义为:
recalli=∣Tji∣niji=mjiniji
其中mji=∣Tji∣。它衡量了划分Tji与分簇Ci共同拥有的点的比例。
F-measure 是每一个分簇的精度值和召回值的调和平均数。分簇Ci的 F-measure 为:
Fi=preci1+recalli12=preci+recalli2⋅preci⋅recalli=ni+mji2niji
聚类C的 F-measure 为各分簇的 F-measure 的均值:
F=r1i=1∑rFi
他希望在精度和召回之间取得平衡
基于熵的度量
条件熵
一个聚类C的熵定义为:
H(C)=−i=1∑rpCilogpCi
其中pCi=nni是分簇Ci的概率。
同样,分划T的熵定义为:
H(T)=−j=1∑kpTjlogpTj其中
pTj=nmj是划分
Tj的概率。
T的分簇熵,即
T关于分簇
Ci的相对熵,定义为:
H(T∣Ci)=−j=1∑k(ninij)log(ninij)
给定聚类C 分划T 的条件熵定义为
H(T∣C)=i=1∑rnniH(T∣Ci)=−i=1∑rj=1∑knnijlog(ninij)=−i=1∑rj=1∑kpijlog(pCipij)
其中pij=nnij是分簇i中的一个点同时也属于划分j的概率。
一个分簇中的点越是分散到不同的划分中,条件熵就越大。对于一个完美聚类,条件熵的值为 0,而在最坏情况下条件熵的值为logk。
归一化互信息
互信息(mutual information)研究聚类C和分划T之间共享的信息量,定义为:
I(C,T)=i=1∑rj=1∑kpijlog(pCi⋅pTjpij)
互信息度量了C和T的联合概率pij和期望联合概率pCi⋅pTj (在独立假设下)之间的相关性。
若C和T是彼此独立的,则pij=pCi⋅pTi,因此I(C,T)=0。不过,互信息没有上界。
展开互信息我们可以得到
I(C,T)=H(T)−H(T∣C)I(C)
据此我们可以给出归一化互信息(NMI)
NMI(C,T)=H(C)I(C,T)⋅H(T)I(C,T)=H(C)⋅H(T)I(C,T)
他的取值范围在 [0,1] 之间 接近1意味着好的聚类
信息差异
这一指标是基于聚类C和真实值分划T的互信息及它们的熵,定义如下:
VI(C,T)=(H(T)−I(C,T)+(H(C)−I(C,T))=H(T)+H(C)−2I(C,T)
信息差异(VI)值为0,当且仅当C与T相同。因此,VI 值越小,聚类C就越好。
成对度量
对数据集 D={x1,x2,…,xm}, 假定通过聚类给出的簇划分为 C={C1, C2,…,Ck}, 参考模型给出的簇划分为C∗={C1∗,C2∗,…,Cs∗}.相应地,令λ 与λ∗ 分别表示与C 和C∗ 对应的簇标记向量. 我们将样本两两配对考虑,定义
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},c=∣DS∣,DS={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},d=∣DD∣, DD={(xi,xj)∣λi=λj,λi∗=λj∗,i<j)},
其中 SS 表示两模型都在相同簇中的样本对 SD表示前者相同簇 后者不同簇的样本 ,DS与DD也同理解释。
据此 我们可以定义
Jaccard
Jaccard 系数(Jaccard Coefficient,简称 JC)
JC=a+b+ca.
完美划分的Jaccard 系数为1
Rand 指数
Rand 指数(Rand Index,简称 RI)
RI=m(m−1)2(a+d).
其中m是总点数,完美划分Rand 指数为1
FM 指数
FM 指数(Fowlkes and Mallows Index,简称 FMI)
FMI=a+ba⋅a+ca.
完美划分FM 指数为1
关联度量
Hubert 统计量的定义
令X和Y为两个对称n×n矩阵,且N=(2n)。令x,y∈RN分别代表对X和 Y 的上三角元素(不包括主对角线元素)通过线性化得到的向量。令μX代表x的逐元素均值, 定义为:
μX=N1i=1∑n−1j=i+1∑nX(i,j)=N1xTx
令zx代表居中的x向量,定义为:
zx=x−1⋅μX
其中1∈RN是全 1 向量。同样,令μY代表y的逐元素均值,zy为居中的y向量。
Hubert 统计量定义为X和Y的平均逐元素乘积:
Γ=N1i=1∑n−1j=i+1∑nX(i,j)⋅Y(i,j)=N1xTy
归一化 Hubert 统计量定义为X和Y的逐元素相关度:
Γn=∑i=1n−1∑j=i+1n(X(i,j)−μX)2∑i=1n−1∑j=i+1n(Y[i]−μY)2∑i=1n−1∑j=i+1n(X(i,j)−μX)(Y(i,j)−μY)=σX2σY2σXY
离散 Hubert 统计量
令T和C为n×n的矩阵,定义如下:
T(i,j)={10yi=yj,i=j其他情况C(i,j)={10y^i=y^j,i=j其他情况
同时,令t,c∈RN分别表示由T和C的上三角元素(不包括对角线元素)构成的N维向量,其中N=(2n)代表不同的点对的数目。最后,令zt和zc代表居中的t向量和c向量。
离散 Hubert 统计量可以利用公式 (17.14)(令x=t,y=c)计算得到:
Γ=N1tTc=NTP
归一化离散 Hubert 统计量
离散 Hubert 统计量的归一化版本即t和c之间的相关度
Γn=∥zt∥∥zc∥ztTzc=cosθ
注意μT=N1tTt是属于同一划分(yi=yj)的点对的比例,不论y^i与y^j是否匹配。因此,可得:
μT=NtTt=NTP+FN
内部指标
非常明显的 外部指标在大多数情况下都没有价值 因为我们没有参考模型可以使用 除非我们是已知真实分类,只是想研究一下聚类算法的性能。内部指标往往依赖于样本间的距离与近似度,因此和机器学习进阶与无监督学习:谱聚类与图聚类联系密切 其中的归一割与模块度可以直接用于性能度量。
考虑样本之间的距离给出下面的定义
avg(C)diam(C)dmin(Ci,Cj)dcen(Ci,Cj)=∣C∣(∣C∣−1)21⩽i<j⩽∣C∣∑dist(xi,xj),=1⩽i<j⩽∣C∣maxdist(xi,xj),=xi∈Ci,xj∈Cjmindist(xi,xj),=dist(μi,μj),
四种样本间距离 如下 分别是 簇内样本间中心距离 簇内样本间最远距离 簇间最近距离 簇间中心距离
DB 指数
DB 指数(Davies-Bouldin Index,简称 DBI)
DBI=k1i=1∑kj=imax(dcen(μi,μj)avg(Ci)+avg(Cj))
DBI 的值越小越好
Dunn 指数
Dunn 指数(Dunn Index,简称 DI)
DI=1⩽i⩽kmin{j=imin(max1⩽l⩽kdiam(Cl)dmin(Ci,Cj))}.
而DI值越大越好.
BetaCV
BetaCV 度量是簇内距离均值与簇间距离均值的比值:
BetaCV=davgavg(C)
BetaCV 值越小,聚类的效果就越好,因为它表示簇内距离平均要小于簇间距离。
相对度量
相对度量比较同一个聚类算法的不同参数的聚类性能
Calinski-Harabasz(CH)
给定数据集D={xi}i=1n,D的散度矩阵(scatter matrix)为:
S=nΣ=j=1∑n(xj−μ)(xj−μ)T
其中μ=n1∑j=1nxj是均值,Σ是协方差矩阵。散度矩阵可以分解为两个矩阵S=SW+SB,其中SW是簇内散度矩阵,SB是簇间散度矩阵,分别表示为:
SW=i=1∑kxj∈Ci∑(xj−μi)(xj−μi)TSB=i=1∑kni(μi−μ)(μi−μ)T
其中μi=ni1∑xj∈Cixj是分簇Ci的均值。
对于一个给定的k值,Calinski-Harabasz(CH)方差比定义为:
CH(k)=tr(SW)/(n−k)tr(SB)/(k−1)=k−1n−k⋅tr(SW)tr(SB)
其中 tr(SW)和 tr(SB)是簇内散度矩阵和簇间散度矩阵的迹(即对角线元素之和)。
对于一个较好的k值,可以预测簇内的散度要相对小于簇间的散度,因此会得到一个较高的 CH(k) 值。另一方面,我们不想要一个很大的k值;
因此可以将 CH 值作图,并找到一个较大的增长处 (且其后没有或只有很小的增长)。
分簇稳定性
分簇稳定性背后的主要思想是:从与D相同的分布抽样得到的数据集生成的聚类应当是相似或“稳定”的。
分簇稳定性的方法可用于找出一个给定的聚类算法的合适参数值; 本书主要考虑合适的k值,即分簇的正确数目。
D的联合概率分布通常是未知的。因此,为以相同的分布抽样数据集,我们可以使用一系列方法,包括随机扰动(random perturbation)、子抽样(subsampling)或自助抽样(bootstrap resampling)。我们先考虑自助法(bootstrapping):
通过从D抽样(带放回,即允许同一个数据点被选择多次,每个样本Di因此是不同的)生成t个大小为n的样本。接下来,对每一个样本Di,分别用不同的k 值 ( 从 2 到 kmax)运行相同的聚类算法。
令Ck(Di)表示给定k时从样本Di获得的聚类。接下来,该方法用某个聚类函数比较所有聚类对Ck(Di)和Ck(Dj)之间的距离。某些外部聚类评估度量可以用作距离度量,例如,令C=Ck(Di),T=Ck(Dj),反之亦然。根据这些值,我们计算每个k值的期望成对距离。最后,使得从再抽样数据集获得的不同聚类的偏差最小的值k∗是k的最佳选择,因为它对应的稳定性最高。
聚类趋向性
聚类趋向性或可聚类性(clusterability)旨在判断数据集D是否存在有意义的分组。这样做通常很难,因为首先很难定义什么是一个分簇,例如分区的、层次式的、基于密度的、 基于图的,等等。
即便确定了分簇的类型,对于一个给定的数据集D,依然很难定义一个合适的零模型(null model,即没有任何聚类结构的模型)。此外,即便判定数据是可聚类的,我们依然要面临判断分簇数目的问题。
Hopkins 统计量是一种对空间随机性的稀疏抽样检验。给定一个包含n个点的数据集D,我们生成t个随机子样本Ri (每个子样本包含m个点,其中m≪n)。这些样本的数据空间与D相同,在每个维度上随机均匀地生成。
此外,我们还直接从D中生成t个子样本(每个含m个点),使用无放回的抽样。令Di代表第i个直接子样本。接下来,计算每个xj∈Di和D中每个点之间的最小距离:
δmin(xj)=xi∈D,xi=xjmin{δ(xj,xi)}
第i对样本Ri和Di Hopkins 统计量(在d个维度上)定义:
HSi=∑yj∈Ri(δmin(yj))d+∑xj∈Di(δmin(xj))d∑yj∈Ri(δmin(yj))d
这一统计量将随机生成的数据点的最近邻分布和D中数据点的随机子集的最近邻分布进行比较。若数据具有良好的聚类性,我们期望\delta_\min(x_j)要小于\delta_\min(y_j)\text{,且在这种情况下,HS}_i 趋向于 1。
若两个最近邻距离相似,则 HSi取值接近于 0.5,这意味着数据近乎随机且没有明显的聚类性。
最后,若\delta_\min(x_j)的值要大于\delta_\min(y_j),则 HSi倾向于 0,这意味着点排斥, 且无聚类。
根据t个不同的 HSi值,可以通过计算该统计量的均值和方差来判断D是否可聚类。