机器学习——聚类

1. 分类 vs 聚类

分类

  • 有监督学习(需要标签);
  • 依据已知标签的数据,根据一定规则或模式,对新输入数据标记上影响标签(有明确的训练集,有人为给定标签)。

聚类

  • 无监督学习(没有标签);
  • 对于给定数据按照其相似性进行划分(没有训练集,没有标签,也不知道确切的类别或簇的数目)。

2. 聚类任务

  • 在“无监督学习”任务中研究最多、应用最广;
  • 聚类的目标是将数据样本划分为若干个通常不相交的(cluster);
  • 既可以作为一个单独过程(用于找寻数据内在的分布结构),也可作为分类等其他学习任务的前驱过程。

聚类:根据某种相似性,把一组数据划分成若干个簇的过程。

  • 难点一:相似性很难精准定义!各种距离,度量学习
  • 难点二:可能存在的划分太多!避免穷举,优化算法!
  • 难点三:若干个簇 = ?预先给定,算法自适应!

3. 常见聚类方法:

原型聚类(prototype-based clustering)

  • 假设:聚类结构能通过一组原型刻画;
  • 过程:先对原型初始化,然后对原型进行迭代更新求解;
  • 代表:k均值聚类,学习向量量化(LVQ),高斯混合聚类。

密度聚类(density-based clustering)

  • 假设:聚类结构能通过样本分布的紧密程度确定;
  • 过程:从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇;
  • 代表:DBSCAN, OPTICS,DENCLUE。

层次聚类(hierarchical clustering)

  • 假设:能够产生不同粒度的聚类结果;
  • 过程:在不同层次对数据集进行划分,从而形成树形的聚类结构;
  • 代表:AGNES (自底向上),DIANA(自顶向下)。

4. K-means算法

聚类问题可以通过为每个簇寻找合适的中心来实现。假设每个簇的中心已经找到,可以把所有数据点分配到距离它最近的中心所在的簇。即: j = arg min ⁡ l d i s t ( x i , μ l ) j=\argmin_ldist(x_i,\mu_l) j=largmindist(xi,μl)
在这里插入图片描述

4.1 K-means模型

给定数据 x x x个簇的个数 k k k,K-means模型可以表示为: arg min ⁡ μ i , C i ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − μ i ∣ ∣ 2 \argmin_{\mu_i,C_i}\sum\limits_{i=1}^k\sum\limits_{x∈C_i}||x-\mu_i||^2 μi,Ciargmini=1kxCixμi2其中, C i C_i Ci表示第 i i i个簇, μ i \mu_i μi表示第 i i i个簇的中心。
目标函数对 μ i \mu_i μi求偏导等于零,得: μ i = 1 ∣ C i ∣ ∑ x ∈ C i x \mu_i=\frac{1}{|C_i|}\sum\limits_{x∈C_i}x μi=Ci1xCix因此,上述模型被称为K-means模型。
K-means模型 arg min ⁡ C i ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − 1 ∣ C i ∣ ∑ x ∈ C i x ∣ ∣ 2 \argmin_{C_i}\sum\limits_{i=1}^k\sum\limits_{x∈C_i}||x-\frac{1}{|C_i|}\sum_{x∈C_i}x||^2 Ciargmini=1kxCixCi1xCix2

可能的划分数: S ( n , k ) = 1 k ! ∑ i = 0 k ( − 1 ) i ( k − i ) n S(n,k)=\frac{1}{k!}\sum\limits_{i=0}^k(-1)^i(k-i)^n S(n,k)=k!1i=0k(1)i(ki)n是非凸组合优化问题,NP-难!

4.2 模型求解

采用启发式算法进行求解,主要有以下几种方法:

  • Lloyd(Forgy)算法
  • Hartigan-Wong算法
  • MacQueen算法

下面使用Lloyd算法求解K-means。

  • 给定数据 x x x和簇的个数 k k k
  • 随机选取 k k k个簇的中心 { μ i } i = 1 , . . . , k \{\mu_i\}_{i=1,...,k} {μi}i=1,...,k
  • 重复下述迭代过程直至收敛:

