文章目录

  • 0. 前言
  • 1. 性能度量
    • 1.1. 外部指标
    • 1.2. 内部指标
  • 2. 距离计算
  • 3. k-means算法
  • 4. 学习向量量化
  • 5. 高斯混合聚类
  • 6. 密度聚类 DBSCAN
  • 7. 层次聚类 AGNES

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

0. 前言

无监督学习意味着样本的标记信息是未知的,目标是揭示数据的内在规律

聚类试图将数据集划分为不同的子集,称为“簇”

1. 性能度量

聚类应达到簇内相似度高,簇间相似度低

1.1. 外部指标

外部指标意味着将聚类结果与某个参考模型比较

给出数据集DDD,聚类结果簇划分CCC,参考模型簇划分C∗C^*C∗,以及对应簇标记λ,λ∗\lambda,\ \lambda^*λ, λ∗,定义:
a=∣SS∣,SS={(xi,xj)∣λi=λj,λi∗=λj∗,i&lt;j}b=∣SD∣,SD={(xi,xj)∣λi=λj,λi∗≠λj∗,i&lt;j}c=∣DS∣,DS={(xi,xj)∣λi≠λj,λi∗=λj∗,i&lt;j}d=∣DD∣,DD={(xi,xj)∣λi≠λj,λi∗≠λj∗,i&lt;j}a=|SS|,\ \ SS=\{(x_i,x_j)\mid \lambda_i=\lambda_j,\lambda_i^*=\lambda_j^*,i&lt;j\}\\ b=|SD|,\ \ SD=\{(x_i,x_j)\mid \lambda_i=\lambda_j,\lambda_i^*\neq\lambda_j^*,i&lt;j\}\\ c=|DS|,\ \ DS=\{(x_i,x_j)\mid \lambda_i\neq\lambda_j,\lambda_i^*=\lambda_j^*,i&lt;j\}\\ d=|DD|,\ \ DD=\{(x_i,x_j)\mid \lambda_i\neq\lambda_j,\lambda_i^*\neq\lambda_j^*,i&lt;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}

名称 公式 指标
Jaccard系数 JC=aa+b+cJC=\frac{a}{a+b+c}JC=a+b+ca​ 越大越好
FM指数 FMI=aa+b⋅aa+cFMI=\sqrt{\frac{a}{a+b}\cdot\frac{a}{a+c}}FMI=a+ba​⋅a+ca​​ 越大越好
Rand指数 RI=2(a+d)m(m−1)RI=\frac{2(a+d)}{m(m-1)}RI=m(m−1)2(a+d)​ 越大越好

1.2. 内部指标

内部指标意味着直接考察聚类结果

考虑聚类结果CCC,定义:
avg(C)=2∣C∣(∣C∣−1)∑1⩽i&lt;j⩽∣C∣dist(xi,xj)diam(C)=max⁡1⩽i&lt;j⩽∣C∣dist(xi,xj)dmin(Ci,Cj)=min⁡xi∈Ci,xj∈Cjdist(xi,xj)dcen(Ci,Cj)=dist(μi,μj)avg(C)=\frac{2}{|C|(|C|-1)}\sum_{1\leqslant i &lt;j\leqslant |C|}dist(x_i,x_j)\\ diam(C)=\max_{1\leqslant i &lt;j\leqslant |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​1⩽i<j⩽∣C∣∑​dist(xi​,xj​)diam(C)=1⩽i<j⩽∣C∣max​dist(xi​,xj​)dmin​(Ci​,Cj​)=xi​∈Ci​,xj​∈Cj​min​dist(xi​,xj​)dcen​(Ci​,Cj​)=dist(μi​,μj​)

名称 公式 指标
DB指数 DBI=1k∑i=1kmax⁡j≠i(avg(Ci)+avg(Cj)dcen(Ci,Cj))DBI=\frac{1}{k}\sum_{i=1}^k\max_{j\neq i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(C_i,C_j)})DBI=k1​i=1∑k​j̸​=imax​(dcen​(Ci​,Cj​)avg(Ci​)+avg(Cj​)​) 越小越好
Dunn指数 DI=min⁡i⩽i⩽k{min⁡j≠i(dmin(Ci,Cj)max⁡1⩽l⩽kdiam(Cl))}DI=\min_{i\leqslant i \leqslant k}\{\min_{j\neq i}(\frac{d_{min}(C_i,C_j)}{\max_{1\leqslant l \leqslant k}diam(C_l)})\}DI=i⩽i⩽kmin​{j̸​=imin​(max1⩽l⩽k​diam(Cl​)dmin​(Ci​,Cj​)​)} 越大越好

2. 距离计算

距离计算是指dist(xi,xj)dist(x_i,x_j)dist(xi​,xj​)。

对于有序的属性:

