文章目录

  • 参考资料
  • 1. 基本概念
    • 1.1 距离度量
    • 1.2 性能度量
      • 1.2.1 外部指标
      • 1.2.2 内部指标
  • 2. 原型聚类
    • 2.1 K-Means
      • 1. k值的选择
      • 2. K-Means优缺点及改进
    • 2.2 学习向量量化(LVQ)
    • 2.3 高斯混合聚类(GMM)
      • GMM与K-Means相比
  • 3. 密度聚类
  • 4. 层次聚类
  • 5. 后记
    • 5.1 KNN与K-means区别?
    • 5.2 聚类算法如何评估

参考资料

  1. Machine-learning-learning-notes
  2. LeeML-Notes
  3. ML-NLP

本博客是根据周志华的西瓜书和参考资料1、2、3所做的笔记,主要用于学习,非技术类博客,因此存在大量复制粘贴,请见谅。
如果本篇博客有后记部分,则该部分表示的是在书本原有的基础知识上,进行的知识点的扩充。

代码演示见于github仓库

1. 基本概念

聚类是一种经典的无监督学习方法,无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律,即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。

聚类直观上来说是将相似的样本聚在一起,从而形成一个类簇(cluster)

那首先的问题是如何来度量相似性(similarity measure)呢?这便是距离度量,在生活中我们说差别小则相似,对应到多维样本,每个样本可以对应于高维空间中的一个数据点,若它们的距离相近,我们便可以称它们相似。

那接着如何来评价聚类结果的好坏呢?这便是性能度量,性能度量为评价聚类结果的好坏提供了一系列有效性指标。

1.1 距离度量

谈及距离度量,最熟悉的莫过于欧式距离了:即对应属性之间相减的平方和再开根号。度量距离还有其它的很多经典方法,通常它们需要满足一些基本性质:

最常用的距离度量方法是“闵可夫斯基距离”(Minkowski distance):

当p=1时,闵可夫斯基距离即曼哈顿距离(Manhattan distance)

当p=2时,闵可夫斯基距离即欧氏距离(Euclidean distance)

我们知道属性分为两种:连续属性离散属性(有限个取值)。对于连续值的属性,一般都可以被学习器所用,有时会根据具体的情形作相应的预处理,例如:归一化等;而对于离散值的属性,需要作下面进一步的处理:

  • 若属性值之间存在序关系,则可以将其转化为连续值,例如:身高属性“高”“中等”“矮”,可转化为{1, 0.5, 0}。
  • 若属性值之间不存在序关系,则通常将其转化为向量的形式,例如:性别属性“男”“女”,可转化为{(1,0),(0,1)}。

在进行距离度量时,易知连续属性和存在序关系的离散属性都可以直接参与计算,因为它们都可以反映一种程度,我们称其为“有序属性”;

而对于不存在序关系的离散属性,我们称其为:“无序属性”,显然无序属性再使用闵可夫斯基距离就行不通了。

对于无序属性,我们一般采用VDM(Value Difference Metric)进行距离的计算,例如:对于离散属性的两个取值a和b,定义:

于是,在计算两个样本之间的距离时,我们可以将闵可夫斯基距离和VDM混合在一起进行计算:

若我们定义的距离计算方法是用来度量相似性,例如下面将要讨论的聚类问题,即距离越小,相似性越大,反之距离越大,相似性越小。这时距离的度量方法并不一定需要满足前面所说的四个基本性质,这样的方法称为:非度量距离(non-metric distance)

1.2 性能度量

由于聚类算法不依赖于样本的真实类标,就不能像监督学习的分类那般,通过计算分对分错(即精确度或错误率)来评价学习器的好坏或作为学习过程中的优化目标。一般聚类有两类性能度量指标:外部指标内部指标

1.2.1 外部指标

即将聚类结果与某个参考模型的结果进行比较,以参考模型的输出作为标准,来评价聚类好坏。假设聚类给出的结果为λ,参考模型给出的结果是λ*,则我们将样本进行两两配对,定义:


其中集合SS包含了在CCC中隶属于相同簇且在C∗C^*C∗中也隶属于相同簇的样本对,集合SD包含了在CCC中隶属于相同簇但在C∗C^*C∗中隶属于不同簇的样本对,……由于每个样本对(ci,aj)(i<j)(c_i,a_j) (i<j)(ci​,aj​)(i<j)仅能出现在一个集合中,因此有a+b+c+d=m(m−1)/2a+b+c+d = m(m - 1)/2a+b+c+d=m(m−1)/2成立.

显然a和b代表着聚类结果好坏的正能量,b和c则表示参考结果和聚类结果相矛盾,基于这四个值可以导出以下常用的外部评价指标:

显然,上述性能度量的结果值均在[0,1][0,1][0,1]区间,值越大越好.

1.2.2 内部指标

内部指标即不依赖任何外部模型,直接对聚类的结果进行评估,聚类的目的是想将那些相似的样本尽可能聚在一起,不相似的样本尽可能分开。

对数据集D=[D1,D2,...,Dm]D= [D_1, D_2,..., D_m]D=[D1​,D2​,...,Dm​],假定通过聚类给出的簇划分为C=[C1,C2,...,Ck]C=[C_1,C_2,...,C_k]C=[C1​,C2​,...,Ck​],参考模型给出的簇划分为C∗=[C1∗,C2∗,...,Cs∗]C^*=[C_1^*,C^*_2,...,C_s^*]C∗=[C1∗​,C2∗​,...,Cs∗​].相应地,令λ\lambdaλ与λ∗\lambda^*λ∗分别表示与CCC和C∗C^*C∗对应的簇标记向量,我们将样本两两配对考虑,定义:

基于上面的四个距离,可以导出下面这些常用的内部评价指标:

2. 原型聚类

原型聚类即“基于原型的聚类”(prototype-based clustering),原型表示模板的意思,就是通过参考一个模板向量或模板分布的方式来完成聚类的过程,常见的K-Means便是基于簇中心来实现聚类,混合高斯聚类则是基于簇分布来实现聚类。

2.1 K-Means

K-Means的思想十分简单,首先随机指定类中心,根据样本与类中心的远近划分类簇,接着重新计算类中心,迭代直至收敛。但是其中迭代的过程并不是主观地想象得出,事实上,若将样本的类别看作“隐变量”(latent variable),类中心看作样本的分布参数,这一过程正是通过EM算法的两步走策略而计算出,其根本的目的是为了最小化平方误差函数E:

给定样本集D=[D1,D2,...,Dm]D= [D_1, D_2,...,D_m]D=[D1​,D2​,...,Dm​], "k均值”(k-means)算法针对聚类所得簇划分C=[C1,C2,...,Ck]C=[C_1,C_2,...,C_k]C=[C1​,C2​,...,Ck​]最小化上述平方误差,其中μi=1∣Ci∣∑x∈Cix\mu_i=\frac{1}{|C_i|}\sum_{x\in C_i}xμi​=∣Ci​∣1​∑x∈Ci​​x是簇CiC_iCi​的均值向量.直观来看,式(9.24)在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高。

算法流程如下:

更新当前均值向量后,不断重复上述过程,直到结果不再更新,迭代停止,算法停止,得到最终的簇划分。

1. k值的选择

在运行 K-均值算法的之前,我们首先要随机初始化所有的聚类中心点,下面介绍怎样做:

  1. 聚类中心点的个数要小于所有训练集实例的数量。
  2. 随机选择

    【周志华机器学习】九、聚类相关推荐

    1. 周志华机器学习--绪论

      周志华机器学习–绪论 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器学 ...

    2. 周志华机器学习(西瓜书)学习笔记(持续更新)

      <周志华机器学习>笔记 第1章 绪论 1.1 引言 1.2 基本术语 1.3 假设空间 1.4 归纳偏好 1.5 发展历程 1.6 应用现状 第2章 模型评估与选择 2.1 经验误差与过拟 ...

    3. 周志华机器学习--模型评估与选择

      周志华机器学习–模型评估与选择 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周 ...

    4. 周志华机器学习-决策树

      周志华机器学习-决策树 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器 ...

    5. 周志华机器学习-支持向量机

      周志华机器学习-支持向量机 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 – 文章目录 周 ...

    6. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归

      本文为周志华机器学习西瓜书第三章课后习题3.3答案,编程实现对率回归,数据集为书本第89页的数据 使用tensorflow实现过程 # coding=utf-8 import tensorflow a ...

    7. 周志华机器学习(6):支持向量机

      周志华机器学习(6):支持向量机 6 支持向量机 6.1 间隔与支持向量 6.2 对偶问题(dual problem) 6.3 核函数 6.4 软间隔与正则化 基本是大段摘录西瓜书加上一些自己的解释补 ...

    8. 【读书笔记】周志华 机器学习 第二章 模型评估和选择

      第二章 模型评估和选择 1 欠拟合和过拟合 偏差和方差 1.1 欠拟合和过拟合 1.2 偏差和方差 2 评估方法 性能度量 2.1 评估方法 2.1.1 留出法 2.2.2 交叉验证法 2.2.3 自 ...

    9. numpy实现周志华机器学习 9.4.3 高斯混合聚类(GMM算法)

      本文主要参考周志华<机器学习>的9.4.3章节,对高斯混合聚类的原理做简单介绍,并使用numpy实现GMM. 要想很好得理解掌握高斯混合聚类算法,以我的学习经验来看,需要掌握两方面背景知识 ...

    最新文章

    1. 报名 | 清华大学海外学者短期讲学:创新创业发展课程
    2. 小程序点击按钮 关闭小程序
    3. 我给媳妇解释设计模式:第一部分
    4. 数据分析师可不是啥好工作
    5. Prefix Sum Primes
    6. 排序算法二:归并排序(Merge sort)
    7. jupyter安装与迁移文件
    8. java生成自定义标志、大小的二维码
    9. ubuntu卸载vmware player
    10. 如何备份博客:利用博客备份工具BlogDown
    11. MongoDB概念集合
    12. ADB logcat 过滤方法
    13. Ubuntu因为内存问题卡死解决方案
    14. python调用大漠插件寻路_python怎么调用大漠?
    15. 2018最新廖雪峰全套Java完整版
    16. linux 游戏 复刻,魔法门复刻手游官网版-魔法门复刻下载v4.00.9-Linux公社
    17. 邮件退信RCPT TO command问号
    18. RocketMQ 集群踩坑记
    19. 视频的码率、帧率、分辨率之间的区别
    20. Mac 查看隐藏文件(夹)

    热门文章

    1. Unity实现多屏显示
    2. Unity 实战项目 | Unity实现 双屏或多屏幕 显示效果
    3. xwiki开发者指南-编写一个XWiki组件
    4. 安卓Android实现聊天滚动界面
    5. 奶爸日记 - 祝你生日快乐
    6. luna16目标检测(记录)
    7. 视觉机器人+人体姿态识别项目总结
    8. 12.30重大消息快递
    9. Javaweb——监听器
    10. 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数