3. 无监督学习


3. 无监督学习

1. 聚类

将数据集中的样本划分为不同的组或簇,使得同一簇内的样本具有较高的相似性,而不同簇间的样本具有较大的差异性。

1. 划分式聚类方法

1. k-means算法

算法流程

  1. 初始化:随机选择K个数据点作为初始的聚类中心。
  2. 分配数据点:计算每个数据点到K个聚类中心的距离,将每个数据点分配到距离它最近的聚类中心所在的簇。
  3. 更新聚类中心:对于每个簇,计算该簇内所有数据点的均值,将其作为新的聚类中心。
  4. 迭代:重复步骤 2 和步骤 3,直到聚类中心不再变化或达到预设的迭代次数。

距离度量

通常使用欧几里得距离来计算数据点之间的距离。对于两个n维数据点$$X=(x_1,x_2,\cdots,x_n)$$和$$Y=(y_1,y_2,\cdots,y_n)$$,它们之间的欧几里得距离$$d(X,Y)$$计算公式为: $$d(X,Y)=\sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2}$$

2. k-means++

3. bi-kmeans

2. 密度聚类方法

1. DBSCAN

DBSCAN(Density - Based Spatial Clustering of Applications with Noise)算法(基于密度的带有噪声的空间聚类应用)是一种基于密度的空间聚类算法。

核心概念

  • ε(邻域半径):定义点的邻域范围(如欧式距离小于 ε 的区域)。
  • 核心点:如果一个数据点的邻域内包含的点数大于等于给定的最小点数阈值(MinPts),则该点被定义为核心点。
  • 密度直达:如果点p是核心点,点q在点p的邻域内,则称点q从点p密度直达。
  • 密度可达:如果存在一系列点$$p_1, p_2, \cdots, p_n$$,其中$$p_1 = p$$,$$p_n = q$$,且$$p_{i + 1}$$从$$p_i$$密度直达,则称点q从点p密度可达。
  • 密度相连:如果存在一个点o,使得点p和点q都从点o密度可达,则称点p和点q密度相连。

算法步骤

  1. 遍历数据集,对于每个数据点,计算其邻域内的数据点数量。如果数据点数量大于等于 MinPts,则将该点标记为核心点,否则标记为非核心点。
  2. 对于每个核心点,检查其邻域内的点。如果邻域内的点是核心点,则将它们密度相连,形成一个聚类。如果邻域内的点是非核心点,则将其标记为该聚类的边界点。
  3. 重复步骤 2,直到所有的核心点都被处理过。
  4. 所有未被标记为任何聚类的点都被视为噪声点。

距离度量

通常使用欧几里得距离来计算数据点之间的距离,以此确定一个点的邻域范围。在一些情况下,也可以根据数据的特点选择其他距离度量方式,如曼哈顿距离等。

2. OPTICS

3. 层次聚类方法

1. Agglomerative算法

Agglomerative 算法即凝聚式层次聚类算法,是一种自底向上的层次聚类算法,以下是关于它的详细介绍:

算法原理

  • 它将每个数据点初始化为一个单独的聚类,然后不断地合并相似的聚类,直到达到预设的停止条件(例如,所有数据点都合并为一个聚类,或者达到指定的聚类数量)。
  • 相似性度量通常使用两种方法:
  • 最小距离:也称为单链接,两个聚类之间的距离定义为两个聚类中距离最近的两个数据点之间的距离。
  • 最大距离:也称为全链接,两个聚类之间的距离是两个聚类中距离最远的两个数据点之间的距离。
  • 平均距离:计算两个聚类中所有数据点对之间距离的平均值,以此作为两个聚类间的距离。

算法步骤

  1. 初始化:将每个数据点看作一个单独的聚类,此时聚类的数量等于数据点的数量。

  2. 计算距离:计算所有聚类之间的距离,根据选择的相似性度量方法(如最小距离、最大距离或平均距离)来确定聚类间的距离矩阵。

  3. 合并聚类:找出距离最近的两个聚类,将它们合并成一个新的聚类。

  4. 更新距离矩阵:由于聚类发生了合并,需要重新计算新聚类与其他聚类之间的距离,并更新距离矩阵。

  5. 迭代:重复步骤 3 和步骤 4,直到满足停止条件。

2. Divisive算法

Divisive 算法即分裂式层次聚类算法,是与凝聚式层次聚类算法(Agglomerative 算法)相对的一种层次聚类算法,它采用自顶向下的策略进行聚类,以下是对该算法的详细介绍:

算法原理

  • 从所有数据点都属于一个聚类开始,然后逐步将聚类分裂成更小的子聚类,直到每个数据点都成为一个单独的聚类,或者达到预设的停止条件。
  • 在每一步分裂过程中,需要确定将哪个聚类进行分裂以及如何分裂。这通常基于某种评估准则,例如选择使得聚类内方差最大的聚类进行分裂,或者根据聚类间的分离度等指标来决定分裂方式。

算法步骤

  1. 初始化:将所有数据点放入一个初始聚类中。
  2. 选择聚类:根据选定的评估准则,从当前的聚类集合中选择一个要分裂的聚类。例如,可以选择聚类内数据点分布最分散(即方差最大)的聚类。
  3. 分裂聚类:使用某种分裂策略将选定的聚类分成两个子聚类。一种常见的方法是基于主成分分析(PCA),找到数据点在某个主成分方向上的中位数,然后根据该中位数将聚类分为两部分。
  4. 评估分裂效果:计算分裂后两个子聚类的相关评估指标,如聚类内方差、聚类间距离等,以评估分裂的质量。
  5. 迭代:重复步骤 2 - 4,直到满足停止条件。停止条件可以是达到指定的聚类数量,或者聚类的分裂不再能显著改善评估指标,即聚类结果已经足够好。

2. 降维

0 条评论

发表评论

暂无评论,欢迎发表您的观点!