Machine Learning Supplementary Topics: Multiclass Learning, Class Imbalance, and Clustering Evaluation

Hyacehila

我们讨论一些相对独立的机器学习知识,他们很重要,值得被单独挑出来进行一些研究。

多分类学习

对于多分类学习 我们之前没有进行过系统性的介绍 在Logit回归中介绍了多项式Logit回归简单介绍了一点 但是是很不全面的 这里我们详细的解释如何从最常用的二分类模型构建多分类问题模型

我们的核心思想是 把多分类问题拆解成多个二分类问题来处理

One vs. One(O v O)

NN分类数据集进行二分类配对 产生N(N1)/2N(N-1)/2 个分类器 分别把数据放入分类器中进行训练 最后对于我们要进行的分类任务:新样本将同时提交给所有分类器,于是我们将得到N(N1)/2N(N-1)/2个分类结果,最终结果通过投票产生

One vs. Rest(OvR)

每次将一个类的样例作为正例、所有其他类的样例作为反例来

训练NN个分类器.在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果,所示.若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果

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×kr\times k 的列联表NN,该表是根据某个聚类C\mathcal{C}和真实值分划TT生成的,定义如下:

N(i,j)=nij=CiTjN(i,j)=n_{ij}=|C_i\cap T_j|

换句话说,计数值nijn_{ij}代表分簇CiC_i和真实值划分TjT_j所共有的点的数目。

此外,为明确起见, 令ni=Cin_i=|C_i|代表分簇CiC_i中点的数目,mj=Tjm_j=|T_j|代表划分TjT_j中点的数目。列联表可以从TTC\mathcal{C}O(n)O(n)时间内计算出来.

基于匹配的度量

纯度

纯度(purity)量化了一个分簇CiC_{i}中只包含一个划分的实体的程度。换句话说,它度量了每个分簇有多“纯净”。分簇CiC_i的纯度定义为:

purityi=1nimaxj=1k{nij}\mathrm{purity}_i=\frac1{n_i}\max_{j=1}^k\{n_{ij}\}

聚类CC的纯度定义为所有分簇纯度的带权和:

purity=i=1rninpurityi=1ni=1rmaxj=1k{nij}\mathrm{purity}=\sum_{i=1}^r\frac{n_i}n\text{purity}_i=\frac1n\sum_{i=1}^r\max_{j=1}^k\{n_{ij}\}

其中比例nin\frac{n_i}n表示分簇CiC_i中的点所占的比例。

CC的纯度越大,说明它与真实值的吻合度越高。纯度的最大值为 1,指每个簇都是仅由一个划分中的点构成的。若r=kr=k,则纯度值为1表示一个完美聚类,即分簇与划分一一对应。不过,即使r>kr>k,纯度也可能为 1(当每个分簇都是一个标准划分的子集时)。若r<kr<k,则纯度不可能为 1,因为至少有一个分簇包含来自多于一个分划的点。
最大匹配

最大匹配(maximum matching)度量选择分簇和划分之间的某个映射, 使得公共点的数目之和最大化(假设给定一个划分,只有一个分簇可以与之匹配)。这与纯度的情况不同。

形式层面来讲,我们将列联表看作一个完全带权二部图G=(V,E)G=(V,E),其中每个划分和每个分簇都是一个节点,即V=CTV=\mathcal{C}\cup\mathcal{T},且存在一条边 (Ci,Tj)E(C_i,T_j)\in E,以及权值 w(Ci,Tj)=nijw(C_i,T_j)=n_{ij}, 对于所有CiCC_i\in\mathcal{C}TjTT_j\in\mathcal{T}

图中的一个匹配(matching)MMEE的一个子集,使得MM中的边两两不相邻(即没有共同的顶点)。最大匹配度量定义为GG中的最大权匹配:

match=argmaxM{w(M)n}\text{match}=\arg\max_M\left\{\frac{w(M)}n\right\}

其中一个匹配MM的权值为MM中所有边的权值之和,即w(M)=eMw(e)w(M)=\sum_e\in Mw(e)

F Measure

给定分簇CiC_i,令jij_i代表包含CiC_i中最多点的划分,即ji=maxj=1k{nij}j_i=\max_j=1^k\{n_{ij}\}。一个分簇CiC_i的精度(precision)与其纯度相同:

preci=1nimaxj=1k{nij}=nijini\mathrm{prec}_i=\frac{1}{n_i}\max_{j=1}^k\{n_{ij}\}=\frac{n_{ij_i}}{n_i}

