聚类任务介绍

目录

1. 聚类任务的定义

1.1 聚类任务的目的 

1.2 形式化描述 

2 性能度量 

2.1 性能度量的目的 

2.2 外部指标 

2.2.1 Jaccard系数 

2.2.2 FMI 

 2.2.3 RI

2.2.4 Acc (Cluster Accuracy)聚类精度 

2.2.5 Purity(纯度) 

2.2.6 NMI(Normalized Mutual Information)归一化互信息 

2.3 内部指标 

2.3.1 DB指数(DBI)

 

2.3.2 Dune指数(DI)

 


1. 聚类任务的定义

一般认为,聚类任务属于无监督学习任务(Unsupervised Learning) 

1.1 聚类任务的目的 

聚类试图将样本划分为若干通常不相交的子集。 

1.2 形式化描述 

  • 假设样本集D=\{x_1,x_2,x_3,...,x_m\}共有m个样本
  • 每个样本x_i=\{ x_{i1},x_{i2},...,x_{in}\} 是一个n维的特征向量
  • 样本被划分为k个不相交的簇(cluster)\{ C_i\vert i=1,2,...,k\}。我们用 \lambda_j\in \{1,2...,k\}表示样本x_j的簇标记。 i.e. x_j \in C_{\lambda_j}
  • 聚类结果可以用m个元素的簇标记向量\lambda=\{ \lambda_1,\lambda_2,...,\lambda_m\} 来表示

2 性能度量 

2.1 性能度量的目的 

我们希望能够评估聚类效果的好坏。

比较理想的聚类效果应该是:簇内相似度高,簇间相似度低 

可以将使用的性能度量作为聚类过程的优化目标

根据是否需要参考模型,可以将评价聚类效果的指标分为:外部指标(external index)和内部指标(internal index) 

其中,参考模型可以认为是一个我们认为能够完全正确对该数据集进行聚类的模型,能够为我们提供ground truth.

2.2 外部指标 

标准:准确率(贴合情况) 

 对样本集D=\{x_1,x_2,x_3,...,x_m\},通过我们的聚类算法给出的簇划分为:C=\{ C_1,C_2,...C_k\},而参考模型给出的簇划分为:C^*=\{ C_1^*,C_2^*,...C_s^*\}(其中s可能不等于k)。

\lambda,\lambda^*为两个簇划分对应的样本簇标记向量,则:

a=\left | SS \right |,\, SS=\{ (x_i,x_j) \vert \lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i<j\},

b=\left | SD \right |,\, SD=\{ (x_i,x_j) \vert \lambda_i=\lambda_j,\lambda_i^*\, !=\lambda_j^*,i<j\},

c=\left | DS \right |,\, DS=\{ (x_i,x_j) \vert \lambda_i\,!=\lambda_j,\lambda_i^*=\lambda_j^*,i<j\},

d=\left | DD \right |,\, DD=\{ (x_i,x_j) \vert \lambda_i\,!=\lambda_j,\lambda_i^*\,!=\lambda_j^*,i<j\},

理解

  •  a 表示满足两个样本在C获得的簇标签相同,在C^*获得标签也相同的数量
  •  b 表示满足两个样本在C获得的簇标签相同,在C^*获得标签不相同的数量
  •  c 表示满足两个样本在C获得的簇标签不相同,在C^*获得标签相同的数量 
  •  d 表示满足两个样本在C获得的簇标签不相同,在C^*获得标签也不相同的数量 
  • a+b+c+d=C_m^2=m(m-1)/2

2.2.1 Jaccard系数 

JC=\frac{a}{a+b+c}

2.2.2 FMI 

 FMI=\sqrt{\frac{a}{a+b}\times \frac{a}{a+c}}

 2.2.3 RI

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

  • 上述三种指数可以表示在C,C^*均划分为相同簇的样本对的数量的总量占比。
  • 取值范围为[0,1]值越大越好。值越大表示聚类越贴合实际情况,划分正确率越高。
     

2.2.4 Acc (Cluster Accuracy)聚类精度 

Acc=\frac{\sum_{i=1}^{n}\delta (\lambda_i^*,map(\lambda_i))}{n} 

其中: \delta表示指示函数,定义如下:

\delta(x,y)=\left\{\begin{matrix} 1\,\,\,\, if \, x==y &\\ 0\,\,\, otherwise& \end{matrix}\right.

而式中的map则表示最佳类标的重现分配,以确保统计的正确。一般的该最佳重分配可以通过匈牙利算法(Kuhn-Munkres or Hungarian Algorithm)实现,从而在多项式时间内求解该任务(标签)分配问题。 

简单来说,就是此时是希望把这个无监督的聚类效果评估问题转化为一个有监督的分类效果评估问题;由于聚类的结果具有“轮换不变性”

e.g. 一个聚类结果{0,1,2,0,2,2,1}, 我可以对每一个簇做映射,例如把0映射到1,1映射到2,2映射到0,因此上面这个聚类结果也等价于:{1,2,0,1,0,0,2},其他映射也同理;

上面的map函数就是用来寻找一个最好的映射,该映射和ground truth计算出来的准确率(贴合度)最高。

2.2.5 Purity(纯度) 

Purity(C,C^*)=\frac{1}{n}\sum_{i=1}^k \max_j\left | C_i\cap C_j^* \right | 

  • i.e. 对于每一个簇C_i,在ground truth中找一个与其“最相似”(交最大)的簇C_j^*,计算\left | C_i\cap C_j^* \right |,统计k个簇的这个和值,取平均。
  • Purity\in [0,1],越接近1表示聚类结果越好
  • 但是该值无法用于权衡聚类质量和簇个数之间的关系。

聚类任务介绍_第1张图片 

2.2.6 NMI(Normalized Mutual Information)归一化互信息 

NMI(C,C^*)=\frac{I(C;C^*)}{(H(C)+H(C^*))/2} 

其中,I表示互信息(Mutual Information),H为熵

I(C;C^*)=\sum_k \sum_j P(C_k\cap C_j^*)log \frac{P(C_k\cap C_j^*)}{P(C_k) P(C_j^*))}=\sum_k \sum_j \frac{\left | C_k \cap C_j^* \right |}{n}log \frac{n*\left | C_k \cap C_j^* \right |}{\left | C_k \right |\left | C_j^* \right |} 

其中,P(C_k),P(C_j^*),P(C_k \cap C_j^*)可以分别看作:样本属于簇C_k ,属于簇C_j^* ,以及同时属于两者的概率。第二个等价式子则是由概率的极大似然估计推导而来的。

互信息I(C;C^*)表示给定簇信息C^*的前提下,类别信息C的增加量,或者说是不确定度的减少量,直观的,互信息还可以写成以下形式:

I(C;C*)=H(C)-H(C \vert C^*)

  • 互信息的最小值为0,当两者独立的情况下,C^*的信息对C没有带来任何有用的信息,也即不确定度没有减少
  • 如果C和C^*的关系越密切,那么两者的互信息也越大。如果C完整重现了C^*,则此时互信息最大,为:

I(C;C^*)=H(C)=H(C^*) 

H(C)=-\sum_k P(C_k) logP(C_k)=-\sum_k \frac{\left | C_k \right |}{n} log \frac{\left | C_k \right |}{n}

2.3 内部指标 

标准:簇内相似度高,簇间相似度低 

定义四个簇划分指标,再利用这些指标度量内部指标 

  • 簇内样本的平均距离

avg(C)=\frac{2}{\left | C \right |(\left | C \right |-1)}\sum_{1\leq i \leq j \leq \left | C \right |} dist(x_i,x_j)

其中\left | C \right | 表示某一个簇的元素的数量

  •  簇内样本的最远距离

diam(C)=\max_{1\leq i \leq j \leq \left | C \right |} dist(x_i,x_j)

 其中\left | C \right | 表示某一个簇的元素的数量 

  • 簇间样本的最短距离

d_{min}(C_i,C_j)=\min_{x_i \in C_i,x_j \in C_j} dist(x_i,x_j)

i.e. 求C_i,C_j中样本之间的最短距离 

  • 簇间中心点的距离

 d_{cen}(C_i,C_j)=dist(\mu_i,\mu_j)

其中\mu_i表示簇C_i的簇首 

2.3.1 DB指数(DBI)

DBI=\frac{1}{k}\sum_{i=1}^k \max_{j!=i} \frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)} 

DBI值越小,表示簇内越紧密,簇间越分散

2.3.2 Dune指数(DI)

DI=\min_{1\leq i \leq k}\{\min_{j!=i}(\frac{d_{min}(C_i,C_j)}{\max_{1 \leq l \leq k}diam(C_l)})\} 

DI值越大,表示簇内越紧密,簇间越分散 

你可能感兴趣的:(特征选择,无监督学习,聚类,算法)