第七节-聚类算法-Kmeans&Dbscan原理(第一章: 机器学习算法精进及其案例应用(课程笔记) )

7.1-聚类算法-Kmeans&Dbscan原理

K-Means算法是一种常用的聚类算法,其基本思想是将数据集中的样本划分为K个不重叠的簇,每个簇由其内部的样本紧密组成,而不同簇之间的样本相似度较低。以下是对K-Means算法的解释说明:

  1. 基本概念: K-Means算法的第一步是选择簇的个数K,这是算法的一个关键参数,需要根据问题的背景和需求来确定。K代表最终的簇数目,决定了数据集被划分成多少个簇。通常,K的选择需要进行试验和评估,可以使用不同的方法来确定最佳的K值,如肘部法则或轮廓分析。

  2. 质心: 每个簇都有一个质心,质心是该簇内所有样本的平均值。在K-Means算法中,质心是一个特征向量,其中每个维度的值是该簇内所有样本在该维度上的平均值。计算质心是为了代表簇的中心点,以便后续将样本分配到最近的簇。

  3. 距离的度量: K-Means算法使用距离来度量样本之间的相似度和差异性。常用的距离度量包括欧几里得距离和余弦相似度。

    • 欧几里得距离是直接计算样本之间在特征空间中的距离,通常用于数值型数据。
    • 余弦相似度是通过计算样本之间的夹角来度量它们的相似度,适用于文本数据或稀疏数据。在计算余弦相似度之前,通常需要对数据进行标准化,确保每个样本的向量长度为1。
  4. 优化目标函数是K-Means算法的核心,它的目标是最小化簇内样本点与其所属簇的质心之间的距离平方和,也叫做误差平方和(SSE,Sum of Squared Errors)。具体的数学表达如下:

    对于给定的K个簇和数据集D,我们有:

    - 设C_i表示第i个簇,其中1 ≤ i ≤ K。
    - 设\mu _{i}表示簇C_i的质心。
    - 设x_j表示数据集D中的第j个样本点,其中1 ≤ j ≤ N(N为数据集中样本点的总数)。

    K-Means的优化目标函数可以表示为:

    J = \sum_{i=1}^{K} \sum_{j=1}^{N} \left\| x_j - \mu_i \right\|^2

    其中,\left\| x_j - \mu_i \right\|^2 表示样本点 x_j 与簇 C_i 的质心 \mu _{i} 之间的欧几里得距离的平方。目标是找到一组质心 \mu _{i} 以最小化总的误差平方和J。

    K-Means算法通过迭代的方式不断调整质心\mu _{i}和样本点的分配,以最小化 J。迭代过程中,每个样本点被分配到离它最近的质心所属的簇,然后质心根据簇内样本的均值更新。迭代继续,直到质心不再发生显著变化或达到预定的迭代次数。

    这个优化过程的目标是将样本点划分为K个簇,使得每个簇内的样本点尽量接近其簇内质心,同时使不同簇之间的样本点尽量分散,从而实现聚类的目标。

7.2-KMEANS工作流程

K-Means算法是一种迭代式聚类算法,其工作流程可以概括为以下几个步骤:

  1. 初始化:

    • 首先,选择要分成的簇的数量K。
    • 随机选择K个数据点作为初始质心,或者通过其他初始化方法确定初始质心(例如K-Means++初始化)。
  2. 聚类分配:

    • 对于每个数据点,计算其与各个质心之间的距离(通常使用欧几里得距离或其他距离度量)。
    • 将数据点分配到距离最近的质心所属的簇。
  3. 更新质心:

    • 对于每个簇,计算该簇内所有数据点的平均值,得到新的质心。
    • 新的质心将代表该簇的中心位置。
  4. 重复迭代:

    • 重复步骤2和步骤3,直到满足终止条件,例如质心不再发生显著变化,或者达到预定的迭代次数。
  5. 输出结果:

    • 最终,每个数据点都会被分配到一个簇中,而每个簇都有一个质心。
    • 这些簇和质心就是K-Means算法的聚类结果,可以用于数据分析、可视化或其他后续任务。

