当前位置:网站首页>机器学习之聚类
机器学习之聚类
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)
边栏推荐
- 小程序开发流程详细是什么呢?
- How much does small program development cost? Analysis of two development methods!
- 深度学习——MetaFormer Is Actually What You Need for Vision
- 速查表之各种编程语言小数|时间|base64等操作
- vscode uniapp
- Small program development solves the anxiety of retail industry
- The business of digital collections is not so easy to do
- CertPathValidatorException:validity check failed
- Record the problems encountered in online capacity expansion server nochange: partition 1 is size 419428319. It cannot be grown
- How to do wechat group purchase applet? How much does it usually cost?
猜你喜欢

Deep learning (incremental learning) - iccv2022:continuous continuous learning

卷积神经网络

深度学习——Patches Are All You Need

Manually create a simple RPC (< - < -)

pytorch深度学习单卡训练和多卡训练

将项目部署到GPU上,并且运行

微信上的小程序店铺怎么做?

How to improve the efficiency of small program development?

微信小程序开发详细步骤是什么?

【五】redis主从同步与Redis Sentinel(哨兵)
随机推荐
深度学习(自监督:CPC v2)——Data-Efficient Image Recognition with Contrastive Predictive Coding
Pytorch deep learning single card training and multi card training
Uview upload component upload upload auto upload mode image compression
强化学习——价值学习中的SARSA
vscode uniapp
深度学习(增量学习)——ICCV2021:SS-IL: Separated Softmax for Incremental Learning
分布式集群架构场景优化解决方案:分布式ID解决方案
The signature of the update package is inconsistent with that of the installed app
【5】 Redis master-slave synchronization and redis sentinel (sentinel)
3: MySQL master-slave replication setup
知识点21-泛型
Record the problems encountered in online capacity expansion server nochange: partition 1 is size 419428319. It cannot be grown
Installing redis under Linux (centos7)
How to do wechat group purchase applet? How much does it usually cost?
卷积神经网络
循环神经网络
Self attention learning notes
Invalid packaging for parent POM x, must be “pom“ but is “jar“ @
小程序搭建制作流程是怎样的?
小程序开发解决零售业的焦虑