文章目录
- 前言
- 聚类
- 聚类定义
- 什么是簇
- 聚类分类
- 离群点
- 聚类算法实例
- K-Means算法(k-均值算法)
- 寻找质心最佳位置
- 关于均值
- 关于距离函数
- 维度灾难
- 定义
- 产生的问题
- 解决办法
- 总结
前言
聚类
聚类是在无标记样本的条件下将数据进行分组,从而发现天然的结构。
聚类是无监督学习的主要任务,分类是监督学习的主要任务。
聚类主要应用在:
-
发现数据的潜在结构 -
对数据进行自然分组 -
对数据进行压缩
这几个方面的功能使聚类既可以作为预处理程序,又可以作为独立的数据分析工具。
聚类定义
数据聚类(或聚类分组)的目标是在一个对象(模式、数据点)的集合中发现其自然的分组。
关于聚类目前尚无统一的定义,比较常用的定义如下:
聚类是把一个数据对象的集合划分成簇(子集),使簇内对象彼此相似,簇间对象不相似的过程。
什么是簇
回答什么是簇这个根本性问方面,人们已经做了大量努力。
给定一个数据集X,距离函数d,考虑一个聚类函数F,Kleinbreg描述了以下3个属性:
- 尺度不变性:对于任意距离函数d和任意常数a>0,有F(d)=F(αd)
- 划分丰富性:聚类函数F输出的数据簇划分集合包含数据所有可能的簇划分结果(标记一下)
- 距离一致性:令d和d是两个距离函数,如果d在的基础上缩小同一簇中数据之间的距离,扩大不同簇中数据之间的距离,则F(d)= F(d`)
简单地说就是:
簇:数据点分布为一团的数据集合为一簇,如下红色圈。
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_数据](https://file.cfanz.cn/uploads/png/2022/09/21/1/W3b8OF975F.png)
聚类分类
聚类方法大体可以分为3个阶段:
- 经典算法:它是2000年以前,而向早期的数据库及相关应用开发的算法。比如基于模型的算法,基于划分的算法,基于密度的算法,基于网格的算法,层次聚类算法,
- 高级算法:它是2000年以来,在经典算法的基础上,针对更为复杂的数据和任务开发的算法。比如谱聚类,高维数据聚类,基于非负数矩阵分解的聚类,不确定数据聚类:
- 多源数据算法:它是针对多源相关数据开发的算法。比如:多角度聚类,多任务聚类,多任务多视角聚类,迁移聚类,多模聚类。
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_算法_02](https://file.cfanz.cn/uploads/png/2022/09/21/1/3aJOT33611.png)
离群点
简单理解为噪声点 或者 离各个簇都很远,如下绿色圈中的
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_数据](https://file.cfanz.cn/uploads/png/2022/09/21/1/W3b8OF975F.png)
聚类算法实例
这里,我们以经典算法——基于划分的聚类算法——k-均值算法为例,对聚类进行初步探索。
备注:基于划分的方法是一种被广泛研究和应用的数据聚类方法,这类方法的大部分算法都有着简洁易懂,易于实现等优点,在许多领域都发挥巨大作用,基于划分的方法通过一个最优化的目标函数发掘数据中包含的类别信息结构,通常以迭代的方式逐步提高聚类的效果。
这里首先需要引入一个原型点的概念,即可以体现出某一类别特性的代表的点,因此,基于划分的算法通常需要设定某种确定的参数来选取可以代表对应簇的原型点.
原型点:可以体现出某一类别特性的代表的点
因此,基于划分的方法也称为基于原型的方法。
基于划分算法的基本流程:
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_数据_04](https://file.cfanz.cn/uploads/png/2022/09/21/1/952eD62N5H.png)
K-Means算法(k-均值算法)
k-均值算法在许多学科科领域内得到了大量的研究和应用,具体如:
- 数据压缩、
- 数据分类、
- 密度估计等方面,
因为其算法思想较为简洁易懂,且花费较小的计算代价可以获得不错的聚类结果等原因,k-均值算法成为各种聚类算法中较为常用的算法之一。
算法实现k-means是最大分离和最大内聚的最简单实现.
基本步骤是:
- 寻找质心最佳位置
寻找质心最佳位置
假设我们有一个数据集
![X∈ [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类算法_05](https://file.cfanz.cn/uploads/png/2022/09/21/1/2fb256H3YD.png)
,要分成K个聚类和一组K质心,则经由k-均值算法进行聚类分析后,产生的类别集合为C={C1,C2,,Ck},其聚类中心为:
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类_06](https://file.cfanz.cn/uploads/png/2022/09/21/1/b19ZJ93J6f.png)
其中,
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_数据_07](https://file.cfanz.cn/uploads/png/2022/09/21/1/4OC21Z3P48.png)
集合M和质心有一个附加索引 t(作为上标)表示迭代次数,从最开始的
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类_08](https://file.cfanz.cn/uploads/png/2022/09/21/1/Z24C1UeE1N.png)
开始,K-means试图最小化目标函数,我们可以使用误差平方和SSE作为度量聚类质量的目标函数:
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_机器学习_09](https://file.cfanz.cn/uploads/png/2022/09/21/1/47ff7D1NCD.png)
如果SSE(t+1)<SSE(t),则表示质心正在接近一个最佳位置。寻找最佳位置的过程就是一个迭代的过程,这个迭代过程也叫做劳埃德算法Lloyd’s Algorithm,通过给M0初始化随机值开始,下一步是给xi∈X的每个样本分配质心与x;距离最小的聚类:
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类_10](https://file.cfanz.cn/uploads/png/2022/09/21/1/PJ343385D6.png)
完成所有分配后,新的质心将重新被赋值:
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类算法_11](https://file.cfanz.cn/uploads/png/2022/09/21/1/aE9Hb6H89G.png)
重复该过程直到质心停止变化。
有上述步骤可知,最初我们选择的质心对计算时间具有很大影响:
- 如果
- 非常接近
- 那么,我们只需迭代几次就可以得到最佳位置
- 但是 如果
- 纯粹是随机的时候,无效的初始选择的概率接近于1.
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_算法_12](https://file.cfanz.cn/uploads/png/2022/09/21/1/326712c8ZB.png)
![Mte [笔记]机器学习之机器学习理论及案例分析《二》 聚类_算法_13](https://file.cfanz.cn/uploads/png/2022/09/21/1/Da9H38U5WH.png)
![MO) [笔记]机器学习之机器学习理论及案例分析《二》 聚类_数据_14](https://file.cfanz.cn/uploads/png/2022/09/21/1/BY476223ZB.png)
同时,我们需要注意的是,劳埃德算法虽然计算简单且易于理解,但是算法易陷入局部最优解而不是全局最优解,对于这个问题,我们可以在同一个数据及上多运行几次k-均值算法,然后选取SSE(temd)最小的那次作为最终聚类结果。
关于均值
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类算法_15](https://file.cfanz.cn/uploads/png/2022/09/21/1/13F755Nb50.png)
关于距离函数
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_聚类算法_16](https://file.cfanz.cn/uploads/png/2022/09/21/1/48IF3e5O27.png)
维度灾难
我们可以了解到,传统的聚类算法在高维数据上的性能通常很差,
故我们在训练模型时,要特别注意维度灾难(curse of dimensionality)现象。
定义
维度灾难,即当我们模型的特征个数不断增加时,模型性能可能会有提升,但是超过了某个值后,其性能不升反降。
举例,发生数据聚类有重叠的情况,说明可能是不同维度的重叠,虽然是仍然是两个簇,但平面上相交,三维为正常簇,引起的聚类分划问题。
![在这里插入图片描述 [笔记]机器学习之机器学习理论及案例分析《二》 聚类_算法_17](https://file.cfanz.cn/uploads/png/2022/09/21/1/15X50O2562.png)
产生的问题
维度灾难同时引发了过拟合问题,即模型在训练集上表现的良好,但在非训练集上表现一般,此时模型可能因为特征维数过多,从而学习了过多细节,泛化能力差。
在此,引用纳特·西菲尔的一句话:信息越多,问题越多。
在这个时代,我们的信息量增长速度过快,人们应该从干忧他们的噪声中分辨出有用的信号。但是由于人工筛选特征成本过大,再加上人们本身对所研究的事物不够了解,难以人工筛选出"有用的"特征,所以此时,我们就可以考虑,让模型自己去提取特征。
解决办法
为此,人们广泛研究了降维和特征变换方法,将原始数据映射到一个新的特征空间,生成的数据更容易被现有的分类器分离。
一般来说,现有的数据变换方法有主成分分析(PCA)等线性变换和核方法、谱方法等非线性变换。
然而,高度复杂的数据隐藏结构仍然挑战着现有聚类方法的有效性。
随着深度学习的发展,深度神经网络由于其高度非线性转换的固有特性,可以用于将数据转换为更有利于聚类的表示。
我们将带深度学习的聚类方法称为深度聚类。
总结
参考:
机器学习理论及案例分析(part3)–聚类










