IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 西瓜书+南瓜书第九章 聚类 -> 正文阅读

[人工智能]西瓜书+南瓜书第九章 聚类

9.1聚类任务

聚类试图将训练样本划分为若干个不相交的子集,每个子集称为一个簇,每个簇可能对应于一些潜在的概念但是这些概念对聚类算法而言事先是未知的。
聚类既能作为一个单独过程,用于找寻数据内在的分布结构,也可作为分类等其他学习任务的前驱过程。例如,在一些商业应用中需对新用户的类型进行判别,但定义“用户类型”对商家来说却可能不太容易,此时往往可先对用户数据进行聚类,根据聚类结果将每个簇定义为一个类,然后在基于这些类训练分类模型,用于判别新用户的类型。

9.2性能度量

聚类性能度量亦聚类“有效性指标”,对聚类结果,我们需要通过某种性能度量来评估其好坏;另一方面,若明确了最终将要使用的性能度量,则可直接将其作为聚类过程的优化目标,从而更好地得到符合要求的聚类结果。
聚类性能度量大致有两类,一类是将聚类结果与某个“参考模型”进行比较,称为“外部指标”;另一类是直接考察聚类结果而不利用任何参考模型,称为内部指标。
对数据集 D = { x 1 , x 2 , … , x m } D=\{x_1,x_2,\dots ,x_m\} D={x1?x2?,,xm?},,假定通过聚类给出的簇划分为 C = { C 1 , C 2 … , C k } C=\{C_1,C_2\dots,C_k\} C={C1?,C2?,Ck?},参考模型给出的簇划分为 C ? = { C 1 ? , C 2 ? … , C k ? } C^*=\{C^*_1,C^*_2\dots,C^*_k\} C?={C1??,C2??,Ck??}。相应地,令 λ \lambda λ λ ? \lambda^* λ?分别表示 C C C C ? C^* C?对应的簇标记向量,我们将样本两两配对考虑,定义
a = ∣ S S ∣ , S S = { ( x i , x j ) ∣ λ i = λ j , λ i ? = λ j ? , i < j } b = ∣ S D ∣ , S D = { ( x i , x j ) ∣ λ i = λ j , λ i ? ≠ λ j ? , i < j } c = ∣ D S ∣ , D S = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ? = λ j ? , i < j } d = ∣ D D ∣ , D D = { ( x i , x j ) ∣ λ i ≠ λ j , λ i ? ≠ λ j ? , i < j } a=|SS|,SS=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda^*_i=\lambda^*_j,i<j\}\\ b=|SD|,SD=\{(x_i,x_j)|\lambda_i=\lambda_j,\lambda^*_i\neq\lambda^*_j,i<j\}\\ c=|DS|,DS=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda^*_i=\lambda^*_j,i<j\}\\ d=|DD|,DD=\{(x_i,x_j)|\lambda_i\neq\lambda_j,\lambda^*_i\neq\lambda^*_j,i<j\} 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包含了在C中隶属于相同簇且在 C ? C^* C?中也隶属于相同簇的样本对,集合SD包含了在C中隶属于相同簇但在 C ? C^* C?中隶属于不同簇的样本对, ? ? \cdots\cdots ??由于每个样本对 ( x i , x j ) ( i < j ) (x_i,x_j)(i<j) (xi?,xj?)(i<j)仅能出现在一个集合中,因此有 a + b + c + d = m ( m ? 1 ) / 2 a+b+c+d=m(m-1)/2 a+b+c+d=m(m?1)/2成立
基于上式可导出下面这些常用的聚类性能度量外部指标:
Jaccard 系数
J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca?
FM指数
F M I = a a + b ? a a + c FMI=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}} FMI=a+ba??a+ca? ?
Rand指数
R I = 2 ( a + d ) m ( m ? 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m?1)2(a+d)?
显然,上述性能度量的结果均值在[0,1]区间,值越大越好。
考虑聚类结果的簇划分 C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={C1?,C2?,...,Ck?}定义
a v g ( C ) = 2 ∣ C ∣ ( ∣ C ∣ ? 1 ) ∑ 1 ≤ i ≤ j ≤ ∣ C ∣ d i s t ( x i , x j ) , d i a m ( C ) = max ? 1 ≤ i ≤ j ≤ ∣ C ∣ d i s t ( x i , x j ) , d m i n ( C i , C j ) = min ? x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) , d c e n ( C i , C j ) = d i s t ( μ i , μ j ) , avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leq i\leq j\leq|C|}dist(x_i,x_j),\\ diam(C)=\max_{1\leq i\leq j\leq|C|}dist(x_i,x_j),\\ d_{min(}C_i,C_j)=\min_{x_i\in C_i,x_j\in C_j}dist(x_i,x_j),\\ d_{cen}(C_i,C_j)=dist(\mu_i,\mu_j), avg(C)=C(C?1)2?1ijC?dist(xi?,xj?),diam(C)=1ijCmax?dist(xi?,xj?),dmin(?Ci?,Cj?)=xi?Ci?,xj?Cj?min?dist(xi?,xj?),dcen?(Ci?,Cj?)=dist(μi?,μj?),
其中dist(.,.)用于计算两个样本之间的距离; μ \mu μ代表簇C的中心点 μ = 1 ∣ C ∣ ∑ 1 ≤ i ≤ ∣ C ∣ x i \mu=\frac{1}{|C|}\sum_{1\leq i\leq|C|}x_i μ=C1?1iC?xi?显然 a v g ( C ) avg(C) avg(C)对应于簇 C C C内样本间的平均距离, d i a m ( C ) diam(C) diam(C)对应于簇 C C C内样本的最远距离, d m i n ( C ) d_{min}(C) dmin?(C)对应于簇 C i C_i Ci?和簇 C j C_j Cj?最近样本间的距离, d c e n ( C ) d_{cen}(C) dcen?(C)对应于簇 C i C_i Ci?与簇 C j C_j Cj?中心点间的距离。
基于上式可导出下面这些常用的聚类性能度量内部指标:
DB指数
D B I = 1 k ∑ i = 1 k max ? j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( C i , C j ) ) DBI=\frac{1}{k}\sum^{k}_{i=1}\max_{j\neq i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)}) DBI=k1?i=1k?j?=imax?(dcen?(Ci?,Cj?)avg(Ci?)+avg(Cj?)?)
Dunn指数
D I = min ? 1 ≤ i ≤ k { min ? j ≠ i ( d m i n ( C i , C j ) max ? 1 ≤ l ≤ k d i a m ( C l ) ) } DI=\min_{1\leq i\leq k}\{\min_{j\neq i}(\frac{d_{min}(C_i,C_j)}{\max_{1\leq l\leq k}diam(C_l)})\} DI=1ikmin?{j?=imin?(max1lk?diam(Cl?)dmin?(Ci?,Cj?)?)}
显然DBI值越小越好,DI越大越好