分簇CiC_i的召回(recall)定义为:

recalli=nijiTji=nijimji\mathrm{recall}_i=\frac{n_{ij_i}}{|T_{j_i}|}=\frac{n_{ij_i}}{m_{j_i}}

其中mji=Tjim_{j_i}=|T_{j_i}|。它衡量了划分TjiT_{j_i}与分簇CiC_i共同拥有的点的比例。

F-measure 是每一个分簇的精度值和召回值的调和平均数。分簇CiC_i的 F-measure 为:

Fi=21preci+1recalli=2precirecallipreci+recalli=2nijini+mjiF_i=\frac{2}{\frac{1}{\mathrm{prec}_i}+\frac{1}{\mathrm{recall}_i}}=\frac{2\cdot\mathrm{prec}_i\cdot\mathrm{recall}_i}{\mathrm{prec}_i+\mathrm{recall}_i}=\frac{2n_{ij_i}}{n_i+m_{j_i}}

聚类C\mathcal{C}的 F-measure 为各分簇的 F-measure 的均值:

F=1ri=1rFiF=\frac1r\sum_{i=1}^rF_i

他希望在精度和召回之间取得平衡

基于熵的度量

条件熵

一个聚类CC的熵定义为:

H(C)=i=1rpCilogpCiH(\mathcal{C})=-\sum_{i=1}^rp_{C_i}\log p_{C_i}

其中pCi=ninp_{C_i}=\frac{n_i}n是分簇CiC_i的概率。

同样,分划TT的熵定义为:

H(T)=j=1kpTjlogpTjH(\mathcal{T})=-\sum_{j=1}^kp_{T_j}\log p_{T_j}其中pTj=mjnp_{T_j}=\frac{m_j}n是划分TjT_j的概率。 TT的分簇熵,即TT关于分簇CiC_i的相对熵,定义为: H(TCi)=j=1k(nijni)log(nijni)H(\mathcal{T}|C_i)=-\sum_{j=1}^k\left(\frac{n_{ij}}{n_i}\right)\log\left(\frac{n_{ij}}{n_i}\right)

给定聚类CC 分划TT 的条件熵定义为

H(TC)=i=1rninH(TCi)=i=1rj=1knijnlog(nijni)=i=1rj=1kpijlog(pijpCi)\begin{aligned}H\left(T|\mathcal{C}\right)&=\sum_{i=1}^r\frac{n_i}{n}H(\mathcal{T}|C_i)=-\sum_{i=1}^r\sum_{j=1}^k\frac{n_{ij}}{n}\log\left(\frac{n_{ij}}{n_i}\right)\\&=-\sum_{i=1}^r\sum_{j=1}^kp_{ij}\log\left(\frac{p_{ij}}{p_{C_i}}\right)\end{aligned}

其中pij=nijnp_{ij}=\frac{n_{ij}}n是分簇ii中的一个点同时也属于划分jj的概率。

一个分簇中的点越是分散到不同的划分中,条件熵就越大。对于一个完美聚类,条件熵的值为 0,而在最坏情况下条件熵的值为logk\log k

归一化互信息

互信息(mutual information)研究聚类CC和分划TT之间共享的信息量,定义为:

I(C,T)=i=1rj=1kpijlog(pijpCipTj)I(\mathcal{C},\mathcal{T})=\sum_{i=1}^r\sum_{j=1}^kp_{ij}\log\left(\frac{p_{ij}}{p_{C_i}\cdot p_{T_j}}\right)

互信息度量了C\mathcal{C}T\mathcal{T}的联合概率pijp_{ij}和期望联合概率pCipTjp_{C_i}\cdot p_{T_j} (在独立假设下)之间的相关性。

CCTT是彼此独立的,则pij=pCipTip_{ij}=p_{C_i}\cdot p_{T_i},因此I(C,T)=0I(\mathcal{C},T)=0。不过,互信息没有上界。

展开互信息我们可以得到

I(C,T)=H(T)H(TC)I(C)I(\mathcal{C},\mathcal{T})=H(\mathcal{T})-H(\mathcal{T}|\mathcal{C})I(\mathcal{C})

据此我们可以给出归一化互信息(NMI)