名称 公式 备注
闵可夫斯基距离 dist(xi,xj)=(∑u=1n∣xiu−xju∣p)1pdist(x_i,x_j)=(\sum_{u=1}^n\mid x_{iu}-x_{ju}\mid^p)^{\frac{1}{p}}dist(xi​,xj​)=(u=1∑n​∣xiu​−xju​∣p)p1​
欧氏距离 dist(xi,xj)=∑u=1n∣xiu−xju∣2dist(x_i,x_j)=\sqrt{\sum_{u=1}^n\mid x_{iu}-x_{ju}\mid^2}dist(xi​,xj​)=u=1∑n​∣xiu​−xju​∣2​ p=2
曼哈顿距离 dist(xi,xj)=∑u=1n∣xiu−xju∣dist(x_i,x_j)=\sum_{u=1}^n\mid x_{iu}-x_{ju}\middist(xi​,xj​)=u=1∑n​∣xiu​−xju​∣ p=1

对于无序的属性,令mu,am_{u,a}mu,a​表示属性uuu上取值为aaa的样本数,mu,a,im_{u,a,i}mu,a,i​表示第iii个样本簇属性uuu上取值为aaa的样本数,则对于属性uuu上的两个离散属性,有:
VDMp(a,b)=∑i=1k∣mu,a,imu,a−mu,b,imu,b∣pVDM_p(a,b)=\sum_{i=1}^k|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|^p VDMp​(a,b)=i=1∑k​∣mu,a​mu,a,i​​−mu,b​mu,b,i​​∣p

3. k-means算法

k-means通过迭代循环两个过程:根据簇中心将每个样本划分入最近的簇,重新计算簇中心

算法如下图所示(图源:机器学习):

二分k-means:先指定一个簇中心,在这个簇中使用k-means,k=2k=2k=2,将簇一分为二,再选定一个簇,在这个簇中使用k-means,如此循环。

4. 学习向量量化

学习向量量化(Learning Vector Quantization)假设数据样本带有类别标记,利用这些监督信息来辅助聚类。

算法如下图所示(图源:机器学习):

5. 高斯混合聚类

高斯混合聚类采用概率模型来表达聚类,定义高斯混合分布:
pM(x)=∑i=1kαi⋅p(x∣μi,Σi)p_M(x)=\sum_{i=1}^k\alpha_i\cdot p(x\mid \mu_i,\Sigma_i) pM​(x)=i=1∑k​αi​⋅p(x∣μi​,Σi​)
其中,该分布有kkk个混合成分,αi\alpha_iαi​是混合系数,表示选择这个成分的概率。

采用EM算法推导高斯混合模型,首先根据样本计算对应的高斯混合成分的后验概率:
γji=pM(zj=i∣xj)=αi⋅p(xj∣μi,Σi)∑l=1kαl⋅p(xj∣μl,Σl)\gamma_{ji}=p_M(z_j=i\mid x_j)=\frac{\alpha_i\cdot p(x_j\mid \mu_i,\Sigma_i)}{\sum_{l=1}^k\alpha_l\cdot p(x_j\mid \mu_l,\Sigma_l)} γji​=pM​(zj​=i∣xj​)=∑l=1k​αl​⋅p(xj​∣μl​,Σl​)αi​⋅p(xj​∣μi​,Σi​)​
则对应的簇标记为:
λj=arg⁡max⁡i∈{1,2,...,k}γji\lambda_j=\arg\max_{i\in\{1,2,...,k\}}\gamma_{ji} λj​=argi∈{1,2,...,k}max​γji​
再根据后验概率更新α,μ,Σ\alpha,\ \mu,\ \Sigmaα, μ, Σ。

算法如下图所示(图源:机器学习):

6. 密度聚类 DBSCAN

密度聚类假设聚类结构能通过样本分布的紧密程度确定

DBSCAN作如下定义:

  • ε\varepsilonε-邻域:对于一个样本xxx,其ε\varepsilonε-邻域是与xxx距离不大于ε\varepsilonε的样本子集
  • 核心对象:对于一个样本xxx,其ε\varepsilonε-邻域的样本数目大于某个值,那么xxx是核心对象
  • 密度直达:xix_ixi​是核心对象,xjx_jxj​在其邻域内,则它们密度直达
  • 密度可达:xix_ixi​与xjx_jxj​密度直达,xjx_jxj​与xkx_kxk​密度直达,则xix_ixi​与xkx_kxk​密度可达
  • 密度相连:对于xix_ixi​和xjx_jxj​,存在xkx_kxk​使得xix_ixi​与xjx_jxj​均由xkx_kxk​密度可达,则xix_ixi​与xjx_jxj​密度相连

DBSCAN将簇定义为由密度可达关系导出的最大密度相连样本集合。

算法如下图所示(图源:机器学习):

7. 层次聚类 AGNES

层次聚类试图在不同层次对数据集进行划分,从而形成树形的聚类结构。