9.3距离计算

9.3.1距离定义

对函数 d i s t ( ? , ? ) dist(\cdot,\cdot) dist(?,?),若它是一个“距离度量”,则需满足一些基本性质:

非负性: d i s t ( x i , x j ) ≥ 0 dist(x_i,x_j)\geq 0 dist(xi?,xj?)0;
同一性: d i s t ( x i , x j ) = 0 dist(x_i,x_j)=0 dist(xi?,xj?)=0当且仅当 x i = x j x_i=x_j 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?)

9.3.2明可夫斯基距离

给定样本 x i = ( x i 1 ; x i 2 ; ? ? ; x i n ) x_i=(x_{i1};x_{i2};\cdots;x_{in}) xi?=(xi1?;xi2?;?;xin?) x j = ( x j 1 ; x j 2 ; ? ? ; x j n ) x_j=(x_{j1};x_{j2};\cdots;x_{jn}) xj?=(xj1?;xj2?;?;xjn?)明可夫斯基距离是
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=1n?xiu??xju?p)p1?
当p=2时,退化为欧式距离
d i s t e d ( x i , x j ) = ∑ u = 1 n ∣ x i u ? x j u ∣ 2 dist_{ed}(x_i,x_j)=\sqrt{\sum^n_{u=1}|x_{iu}-x_{ju}|^2} disted?(xi?,xj?)=u=1n?xiu??xju?2 ?
当p=1时退化为曼哈顿距离
d i s t m a n ( x i , x j ) = ∑ u = 1 n ∣ x i u ? x j u ∣ dist_{man}(x_i,x_j)=\sum^n_{u=1}|x_{iu}-x_{ju}| distman?(xi?,xj?)=u=1n?xiu??xju?
我们常常将属性划分为“连续属性”和“离散属性”,前者在定义域上有无穷多个可能的取值,后者在定义域上是有限个取值,然而,在讨论距离计算时,属性上是否定义了“序”关系更重要。例如定义域为{1,2,3}的离散属性与连续属性的性质更接近一些,能直接在属性值上计算距离:“1”与“2”比较接近、与“3”比较远,这样的属性称为“有序属性”;而定义域为{飞机,火车,轮船}这样的离散属性则不能直接在属性值上计算距离,称为“无序属性”。显然,明可夫斯基距离可用于有序属性

9.3.3VDM度量

