聚类算法是一类无监督学习算法,它的主要任务是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性
聚类算法是一类无监督学习算法,它的主要任务是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性。聚类算法主要分为以下几类:
原型聚类(prototype-based Clustering):基于数据点和聚类中心之间的距离来将数据点分组。在原型聚类中,每个聚类都由一个或多个 “原型”(也称为聚类中心)来代表。这些原型通常位于数据空间中的某些位置,它们的选择和更新是聚类算法的关键部分。
密度聚类(Density-Based Clustering):基于密度的聚类算法通过考察样本点周围的密度来形成簇。这使得它能够发现任意形状的簇,并对噪声点具有较好的鲁棒性。
层次聚类(Hierarchical Clustering):层次聚类算法通过构建层次结构来组织数据。这种方法不仅能够划分簇,还能够展示簇之间的嵌套关系。
聚类任务是无监督学习中的一种任务,其目标是将数据集中的样本划分为若干个不同的组,使得同一组内的样本之间具有较高的相似性,而不同组之间的样本具有较大的差异性。聚类任务的目的是通过发现数据中的潜在结构,将相似的样本归为一类,从而揭示数据的内在模式和组织结构。
聚类任务的主要特点包括:
无监督学习:与监督学习不同,聚类任务中不需要事先标记好的训练样本及其对应的类别信息。算法自行发现样本之间的相似性结构。
相似性判据:聚类算法通常基于一定的相似性度量或距离度量来判断样本之间的相似性。相似性度量越高,样本越有可能被归为同一类。
簇结构:聚类任务的结果是将数据划分成若干簇(clusters),每个簇内的样本相似,而不同簇之间的样本差异较大。
无先验信息:在聚类任务中,通常不假设任何关于数据分布或类别的先验信息。算法根据数据本身的结构进行聚类,因此对于未知的数据集也可以有效应用。
在聚类算法中,性能度量和距离度量是聚类算法中两个基本问题,它们直接影响到聚类结果的质量和算法的选择。
性能度量用于评估聚类算法的输出结果,以确定聚类的质量和效果。常见的性能度量包括:
内部指标(Internal Measures):直接考察聚类结果而不利用任何参考模型。
外部指标(External Measures):将聚类结果与某个 “参考模型(reference model)” 进行比较。
相对有效性指标:
选择合适的性能度量取决于聚类任务的性质和是否有真实标签可用。
将聚类结果与某个 “参考模型(reference model)” 进行比较。
兰德指数(Rand Index,RI):兰德指数度量聚类结果中样本的配对关系与真实类别标签中的配对关系之间的一致性。
互信息(Mutual Information,MI):互信息度量聚类结果与真实标签之间的信息共享程度,衡量两者之间的关联性。
FM 指数(Fowlkes-Mallows Index,FMI):FMI综合考虑了聚类结果的准确性和召回率,是兰德指数的一种变体。
调整兰德指数(Adjusted Rand Index,ARI):调整兰德指数对兰德指数进行了修正,考虑了随机性的影响,范围在[-1, 1]之间。
归一化互信息(Normalized Mutual Information,NMI):NMI对互信息进行了标准化,范围在[0, 1]之间,便于不同数据集之间的比较。
Jaccard 系数(Jaccard Coefficient,简称JC):Jaccard系数是一种用于测量两个集合相似度的指标,通常用于集合之间的相似性比较
这些外部指标可以帮助评估聚类结果与真实类别标签之间的一致性,但需要注意,它们对聚类结果的评估依赖于真实标签的可用性。在实际应用中,有时候真实标签并不总是可获得,因此内部指标(如轮廓系数)可能更为适用。选择适当的性能度量要根据任务的性质和可用的信息而定。
内部指标用于在没有真实类别标签的情况下,仅基于聚类结果本身来评估聚类的质量。以下是一些常见的聚类性能度量内部指标:
紧密性(Cohesion):
分离性(Separation):
轮廓系数(Silhouette Coefficient):
Davies-Bouldin指数(DBI):
DB指数(Dunn Index,DI):
Calinski-Harabasz指数:
这些内部指标可以帮助评估聚类结果的紧密性、分离性以及整体的质量。在选择内部指标时,需要根据具体任务和数据集的特性来权衡各个指标。不同的内部指标可能对不同类型的数据和聚类结果产生不同的影响。
距离度量在聚类算法中用于衡量样本点之间的相似性或差异性。常见的距离度量包括:
对于特定问题,选择适当的距离度量至关重要,因为它直接影响到聚类的结果。有时候,为了应对数据的特殊性,也可以采用自定义的距离度量。
距离度量是用于衡量两个样本点之间距离或相似性的方法。在聚类、分类和其他数据分析任务中,选择合适的距离度量非常重要。距离度量通常具有一些重要的性质,以下是常见的距离度量的性质:
非负性(Non-negativity):
同一性(Identity):
对称性(Symmetry):
三角不等式(Triangle Inequality)(在西瓜书中称为 “直递性”):
相异性(Dissimilarity):
欧氏距离的均匀缩放不变性(Scale Invariance of Euclidean Distance):
曼哈顿距离的坐标轴平行性(Axis-Parallel Property of Manhattan Distance):
连续性(Continuity):
这些性质确保了距离度量的合理性和稳定性,使其能够在各种数据分析任务中有效地发挥作用。选择适当的距离度量通常取决于数据的特性以及任务的需求。
在聚类算法中,常见的几种距离计算公式包括欧氏距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离(Chebyshev Distance)和闵可夫斯基距离(Minkowski Distance)。以下是它们的计算公式:
欧氏距离(Euclidean Distance):
d
(
x
,
y
)
=
∑
i
=
1
n
(
x
i
?
y
i
)
2
(1)
d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} \tag{1}
d(x,y)=i=1∑n?(xi??yi?)2?(1)
曼哈顿距离(Manhattan Distance):
d
(
x
,
y
)
=
∑
i
=
1
n
∣
x
i
?
y
i
∣
(2)
d(x, y) = \sum_{i=1}^{n} |x_i - y_i| \tag{2}
d(x,y)=i=1∑n?∣xi??yi?∣(2)
切比雪夫距离(Chebyshev Distance):
d
(
x
,
y
)
=
max
?
i
(
∣
x
i
?
y
i
∣
)
(3)
d(x, y) = \max_{i}(|x_i - y_i|) \tag{3}
d(x,y)=imax?(∣xi??yi?∣)(3)
闵可夫斯基距离(Minkowski Distance):
d
(
x
,
y
)
=
(
∑
i
=
1
n
∣
x
i
?
y
i
∣
p
)
1
p
(4)
d(x, y) = \left(\sum_{i=1}^{n}|x_i - y_i|^p\right)^{\frac{1}{p}} \tag{4}
d(x,y)=(i=1∑n?∣xi??yi?∣p)p1?(4)
当 p = 2 p=2 p=2 时,闵可夫斯基距离等同于欧氏距离;当 p = 1 p=1 p=1 时,等同于曼哈顿距离。
这些距离度量方法在不同的情况下有不同的适用性,选择合适的距离度量通常依赖于具体的数据特征和任务需求。在应用时,可以根据具体情况选择最合适的距离度量方法。
一句话概述算法:K-means算法是一种无监督学习的聚类算法,通过迭代计算数据点与K个聚类中心之间的距离,并将数据点分配到距离最近的聚类中心,然后更新聚类中心为各自成员的均值,重复这一过程直至聚类中心不再显著变化,以实现数据点的分组。
算法过程:
初始化: 随机选择K个数据点作为初始聚类中心。
分配数据点: 对每个数据点,计算其与各个聚类中心的距离,将其分配到距离最近的聚类中心对应的簇。
更新聚类中心: 对每个簇,计算其所有成员数据点的均值,将均值作为新的聚类中心。
迭代: 重复执行步骤2和步骤3,直到聚类中心不再发生显著变化或达到预定的迭代次数。
根据西瓜书的内容,算法过程如下图片所示:
一句话概述算法 :学习向量化算法(LVQ)是一种监督学习算法,通过迭代地调整原型向量的位置,使其更好地代表不同类别,结合了原型聚类和监督学习的思想。
算法过程:
初始化原型向量: 随机或基于某种规则初始化一组原型向量,每个原型代表一个类别。
遍历训练数据: 对于每个训练样本,计算其与各个原型向量之间的距离,找到最近的原型向量。
更新原型向量: 根据样本的标签信息以及最近的原型向量,通过一定的更新规则来调整原型向量的位置,使其更好地拟合当前样本。
迭代: 重复上述过程,直到满足停止条件(如达到预定的迭代次数或原型向量不再发生显著变化)。
学习向量化算法的关键在于如何更新原型向量。一种常见的更新规则是根据训练样本的标签,增加靠近正确类别的原型向量,并减小靠近错误类别的原型向量。这样,通过不断迭代,原型向量逐渐调整到更好地代表各个类别。
LVQ可以看作是K均值聚类和监督学习的结合,它具有一定的鲁棒性和可解释性。该算法在模式识别、分类和特征学习等任务中都有应用。
根据西瓜书的内容,算法过程如下图片所示:
一句话概述算法:高斯混合聚类算法是一种概率模型,假设数据由多个高斯分布混合而成,通过迭代优化参数以拟合数据分布,常用于无监督学习中的聚类任务。
算法过程:
初始化参数: 随机初始化每个分量的均值、协方差矩阵和混合系数。
E 步(Expectation): 对每个数据点,计算它属于每个分量的后验概率,即计算每个分量的权重。
M 步(Maximization): 使用E步计算得到的后验概率,更新每个分量的均值、协方差矩阵和混合系数。
迭代: 重复执行E步和M步,直到模型参数收敛或达到预定的迭代次数。
GMM的优点包括对各种形状和方向的聚类簇建模能力,以及对数据分布的灵活性。它在许多领域,如模式识别、图像处理和自然语言处理等,都有广泛的应用。
此处只介绍其中一种算法——DBSCAN。
一句话概述算法:DBScan(Density-Based Spatial Clustering of Applications with Noise)算法是一种基于密度的聚类方法,通过定义数据点邻域内的密度来发现具有不同密度的数据簇,同时能够识别噪声点。
算法过程:
核心点、边界点和噪声点: 定义半径ε内包含至少MinPts个数据点的为核心点,若在ε内但不是核心点且位于核心点的ε邻域内,则为边界点,否则为噪声点。
构建簇: 从一个未访问的核心点开始,通过其邻域内的可达点,递归地将相关联的数据点加入同一簇,直到不再有可达点。标记所有在这一过程中被访问的点。
迭代: 重复以上步骤,直到所有点都被访问。未被标记的点即为噪声点。
DBScan的优势在于对不规则形状的簇的发现和对噪声的鲁棒性。算法的性能受参数ε和MinPts的选择影响,需要合适的调参以适应不同数据集的特性。
此处仅介绍其中一种算法——AGNES。
一句话概述算法:AGNES(Agglomerative Nesting)算法是一种层次聚类方法,属于凝聚式聚类。该算法从每个数据点作为一个独立的簇开始,然后逐步合并最相似的簇,构建聚类层次结构,直至所有数据点都在一个簇中。合并的相似性度量通常使用欧氏距离、曼哈顿距离等。这一过程可用一棵二叉树(聚类树或树状图)表示,其中树的叶子节点代表初始的数据点,内部节点代表合并的簇,根节点代表包含所有数据点的簇。
算法过程:
初始化: 将每个数据点看作一个独立的簇。
合并: 选择最相似的两个簇合并为一个新的簇,更新相似性度量。
重复: 重复合并步骤,直至只剩下一个簇,形成聚类层次结构。
AGNES算法的输出是一个聚类树,通过设定合并的阈值可以得到不同层次的聚类结果。该算法对于不同形状和大小的簇具有较好的适应性,但计算复杂度相对较高。
聚类算法通过对数据点进行分组,揭示出内在的结构和相似性。K-means 是一种迭代划分数据的常用方法(本文中归类为原型算法),DBSCAN 基于密度识别簇,而AGNES层次聚类逐步合并最相似的簇。高斯混合模型通过概率建模适应各种分布。学习向量化算法结合监督学习和原型聚类。选择合适的算法需考虑数据特征和任务需求,以实现有效的数据组织与分析。
Smileyan
2024.01.10 0:40