机器学习(五)聚类算法(k-means,)

聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。

​主要的聚类算法可以划分为如下几类:划分方法、层次方法、基于密度的方法、基于网格的方法以及基于模型的方法。下面主要对k-means聚类算法、凝聚型层次聚类算法、神经网络聚类算法之SOM,以及模糊聚类的FCM算法通过通用测试数据集进行聚类效果的比较和分析。

1. 基本思想

通过迭代的方式寻找 k 个簇的划分方案,使得聚类结果对应的代价函数最小。代价函数可以定义为各个样本距离它所属的簇中心点的误差平方和:

J ( c , μ ) = ∑ i = 1 N ∣ ∣ x i − μ c i ∣ ∣ 2 J(c, \mu)=\sum_{i=1}^{N} || x_i-\mu_{c_i} ||^2 J (c ,μ)=∑i =1 N ​∣∣x i ​−μc i ​​∣∣2
其中,x i x_{i}x i ​代表第i个样本,c i c_{i}c i ​是x i x_{i}x i ​所属的簇,μ c i \mu_{c_{i}}μc i ​​代表簇对应的中心点(即均值),N是样本总数.

2. 算法流程

采用了贪心策略,通过多次迭代近似求解代价函数。

3. 优缺点

优点:

  • 原理简单,满足常见需求
  • 对于大数据集相对可伸缩且高效

缺点:

  • 初值选取较难
  • k 均值只能做到局部最优
  • 受初值和离群点影响大
  • 样本只能被划分到单一类别中

4. k值如何选取

定义为:
G a p ( k ) = E ( l o g D k ) − l o g D k Gap(k)=E(logD_k)-logD_k G a p (k )=E (l o g D k ​)−l o g D k ​
其中,D k D_{k}D k ​是第k簇聚类对应的损失值,E ( l o g D k ) E(logD_{k})E (l o g D k ​)是l o g D k logD_{k}l o g D k ​的期望。

对于上式的 E ( l o g D k ) E(logD_{k})E (l o g D k ​),一般通过蒙特卡洛模拟产生。具体操作是:在样本所在的区域内,按照均匀分布随机产生和原样本数目一样的随机样本,计算这些随机样本的均值,得到一个 D k D_{k}D k ​,重复多次即可计算出 E ( l o g D k ) E(logD_{k})E (l o g D k ​) 的近似值。

G a p ( k ) Gap(k)G a p (k ) 可以看做是随机样本的损失与实际样本的损失之差,假设实际样本最佳的簇类数目为 k,那么实际样本的损失应该相对较小,随机样本的损失与实际样本的损失的差值相应地达到最大,即 最大的G a p ( k ) Gap(k)G a p (k ) 值应该对应最佳的k值。

因此,我们只需要用不同的k值进行多次实验,找出使得G a p ( k ) Gap(k)G a p (k )最大的k即可。

到现在为止我们可以发现,上面的算法中,k值都是通过人为地凭借经验或者多次实验事先确定下来了的,但是当我们遇到高维度、海量的数据集时,可能就很难估计出准确的k值。那么,有没有办法可以帮助我们自动地确定k值呢?有的,下面来看看另一个算法。

ISODATA,全称是迭代自组织数据分析法,针对传统 k-means 算法需要人为地预先确定 k 值而改进的,主要思想是:

  • 当某个类别样本数过多,分散程度较大时,将该类别分为两个子类(分裂操作,增加聚类中心数)
  • 当属于某个类别的样本数目过少时,把该类别去掉(合并操作,减少聚类中心数)

优点:可以自动寻找合适的 k 值

缺点: 除了要设置一个参考聚 类数量 k 0 k_{0}k 0 ​ 外,还需要指定额外的3个阈值,来约束上述的分裂和合并操作。具体如下:

根据分解的顺序时自下而上还是自上而下,层次聚类算法分为凝聚的层次聚类和分裂的层次聚类
凝聚性层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚性层次聚类,只在簇间相似度的定义上有所不同。

流程:以采用最小距离的凝聚层次聚类为例:

假设在输入对象中存在一些拓扑结构或顺序,可以实现从输入空间到输出空间的降维映射,其映射具有拓扑性质,与实际的大脑处理很有理论联系

流程:

Original: https://blog.csdn.net/weixin_46180132/article/details/126901228
Author: 老衲要学习
Title: 机器学习(五)聚类算法(k-means,)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/549380/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球