对于无序属性,可采用VDM.令 m m , a m_{m,a} mm,a?表示在属性 u u u上取值为 a a a的样本数, m u , a , i m_{u,a,i} mu,a,i?表示在第i个样本簇中在属性u上取值为a的样本数,k为样本簇数,则属性u上两个离散值a与b之间的VDM距离为
V D M p ( a , b ) = ∑ i = 1 k ∣ m u , a , i m u , a ? m u , b , i m u , b ∣ VDM_p(a,b)=\sum^{k}_{i=1}|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}| VDMp?(a,b)=i=1k?mu,a?mu,a,i???mu,b?mu,b,i??

9.4原型聚类(kmeans)

原型距离是指类结构能通过一组典型的特例刻画。比如男、女类似的。给定样本集 D = x 1 , x 2 , ? ? , x m D={x_1,x_2,\cdots,x_m} D=x1?,x2?,?,xm?,k均值算法针对聚类所得簇划分 C = C 1 , C 2 , ? ? , C k C={C_1,C_2,\cdots,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=1k?xCi??x?μi?22?
其中 μ i = 1 ∣ C i ∣ ∑ x ∈ C i \mu_i=\frac{1}{|C_i|}\sum_{x\in C_i} μi?=Ci?1?xCi??x表示簇 C i C_i Ci?的均值向量。
求解改式需要考虑样本集D所有可能的划分,是一个NP-hard问题。一般来说,我们采用迭代算的近似划分。
k-means算法如下
在这里插入图片描述

9.5密度聚类(DBSCAN)

密度聚类假设聚类结构能够通过样本分布的紧密程度确定。它从样本密度的角度考察样本间的可连接性,并基于可连接样本不断扩展聚类簇得到最终的聚类结果。
DBSCAN是密度聚类的代表之一。它基于一组领域参数 ( ? , M i n P t s ) (\epsilon,MinPts) (?,MinPts)刻画样本分布的紧密程度。关于DBSCAN的几个概念如下:
1, ? \epsilon ?-邻域:和样本 x x x距离不超过 ? \epsilon ?的样本集合
2,核心对象:如果样本 x x x ? \epsilon ?邻域内至少包含 M i n P t s MinPts MinPts个样本,则 x x x是一个核心对象。
3,密度直达: x j x_j xj?位于核心对象 x i x_i xi? ? \epsilon ?邻域内,则称 x i x_i xi?密度可达 x j x_j xj?
4,密度可达:若存在样本序列 x i , p 1 , p 2 , ? ? , p n , x j x_i,p_1,p_2,\cdots,p_n,x_j xi?,p1?,p2?,?,pn?,xj?其中 p i p_i pi?密度直达 p i + 1 p_{i+1} pi+1?则称 x i x_i xi?密度可达 x j x_j xj?
5,密度相连:对于 x i x_i xi? x j x_j xj?,如果存在核心对象样本 x k x_k xk?,使 x i x_i xi? x j x_j xj?均由 x k x_k xk?密度可达,则称 x i x_i xi? x j x_j xj?密度相连。注意密度相连关系是满足对称性的。
DBSCAN定义的簇为:最大密度相连的样本集合为一个簇。
1,连接性:同一个簇内任意两样本必然密度相连
2,最大性:密度可达的两个样本必定属于同一个簇
算法描述
在这里插入图片描述

9.6层次聚类(AGNES)

层次聚类试图将数据划分成为不同的层次,因此聚类结果呈现明显的树状结构。
AGNES是一种采用自底向上聚合策略的层次聚类算法。在聚类过程中不断合并距离最近的两个类簇,直到达到预期的聚类簇数目。算法的核心在于如何定义簇之间的距离。
1,最小距离(两个簇最近样本距离): d m i n ( C i , C j ) = min ? x ∈ C i , z ∈ C j d i s t ( x , z ) d_{min}(C_i,C_j)=\min_{x\in C_i,z\in C_j}dist(x,z) dmin?(Ci?,Cj?)=minxCi?,zCj??dist(x,z)
2,最大距离(两个簇最远样本距离): d m a x ( C i , C j ) = max ? x ∈ C i , z ∈ C j d i s t ( x , z ) d_{max}(C_i,C_j)=\max_{x\in C_i,z\in C_j}dist(x,z) dmax?(Ci?,Cj?)=maxxCi?,zCj??dist(x,z)
3,平均距离(两个簇两两样本距离均值):
d a v g ( C i , C j ) = 1 ∣ C i ∣ ∣ C j ∣ ∑ x ∈ C i ∑ z ∈ C j d i s t ( x , z ) d_{avg}(C_i,C_j)=\frac{1}{|C_i||C_j|}\sum_{x\in C_i}\sum_{z\in C_j}dist(x,z) davg?(Ci?,Cj?)=Ci?Cj?1?xCi??zCj??dist(xz)
算法描述
在这里插入图片描述

?以上内容源于周志华《机器学习》(西瓜书),笔者以自己的理解写了这篇笔记,如有错误欢迎指正

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:03:28  更:2022-01-16 13:04:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 22:26:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码