AGNES是一种自底向上的聚类策略,先将数据集中每一个样本看成一个簇,然后找到距离最近的簇,将其合并,该过程不断重复,直到达到指定簇数目

衡量簇的距离,可以采用最小距离(由两个簇最近的样本决定)最大距离(由两个簇最远的样本决定)平均距离,对应的AGNES算法称为单链接全链接均链接

算法如下图所示(图源:机器学习):


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

西瓜书+实战+吴恩达机器学习(十四)无监督学习之聚类(k-means, LVQ, 高斯混合聚类, DBSCAN, AGNES)相关推荐

  1. 西瓜书+实战+吴恩达机器学习(四)监督学习之线性回归 Linear Regression

    文章目录 0. 前言 1. 线性回归参数求解方法 2. 线性回归正则化 2.1. 岭回归 2.2. LASSO 3. 局部加权线性回归 4. 广义线性模型 如果这篇文章对你有一点小小的帮助,请给个关注 ...

  2. 西瓜书+实战+吴恩达机器学习(十一)监督学习之集成学习

    文章目录 0. 前言 1. 集成方法 2. 结合策略 2.1. 平均法 2.2. 投票法 2.3. 学习法 3. 多样性度量 4. 多样性增强 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔, ...

  3. 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes

    文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...

  4. 西瓜书+实战+吴恩达机器学习(七)监督学习之决策树 Decision Tree

    文章目录 0. 前言 1. 划分选择 1.1. ID3决策树 1.2. C4.5决策树 1.3. CART决策树 2. 剪枝 3. 连续值处理 4. 缺失值处理 如果这篇文章对你有一点小小的帮助,请给 ...

  5. 西瓜书+实战+吴恩达机器学习(六)监督学习之逻辑回归 Logistic Regression

    文章目录 0. 前言 1. 逻辑回归参数求解方法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 逻辑回归,根据数据对分类边界进行回归,以此分类. y=σ(wTx ...

  6. 西瓜书+实战+吴恩达机器学习(五)监督学习之线性判别分析 Linear Discriminant Analysis

    文章目录 0. 前言 1. 线性判别分析参数求解方法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 线性判别分析LDA的思想非常朴素:给定数据集,设法将样例投影 ...

  7. 西瓜书+实战+吴恩达机器学习(十三)监督学习之随机森林 Random Forest

    文章目录 0. 前言 1. 随机森林算法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 Bagging:对数据集进行有放回采样,采mmm次构成一个新的数据集,基 ...

  8. 西瓜书+实战+吴恩达机器学习(九)监督学习之k近邻 K-Nearest Neighbor

    文章目录 0. 前言 1. knn算法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 k近邻的思想就是每个样本都可以用它最接近的k个邻居来代表. 缺点是必须保存 ...

  9. 西瓜书+实战+吴恩达机器学习(二)机器学习基础(偏差、方差、调试模型技巧)

    文章目录 0. 前言 1. 偏差方差的解决方法 2. 高偏差高方差的学习曲线 3. 调试模型技巧 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 泛化误差可分解为 ...

最新文章

  1. (linux中alias的用法)给一些常用的长命令取别名
  2. Windows Server 2008 SVN 配置
  3. python 元类工厂模式_Python进阶丨如何创建你的第一个Python元类?
  4. Dart 异步编程之 Isolate 和事件循环
  5. Boost:是否对齐的测试程序
  6. linux比较两个文件md5,linux下如何批量比对两个文件的MD5值是否一致,SHA1是否一致。...
  7. mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解
  8. 素数-试除法和埃式筛选法模板
  9. Spoken English(027)
  10. Derby与mysql的关系_Derby数据库简单介绍和使用方法 | 学步园
  11. div设置高度 vue_VsCode常用设置(新手必备!)
  12. oracle建表 和 设置主键自增
  13. Python(十六):标准库
  14. Qt css样式大全(整理版)
  15. python 视频解析接口_python接口自动化测试视频教程全集
  16. 群晖(Synology)配置 NAS + 软路由 续
  17. Linux下ps -ef和ps aux
  18. 玩游戏计算机虚拟内存怎么设置,【新手指导】电脑虚拟内存设置
  19. 基于加速度计与气压计的三阶卡尔曼滤波计算加速度、速度及高度
  20. Xilinx ZYNQ Ultrascale+ 性能测试之 Video Multi Scaler

热门文章

  1. 如何使用PL/SQL Developer查看和杀掉session
  2. 关于使用墙外安卓应用
  3. Python学习笔记(一)——基本知识点
  4. DevOps是敏捷在软件开发团队的另一应用
  5. POJ - 2485(最小生成树.prime)
  6. poj 2479 (DP)
  7. C++ :stringstream介绍,使用方法与例子(转)
  8. Android中的PopUpWindow
  9. iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller
  10. PC服务器实现海量数据存取的方法