NMI(C,T)=I(C,T)H(C)I(C,T)H(T)=I(C,T)H(C)H(T)\mathrm{NMI}(\mathcal{C},\mathcal{T})=\sqrt{\frac{I(\mathcal{C},\mathcal{T})}{H(\mathcal{C})}\cdot\frac{I(\mathcal{C},\mathcal{T})}{H(\mathcal{T})}}=\frac{I(\mathcal{C},\mathcal{T})}{\sqrt{H(\mathcal{C})\cdot H(\mathcal{T})}}

他的取值范围在 [0,1][0,1] 之间 接近1意味着好的聚类

信息差异

这一指标是基于聚类CC和真实值分划TT的互信息及它们的熵,定义如下:

VI(C,T)=(H(T)I(C,T)+(H(C)I(C,T))=H(T)+H(C)2I(C,T)\begin{aligned}\mathrm{VI}(\mathcal{C},\mathcal{T})&=(H(\mathcal{T})-I(\mathcal{C},\mathcal{T})+(H(\mathcal{C})-I(\mathcal{C},\mathcal{T}))\\&=H(\mathcal{T})+H(\mathcal{C})-2I(\mathcal{C},\mathcal{T})\end{aligned}

信息差异(VI)值为0,当且仅当CCTT相同。因此,VI 值越小,聚类C\mathcal{C}就越好。

成对度量

对数据集 D={x1,x2,,xm}D=\{\boldsymbol{x}_1,\boldsymbol{x}_2,\ldots,\boldsymbol{x}_m\}, 假定通过聚类给出的簇划分为 C={C1\mathcal{C}=\{C_1, C2,,Ck}C_2,\ldots,C_k\}, 参考模型给出的簇划分为C={C1,C2,,Cs}C^*=\{C_1^*,C_2^*,\ldots,C_s^*\}.相应地,令λ\lambdaλ\lambda^* 分别表示与CCCC^* 对应的簇标记向量. 我们将样本两两配对考虑,定义

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)},\begin{gathered} a= |SS|,SS=\{(\boldsymbol{x}_{i},\boldsymbol{x}_{j})\mid\lambda_{i}=\lambda_{j},\lambda_{i}^{*}=\lambda_{j}^{*},i<j)\}, \\ b= |SD|,SD=\{(\boldsymbol{x}_{i},\boldsymbol{x}_{j})\mid\lambda_{i}=\lambda_{j},\lambda_{i}^{*}\neq\lambda_{j}^{*},i<j)\}, \\ c= |DS|,DS=\{(\boldsymbol{x}_{i},\boldsymbol{x}_{j})\mid\lambda_{i}\neq\lambda_{j},\lambda_{i}^{*}=\lambda_{j}^{*},i<j)\}, \\ d= |DD|,~DD=\{(\boldsymbol{x}_{i},\boldsymbol{x}_{j})\mid\lambda_{i}\neq\lambda_{j},\lambda_{i}^{*}\neq\lambda_{j}^{*},i<j)\}, \end{gathered}

其中 SS 表示两模型都在相同簇中的样本对 SD表示前者相同簇 后者不同簇的样本 ,DS与DD也同理解释。

据此 我们可以定义

Jaccard

Jaccard 系数(Jaccard Coefficient,简称 JC)

JC=aa+b+c.\mathrm{JC}=\frac{a}{a+b+c}.

完美划分的Jaccard 系数为1

Rand 指数

Rand 指数(Rand Index,简称 RI)

RI=2(a+d)m(m1).\mathrm{RI}=\frac{2(a+d)}{m(m-1)}.

其中mm是总点数,完美划分Rand 指数为1

FM 指数

FM 指数(Fowlkes and Mallows Index,简称 FMI)

FMI=aa+baa+c.\mathrm{FMI}=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}}.

完美划分FM 指数为1

关联度量

Hubert 统计量的定义

XXYY为两个对称n×nn\times n矩阵,且N=(n2)N=\binom n2。令x,yRNx,y\in\mathbb{R}^N分别代表对XX和 Y 的上三角元素(不包括主对角线元素)通过线性化得到的向量。令μX\mu_X代表xx的逐元素均值, 定义为:

μX=1Ni=1n1j=i+1nX(i,j)=1NxTx\mu_X=\frac1N\sum_{i=1}^{n-1}\sum_{j=i+1}^nX(i,j)=\frac1Nx^\mathrm{T}x

zxz_x代表居中的xx向量,定义为:

zx=x1μXz_x=x-1\cdot\mu_X