总体而言,K-Means算法通过不断迭代,将数据点划分为K个簇,以使每个簇内的数据点尽量接近其簇内质心,同时最小化总的误差平方和。这样可以将数据集聚类成紧密相似的簇,并找到每个簇的中心点,从而实现了数据的聚类分析。需要注意的是,K-Means算法对初始质心的选择敏感,不同的初始化可能会导致不同的结果。


7.3-KMEANS迭代可视化展示

可视化展示网站:Visualizing DBSCAN Clusteringicon-default.png?t=N7T8https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/


7.4-DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种密度聚类算法,它可以识别具有相对高密度的数据点,并将它们组成簇,同时识别出噪声数据点。以下是对DBSCAN算法的解释说明:

  1. 基本概念:

    • DBSCAN是密度聚类算法,它不需要预先指定簇的数量。
    • 算法核心的思想是基于数据点之间的密度来进行聚类,而不是距离。
    • DBSCAN将数据点分为三种类型:核心点、边界点和噪声点。
  2. 核心对象:

    • 核心对象是指在给定的半径r内,周围至少包含minPts个数据点的数据点。
    • 核心对象是聚类的中心,它们代表了簇内的高密度区域。
  3. ε邻域的距离值:

    • ε(epsilon)是DBSCAN算法中用户需要指定的参数,它代表了一个点的邻域半径。
    • ε用于确定一个点的邻域,即半径为ε的圆形区域。
  4. 直接密度可达:

    • 如果一个点p在另一个点q的ε邻域内,并且点q是核心点,那么点p就被称为直接密度可达于点q。
    • 这表示点p可以通过一步跳跃到达核心点q。
  5. 密度可达:

    • 密度可达是一个传递性的概念,如果存在一个点序列q0、q1、q2...、qk,其中q0是核心点,而对于每个qi,qi-1与qi是直接密度可达的,那么qk与q0就是密度可达的。
    • 这意味着密度可达可以通过一系列直接密度可达的点传播,连接低密度区域到高密度区域,从而形成一个聚类。

DBSCAN算法的工作流程包括从一个核心点开始,通过密度可达的点来扩展簇,直到没有更多的密度可达点。这样,DBSCAN能够自动识别出具有不同密度的簇,同时将孤立的噪声点标记为噪声。它对于不规则形状的簇和处理噪声数据非常有效,但需要仔细选择参数ε和minPts以获得良好的结果。

DBSCAN不仅可以用于聚类数据,还可以用于检测异常点(离群点)。在DBSCAN中,异常点通常是那些不能被划分到任何簇中的数据点。这是因为异常点通常位于低密度区域,无法连接到核心点或其他高密度点。

使用DBSCAN进行异常点检测的步骤如下:

  1. 选择合适的参数:

    • 需要选择适当的ε(邻域半径)和minPts(最小邻域内点数)参数,以适应异常点的分布和密度。通常,较大的ε和较小的minPts有助于检测到更多的异常点。
  2. 执行DBSCAN:

    • 运行DBSCAN算法,将数据点分为核心点、边界点和噪声点。
    • 核心点属于高密度区域,边界点是在高密度区域边缘的点,而噪声点是那些不能划分到任何簇中的点。
  3. 标识异常点:

    • 所有被标记为噪声点的数据点都可以被认为是异常点。
    • 这些异常点通常是那些不符合高密度区域模式的数据点,或者位于低密度区域的离群值。

DBSCAN在异常点检测中的优点包括能够自适应不同密度和形状的异常点分布,而且不需要事先指定异常点的数量。然而,对于密度差异很大的数据集,需要仔细调整参数以确保准确的异常点检测。此外,需要注意的是,DBSCAN可能无法识别出具有相似密度但略有偏差的异常点。因此,在某些情况下,结合其他异常点检测方法可能更为合适。