划分步骤:对每个数据点 x j x_j xj,计算其应该属于的簇。 arg min ⁡ i ∣ ∣ x j − μ j ∣ ∣ 2 2 \argmin_i||x_j-\mu_j||_2^2 iargminxjμj22更新步骤:重新计算每个簇的中心。 μ i = 1 ∣ C i ∣ ∑ x j ∈ C i x j \mu_i=\frac{1}{|C_i|}\sum\limits_{x_j∈C_i}x_j μi=Ci1xjCixj

在这里插入图片描述
在K-Means聚类时,每个聚类簇的质心是隐含数据。假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。

Lloyd算法的优势:

  • Lloyd算法属于期望最大化算法(EM算法),可以保证收敛到K-means问题的局部最优解;
  • Lloyd算法速度快,计算复杂度为O(nk);
  • Lloyd算法思想简单,实现容易,可扩展性强。

Lloyd算法的劣势:

  • 簇的个数 k k k需要预先给定;
  • 聚类结果依赖于初值的选取。

4.3 K-means++

K-means++是一种初始化方法,目的是改进K-means算法对初值的影响。流程如下:

  • Step 1:随机选取一个簇的中心 μ 1 \mu_1 μ1
  • Step 2:选择离已有中心最远的数据点作为新的中心;
  • Step 3:重复第二步,直至选出 k k k个中心;
  • Step 4:运行K-means算法。

5. DBSCAN算法

5.1 概念

DBSCAN,即Density-Based Spatial Clustering of Applications with Noise,是一种基于密度的聚类算法。
在这里插入图片描述

5.2 优劣势分析

优势:

  • 不需要指定簇的个数;
  • 可以发现任意形状的簇;
  • 擅长找到离群点(检测任务);
  • 只需要两个参数。

劣势:

  • 高维数据比较困难(可以降维);
  • 参数难以选择(参数对结果的影响非常大);
  • sklearn中效率很低(数据削减策略)。

6. AGNES算法

AGNES,即AGglomerative NESting,是一种凝聚的层次聚类算法。流程如下:

  • Step 1:将每个样本点作为一个簇;
  • Step 2:合并最近的两个簇;
  • Step 3:若所有样本点都存在于一个簇中,则停止;否则转到 Step 2。

在这里插入图片描述

7. 聚类性能度量

可参考这篇文章
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道了,下面是我的回答: 聚类算法是一种无监督学习算法,它可以将数据集中的数据按照某种规则进行分组,使得同一组内的数据相似度较高,不同组之间的数据相似度较低。聚类算法可以帮助我们对数据进行分类、分析和理解,同时也可以为其他机器学习任务提供数据预处理和特征提取的支持。 聚类算法的基本流程包括:确定聚类算法的目标函数、选择相似度度量方法、选择聚类算法、确定聚类的数量、进行聚类操作以及评估聚类效果。常见的聚类算法包括K-Means算法、层次聚类算法、密度聚类算法等。 K-Means算法是一种基于距离的聚类算法,它的基本思想是将数据集中的数据划分为K个簇,使得同一簇内的数据相似度较高,不同簇之间的数据相似度较低。K-Means算法的优点是计算复杂度较低,容易实现,但是需要预先指定簇的数量和初始聚类中心。 层次聚类算法是一种基于相似度的聚类算法,它的基本思想是不断合并数据集中相似度最高的数据,直到所有数据都被合并为一个簇或达到预先设定的簇的数量。层次聚类算法的优点是不需要预先指定簇的数量和初始聚类中心,但是计算复杂度较高。 密度聚类算法是一种基于密度的聚类算法,它的基本思想是将数据集中的数据划分为若干个密度相连的簇,不同簇之间的密度差距较大。密度聚类算法的优点是可以发现任意形状的簇,但是对于不同密度的簇分割效果不佳。 以上是聚类算法的基础知识,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值