当前位置:网站首页>机器学习之聚类
机器学习之聚类
2022-07-28 05:22:00 【积雨辋川】
聚类
一、聚类任务
聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。
聚类试图将数据集的样本划分为若干个互不相交的子集,每个子集称为一个簇(cluster),从而每个簇对应一个潜在的类别。
二、性能度量
聚类性能度量也称聚类“有效性指标”(validity index)。对聚类结果,我们需要通过某种性能度量来衡量其好坏。另一方面,若明确了最终要使用的性能度量,则可将其作为聚类过程的优化目标,从而更好得到符合要求的聚类结果。
直观上看,我们希望“物以类聚”,即同一簇的样本尽可能相似,不同簇的样本尽可能不同。换言之,聚类结果的“簇类相似度”(intra-cluster similarity)高且“簇间相似度”(inter-cluster similarity)低。
聚类性能度量大致有两类:
- 外部指标(external index):将聚类结果与某个参考模型(reference model)进行比较。
- 内部指标(internal index):直接考察聚类结果而不利用任何参考模型。
1.外部指标
对数据集 D = { x 1 , x 2 , . . . , x m } D=\{x_1,x_2,...,x_m\} D={ x1,x2,...,xm},假设通过聚类给出的簇划分为 C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={ C1,C2,...,Ck},参考模型给出的簇划分为 C ∗ = { C 1 ∗ , C 2 ∗ , . . . , C k ∗ } C^*=\{C^*_1,C^*_2,...,C^*_k\} C∗={ C1∗,C2∗,...,Ck∗}。相应地,令 λ \lambda λ与 λ ∗ \lambda^* λ∗分别表示 C C C和 C ∗ C^* C∗对应的簇标记向量,将样本两两配对考虑,定义:
其中集合 S S SS SS包含了在 C C C中隶属与相同簇且在 C ∗ C^* C∗也隶属与相同簇的赝本对,集合 S D SD SD包含了在 C C C中隶属与相同簇但在 C ∗ C^* C∗隶属于不同簇的样本对…
2.内部指标
考虑聚类结果的簇划分 C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={ C1,C2,...,Ck},定义
基于上面的四个距离,可以导出下面这些常用的内部指标:
三、距离计算
对函数 d i s t ( ⋅ , ⋅ ) dist(·,·) dist(⋅,⋅),若它是一个距离度量(distance measure),则需满足一些基本性质:
- 非负性: d i s t ( x i , x j ) ≥ 0 dist(x_i,x_j)\geq0 dist(xi,xj)≥0
- 同一性: d i s t ( x i , x j ) = 0 当且仅当 x i = x j dist(x_i,x_j)=0当且仅当x_i=x_j dist(xi,xj)=0当且仅当xi=xj
- 对称性: d i s t ( x i , x j ) = d i s t ( x j , x i ) dist(x_i,x_j)=dist(x_j,x_i) dist(xi,xj)=dist(xj,xi)
- 直递性: d i s t ( x i , x j ) ≤ d i s t ( x i , x k ) + d i s t ( x k , x j ) dist(x_i,x_j)\leq dist(x_i,x_k)+dist(x_k,x_j) dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)
给定样本,最常用的是“闵可夫斯基距离”(Minkowski distance)
d i s t m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dist_{mk}(x_i,x_j)=(\sum^n_{u=1}|x_{iu-x_{ju}}|^p)^{\frac{1}{p}} distmk(xi,xj)=(u=1∑n∣xiu−xju∣p)p1
p=2时,闵可夫斯基距离即欧式距离(Euclidean distance)
d i s t e d ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ = ( ∑ u = 1 n ∣ x i u − x j u ∣ 2 ) 1 2 dist_{ed}(x_i,x_j)=||x_i-x_j||=(\sum^n_{u=1}|x_{iu-x_{ju}}|^2)^{\frac{1}{2}} disted(xi,xj)=∣∣xi−xj∣∣=(u=1∑n∣xiu−xju∣2)21
p=1时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)
d i s t m a n ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ = ∑ u = 1 n ∣ x i u − x j u ∣ dist_{man}(x_i,x_j)=||x_i-x_j||=\sum^n_{u=1}|x_{iu-x_{ju}}| distman(xi,xj)=∣∣xi−xj∣∣=u=1∑n∣xiu−xju∣
四、原型聚类
原型聚类即“基于原型的聚类”(prototype-based clustering)。通常情形下,算法先对原型进行初始化,然后对原型进行迭代更新求解,采用不同的原型表示,不同的求解方式将产生不同的算法。
4.1 k均值聚类
K-Means的思想是首先随机指定类中心,根据样本与类中心的远近划分类簇,接着重新计算类中心,迭代直至收敛。
k均值算法针对聚类划分 C = { C 1 , C 2 , . . . C K } C=\{C_1,C_2,...C_K\} C={ C1,C2,...CK}最小化平方误差:
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 2 E=\sum^k_{i=1}\sum_{x\in C_i}||x-\mu_i||_2^2 E=i=1∑kx∈Ci∑∣∣x−μi∣∣22
K-Means的算法流程如下所示:
五、层次聚类
层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构。数据集的划分可采用自底向上的聚合策略,也可采用自顶向下的分拆策略。
AGNES是一种采用自底向上聚合策略的层次聚类算法,先将每个样本看作一个初始聚类簇,然后在算法运行的每一步中找出距离最近的两个聚类簇进行合并,该过程不断重复,直至达到预设的聚类簇个数。
关键是如何计算聚类簇之间的距离,可通过下面式子计算:
最小距离: d m i n ( C i , C j ) = m i n ( d i s t ( x , z ) ) , x ∈ C i , z ∈ C j 最大距离: d m a x ( C i , C j ) = m a x ( d i s t ( x , z ) ) , x ∈ C i , z ∈ C j 平均距离: d a v g ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ x ∈ C i ∑ x ∈ C j d i s t ( x , z ) 最小距离:d_{min}(C_i,C_j)=min (dist(x,z)),x\in C_i,z\in C_j \\ 最大距离:d_{max}(C_i,C_j)=max (dist(x,z)),x\in C_i,z\in C_j \\ 平均距离:d_{avg}(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum_{x\in C_i}\sum_{x\in C_j} dist(x,z) 最小距离:dmin(Ci,Cj)=min(dist(x,z)),x∈Ci,z∈Cj最大距离:dmax(Ci,Cj)=max(dist(x,z)),x∈Ci,z∈Cj平均距离:davg(Ci,Cj)=∣Ci∣∣Cj∣1x∈Ci∑x∈Cj∑dist(x,z)
- 最小距离:由两个簇最近样本决定
- 最大距离:由两个簇最远样本决定
- 平均距离:由两个簇最所有样本共同决定
当聚类簇聚类由 d m i n 、 d m a x 、 d a v g d_{min}、d_{max}、d_{avg} dmin、dmax、davg计算时,AGENS算法被相应称为单连接(single-linkage)、全连接(complete-linkage)、均连接(average-linkage)
边栏推荐
- Deep learning (self supervision: CPC V2) -- data efficient image recognition with contractual predictive coding
- What about the app store on wechat?
- Interface anti duplicate submission
- 卷积神经网络
- Digital collections become a new hot spot in tourism industry
- 强化学习——价值学习中的DQN
- 微信小程序开发详细步骤是什么?
- word2vec和bert的基本使用方法
- What is the detail of the applet development process?
- 【一】redis简介
猜你喜欢

小程序开发哪家更靠谱呢?

无约束低分辨率人脸识别综述一:用于低分辨率人脸识别的数据集

【7】 Consistency between redis cache and database data

【2】 Redis basic commands and usage scenarios

Interface anti duplicate submission

How much does small program development cost? Analysis of two development methods!

Distributed lock database implementation

3: MySQL master-slave replication setup

What are the detailed steps of wechat applet development?

word2vec+回归模型实现分类任务
随机推荐
The signature of the update package is inconsistent with that of the installed app
Deep learning (self supervision: CPC V2) -- data efficient image recognition with contractual predictive coding
小程序开发如何提高效率?
神经网络实现鸢尾花分类
Shutter webivew input evokes camera albums
Kotlin语言现在怎么不火了?你怎么看?
深度学习(增量学习)——ICCV2021:SS-IL: Separated Softmax for Incremental Learning
小程序开发解决零售业的焦虑
Digital collections become a new hot spot in tourism industry
小程序开发流程详细是什么呢?
微信小程序开发语言一般有哪些?
速查表之转MD5
NLP中基于Bert的数据预处理
【2】 Redis basic commands and usage scenarios
【1】 Introduction to redis
mysql5.6(根据.ibd,.frm文件)恢复单表数据
Deep learning - patches are all you need
Which is more reliable for small program development?
微信小程序制作模板套用时需要注意什么呢?
Wechat applet development and production should pay attention to these key aspects