7.5-DBSCAN工作流程

程可以概括为以下几个步骤:

  1. 初始化参数

    • 用户需要指定两个关键参数:ε(邻域半径)和minPts(最小邻域内点数)。
    • ε定义了一个点的邻域半径,用于确定数据点之间的距离关系。
    • minPts规定了一个点在ε邻域内至少需要包含多少个数据点才能被视为核心点。
  2. 核心点识别

    • 对于每个数据点,DBSCAN算法计算它的ε邻域内包含多少个数据点。
    • 如果一个点的ε邻域内包含的数据点数目大于等于minPts,则该点被标记为核心点。
  3. 簇扩展

    • 对于每个核心点,DBSCAN算法开始构建一个新的簇。
    • 从一个核心点开始,将其放入新簇中,并递归地将其ε邻域内的点也放入同一簇中。
    • 这一过程不断扩展,直到簇中不再包含新的核心点。
  4. 边界点分配

    • 边界点是不满足minPts条件但落在某个核心点的ε邻域内的点。
    • 这些边界点被分配给与它们最近的核心点所在的簇。
  5. 噪声点标记

    • 所有不能分配到任何簇的数据点被标记为噪声点(或离群点)。
    • 这些点通常位于低密度区域,远离任何核心点或边界点。
  6. 重复步骤

    • 以上步骤将循环执行,直到所有数据点都被分配到某个簇或标记为噪声点。
  7. 簇识别

    • 最终,DBSCAN算法将生成多个簇,每个簇由一个或多个核心点以及与它们直接或间接密度可达的点组成。
    • 这些簇表示了数据集中的密度聚集区域,每个簇具有不同的形状和大小。

总的来说,DBSCAN算法通过识别核心点、扩展簇、分配边界点和标记噪声点来聚类数据。它具有自动发现簇的能力,不需要事先指定簇的数量,并且可以有效处理噪声和不规则形状的簇。DBSCAN适用于各种应用领域,尤其适用于空间数据挖掘和异常检测。

DBSCAN聚类算法的参数选择,即半径ε(邻域半径)和minPts(最小邻域内点数),对算法的性能和结果影响非常大。以下是关于这两个参数的选择的概括说明:

  1. 半径ε(邻域半径)的选择

    • ε定义了一个点的邻域半径,用于确定数据点之间的距离关系。
    • ε的选择应该考虑数据集的特性以及聚类目标。
    • 如果ε选择过小,将导致大多数数据点被标记为噪声,簇的数量很多,且小的簇可能被忽略。
    • 如果ε选择过大,将导致多个簇被合并成一个,聚类结果不准确。
    • 通常,可以采用以下方法来选择ε:
      • 基于经验或领域知识。
      • 使用可视化工具来观察不同ε值下的聚类效果,如绘制ε-簇数量曲线(epsilon-neighborhood graph)。
      • 基于K-D树等数据结构的方法来自动选择合适的ε。
  2. minPts(最小邻域内点数)的选择

    • minPts规定了一个点在ε邻域内至少需要包含多少个数据点才能被视为核心点。
    • minPts的选择也应根据数据集的特性和聚类需求。
    • 如果minPts选择过小,将导致大多数点都被认为是核心点,算法可能会失去区分能力,簇的数量较多。
    • 如果minPts选择过大,将导致只有少数点被认为是核心点,簇的数量较少,小簇可能会被忽略。
    • 通常,minPts的选择可采用以下方法:
      • 基于经验或领域知识。
      • 通过可视化工具观察不同minPts值下的聚类效果。
      • 使用K-D树等数据结构的方法来自动选择合适的minPts。

在实践中,参数ε和minPts的选择通常需要多次试验和调整,以达到最佳的聚类效果。重要的是要理解数据集的特点、聚类需求和参数之间的权衡关系,以便选择合适的参数值,从而得到有意义和准确的聚类结果。


7.6-DBSCAN可视化展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值