其中1RN1\in R^N是全 1 向量。同样,令μY\mu_Y代表yy的逐元素均值,zyz_y为居中的yy向量。

Hubert 统计量定义为XXYY的平均逐元素乘积:

Γ=1Ni=1n1j=i+1nX(i,j)Y(i,j)=1NxTy\Gamma=\frac1N\sum_{i=1}^{n-1}\sum_{j=i+1}^nX(i,j)\cdot\boldsymbol{Y}(i,j)=\frac1N\boldsymbol{x}^\mathrm{T}\boldsymbol{y}

归一化 Hubert 统计量定义为XXYY的逐元素相关度:

Γn=i=1n1j=i+1n(X(i,j)μX)(Y(i,j)μY)i=1n1j=i+1n(X(i,j)μX)2i=1n1j=i+1n(Y[i]μY)2=σXYσX2σY2\Gamma_n=\frac{\sum_{i=1}^{n-1}\sum_{j=i+1}^n(\boldsymbol{X}(i,j)-\mu_X)(\boldsymbol{Y}(i,j)-\mu_Y)}{\sqrt{\sum_{i=1}^{n-1}\sum_{j=i+1}^n(\boldsymbol{X}(i,j)-\mu_X)^2\quad\sum_{i=1}^{n-1}\sum_{j=i+1}^n(\boldsymbol{Y}[i]-\mu_Y)^2}}=\frac{\sigma_{XY}}{\sqrt{\sigma_X^2\sigma_Y^2}}
离散 Hubert 统计量

TTCCn×nn\times n的矩阵,定义如下:

T(i,j)={1yi=yj,ij0其他情况C(i,j)={1y^i=y^j,ij0其他情况\left.\boldsymbol{T}(i,j)=\left\{\begin{array}{ll}1&y_i=y_j,\:i\neq j\\0&\text{其他情况}\end{array}\right.\right.\quad\boldsymbol{C}(i,j)=\left\{\begin{array}{ll}1&\hat{y}_i=\hat{y}_j,\:i\neq j\\0&\text{其他情况}\end{array}\right.

同时,令t,cRNt,c\in\mathbb{R}^N分别表示由TTCC的上三角元素(不包括对角线元素)构成的NN维向量,其中N=(n2)N=\binom n2代表不同的点对的数目。最后,令ztz_tzcz_c代表居中的tt向量和cc向量。

离散 Hubert 统计量可以利用公式 (17.14)(令x=t,y=cx=t,y=c)计算得到:

Γ=1NtTc=TPN\Gamma=\frac1Nt^\mathrm{T}c=\frac{\mathrm{TP}}N
归一化离散 Hubert 统计量

离散 Hubert 统计量的归一化版本即ttcc之间的相关度

Γn=ztTzcztzc=cosθ\Gamma_n=\frac{z_t^\mathrm{T}z_c}{\|z_t\|\|z_c\|}=\cos\theta

注意μT=1NtTt\mu_T=\frac1Nt^\mathrm{T}t是属于同一划分(yi=yjy_i=y_j)的点对的比例,不论y^i\hat{y}_iy^j\hat{y}_j是否匹配。因此,可得:

μT=tTtN=TP+FNN\mu_T=\frac{t^\mathrm{T}t}N=\frac{\mathrm{TP}+\mathrm{FN}}N

内部指标

非常明显的 外部指标在大多数情况下都没有价值 因为我们没有参考模型可以使用 除非我们是已知真实分类,只是想研究一下聚类算法的性能。内部指标往往依赖于样本间的距离与近似度,因此和机器学习进阶与无监督学习:谱聚类与图聚类联系密切 其中的归一割与模块度可以直接用于性能度量。

考虑样本之间的距离给出下面的定义

avg(C)=2C(C1)1i<jCdist(xi,xj),diam(C)=max1i<jCdist(xi,xj),dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj),dcen(Ci,Cj)=dist(μi,μj),\begin{aligned} \mathrm{avg}(C)& =\frac{2}{|C|(|C|-1)}\sum_{1\leqslant i<j\leqslant|C|}\operatorname{dist}(\boldsymbol{x}_{i},\boldsymbol{x}_{j}), \\ \operatorname{diam}(C)& =\max_{1\leqslant i<j\leqslant|C|}\mathrm{dist}(\boldsymbol{x}_{i},\boldsymbol{x}_{j}), \\ d_{\min}(C_{i},C_{j})& =\min_{\boldsymbol{x}_{i}\in C_{i},\boldsymbol{x}_{j}\in C_{j}}\mathrm{dist}(\boldsymbol{x}_{i},\boldsymbol{x}_{j}), \\ d_{\mathrm{cen}}(C_{i},C_{j})& =\mathrm{dist}(\boldsymbol{\mu}_{i},\boldsymbol{\mu}_{j}), \end{aligned}

四种样本间距离 如下 分别是 簇内样本间中心距离 簇内样本间最远距离 簇间最近距离 簇间中心距离

DB 指数

DB 指数(Davies-Bouldin Index,简称 DBI)

DBI=1ki=1kmaxji(avg(Ci)+avg(Cj)dcen(μi,μj))\mathrm{DBI}={\frac{1}{k}}\sum_{i=1}^{k}\max_{j\neq i}\left({\frac{\mathrm{avg}(C_{i})+\mathrm{avg}(C_{j})}{d_{\mathrm{cen}}(\mu_{i},\mu_{j})}}\right)

DBI 的值越小越好

Dunn 指数

Dunn 指数(Dunn Index,简称 DI)

DI=min1ik{minji(dmin(Ci,Cj)max1lkdiam(Cl))}.\mathrm{DI}=\min\limits_{1\leqslant i\leqslant k}\left\{\min\limits_{j\neq i}\left(\frac{d_{\min}(C_i,C_j)}{\max_{1\leqslant l\leqslant k}\operatorname{diam}(C_l)}\right)\right\}.

而DI值越大越好.

BetaCV

BetaCV 度量是簇内距离均值与簇间距离均值的比值:

BetaCV=avg(C)davg\mathrm{BetaCV}=\frac{avg(C)}{d_{avg}}

BetaCV 值越小,聚类的效果就越好,因为它表示簇内距离平均要小于簇间距离。

相对度量

相对度量比较同一个聚类算法的不同参数的聚类性能

Calinski-Harabasz(CH)

给定数据集D={xi}i=1n,DD=\{x_i\}_{i=1}^n,D的散度矩阵(scatter matrix)为:

S=nΣ=j=1n(xjμ)(xjμ)TS=n\boldsymbol{\Sigma}=\sum_{j=1}^n(\boldsymbol{x}_j-\boldsymbol{\mu})(\boldsymbol{x}_j-\boldsymbol{\mu})^\mathrm{T}

其中μ=1nj=1nxj\mu=\frac1n\sum_{j=1}^nx_j是均值,Σ\Sigma是协方差矩阵。散度矩阵可以分解为两个矩阵S=SW+SBS=S_W+S_B,其中SWS_W是簇内散度矩阵,SBS_B是簇间散度矩阵,分别表示为:

SW=i=1kxjCi(xjμi)(xjμi)TSB=i=1kni(μiμ)(μiμ)T\begin{aligned}&S_{W}=\sum_{i=1}^k\sum_{x_j\in C_i}(x_j-\mu_i)(x_j-\mu_i)^\mathrm{T}\\&S_{B}=\sum_{i=1}^kn_i(\mu_i-\mu)(\mu_i-\mu)^\mathrm{T}\end{aligned}

其中μi=1nixjCixj\mu_i=\frac1{n_i}\sum_{x_j\in C_i}x_j是分簇CiC_i的均值。

对于一个给定的kk值,Calinski-Harabasz(CH)方差比定义为:

CH(k)=tr(SB)/(k1)tr(SW)/(nk)=nkk1tr(SB)tr(SW)\begin{aligned}CH(k)&=\frac{\mathrm{tr}(S_B)/(k-1)}{\mathrm{tr}(S_W)/(n-k)}\\&=\frac{n-k}{k-1}\cdot\frac{\mathrm{tr}(S_B)}{\mathrm{tr}(S_W)}\end{aligned}

其中 tr(SW)(S_W)和 tr(SB)(S_B)是簇内散度矩阵和簇间散度矩阵的迹(即对角线元素之和)。

对于一个较好的kk值,可以预测簇内的散度要相对小于簇间的散度,因此会得到一个较高的 CH(k)CH(k) 值。另一方面,我们不想要一个很大的kk值;

因此可以将 CH 值作图,并找到一个较大的增长处 (且其后没有或只有很小的增长)。

分簇稳定性

分簇稳定性背后的主要思想是:从与DD相同的分布抽样得到的数据集生成的聚类应当是相似或“稳定”的。

分簇稳定性的方法可用于找出一个给定的聚类算法的合适参数值; 本书主要考虑合适的kk值,即分簇的正确数目。

DD的联合概率分布通常是未知的。因此,为以相同的分布抽样数据集,我们可以使用一系列方法,包括随机扰动(random perturbation)、子抽样(subsampling)或自助抽样(bootstrap resampling)。我们先考虑自助法(bootstrapping):

通过从DD抽样(带放回,即允许同一个数据点被选择多次,每个样本DiD_i因此是不同的)生成tt个大小为nn的样本。接下来,对每一个样本DiD_i,分别用不同的kk 值 ( 从 2 到 kmaxk^\mathrm{max})运行相同的聚类算法。

Ck(Di)C_k(D_i)表示给定kk时从样本DiD_i获得的聚类。接下来,该方法用某个聚类函数比较所有聚类对Ck(Di)C_k(D_i)Ck(Dj)C_k(D_j)之间的距离。某些外部聚类评估度量可以用作距离度量,例如,令C=Ck(Di),T=Ck(Dj)C=C_k(D_i),T=C_k(D_j),反之亦然。根据这些值,我们计算每个kk值的期望成对距离。最后,使得从再抽样数据集获得的不同聚类的偏差最小的值kk^*kk的最佳选择,因为它对应的稳定性最高。

聚类趋向性

聚类趋向性或可聚类性(clusterability)旨在判断数据集DD是否存在有意义的分组。这样做通常很难,因为首先很难定义什么是一个分簇,例如分区的、层次式的、基于密度的、 基于图的,等等。

即便确定了分簇的类型,对于一个给定的数据集DD,依然很难定义一个合适的零模型(null model,即没有任何聚类结构的模型)。此外,即便判定数据是可聚类的,我们依然要面临判断分簇数目的问题。

Hopkins 统计量是一种对空间随机性的稀疏抽样检验。给定一个包含nn个点的数据集DD,我们生成tt个随机子样本RiR_i (每个子样本包含mm个点,其中mnm\ll n)。这些样本的数据空间与DD相同,在每个维度上随机均匀地生成。

此外,我们还直接从DD中生成tt个子样本(每个含mm个点),使用无放回的抽样。令DiD_i代表第ii个直接子样本。接下来,计算每个xjDix_j\in D_iDD中每个点之间的最小距离:

δmin(xj)=minxiD,xixj{δ(xj,xi)}\delta_{\min}(\boldsymbol{x}_j)=\min_{\boldsymbol{x}_i\in D,\boldsymbol{x}_i\neq\boldsymbol{x}_j}\{\delta(\boldsymbol{x}_j,\boldsymbol{x}_i)\}

ii对样本RiR_iDiD_i Hopkins 统计量(在dd个维度上)定义:

HSi=yjRi(δmin(yj))dyjRi(δmin(yj))d+xjDi(δmin(xj))d\mathrm{HS}_i=\frac{\sum_{y_j\in\mathbf{R}_i}(\delta_{\min}(\boldsymbol{y}_j))^d}{\sum_{y_j\in\mathbf{R}_i}(\delta_{\min}(\boldsymbol{y}_j))^d+\sum_{\boldsymbol{x}_j\in\boldsymbol{D}_i}(\delta_{\min}(\boldsymbol{x}_j))^d}

这一统计量将随机生成的数据点的最近邻分布和DD中数据点的随机子集的最近邻分布进行比较。若数据具有良好的聚类性,我们期望\delta_\min(x_j)要小于\delta_\min(y_j)\text{,且在这种情况下,HS}_i 趋向于 1。

若两个最近邻距离相似,则 HSi_i取值接近于 0.5,这意味着数据近乎随机且没有明显的聚类性。

最后,若\delta_\min(x_j)的值要大于\delta_\min(y_j),则 HSi_i倾向于 0,这意味着点排斥, 且无聚类。

根据tt个不同的 HSi_i值,可以通过计算该统计量的均值和方差来判断DD是否可聚类。

  • Title: Machine Learning Supplementary Topics: Multiclass Learning, Class Imbalance, and Clustering Evaluation
  • Author: Hyacehila
  • Created at : 2024-09-23 14:22:06
  • Link: https://hyacehila.github.io//blog/2024/09/23/machine-learning-supplementary-topics/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
Machine Learning Supplementary Topics: Multiclass Learning, Class Imbalance, and Clustering Evaluation