无监督学习
无监督学习是一种机器学习的方法,它在没有明确标注(标签)的情况下对数据进行分析和建模。与有监督学习不同,在无监督学习中,模型不会事先知道输入数据的正确答案。相反,它通过寻找数据中的模式、结构或分布来进行推断。常见的无监督学习任务包括聚类、降维和密度估计。
一、无监督学习之降维算法
1.概念(What)
降维(Dimensionality Reduction)是一类无监督学习算法,旨在将训练数据中的高维数据映射到低维空间中,同时尽量保留数据的原始结构和信息。降维的目的是简化数据的复杂性,减小计算开销,提升模型的可解释性,或为数据可视化提供方便。常见的降维算法包括:
- 主成分分析(PCA):通过线性变换将数据映射到一个新的坐标系中,使得映射后的数据在新坐标系中的方差最大。前几个主成分通常能解释数据的主要变化。
- 线性判别分析(LDA):与PCA类似,但它同时考虑了类间和类内的方差,目的是最大化类间方差与类内方差的比值。这种方法通常用于分类任务。
- t-SNE(t-Distributed Stochastic Neighbor Embedding):一种非线性降维方法,特别适合用于高维数据的可视化,将相似的数据点在低维空间中尽量靠近。
- 自编码器(Autoencoder):一种神经网络模型,先将数据压缩到低维表示,再从低维表示重构出原始数据。自编码器的隐藏层可以视为一种降维方法。
2.为什么要降维(Why)
降维在数据分析和机器学习中有多种重要的应用和优势:
- 减少计算成本:高维数据意味着更多的计算资源和时间。通过降维,可以大大减少计算开销,尤其是在处理大规模数据集时。
- 缓解“维度灾难”:随着数据维度的增加,样本之间的距离迅速变得无差别,这使得许多机器学习算法(如最近邻算法)变得不稳定。降维可以减轻这种现象。
- 去噪和去冗余:高维数据可能包含很多噪声或冗余信息。通过降维,可以提取出数据的主要特征,从而去除无关或多余的信息。
- 数据可视化:人类视觉系统最多只能感知三维数据,通过降维技术(如PCA或t-SNE),可以将高维数据投影到二维或三维空间中,以便进行可视化分析。
- 增强模型的可解释性:在一些情况下,高维数据可能难以解释。通过降维,我们可以得到更简单、更易于理解的特征或表示。
3.生活例子
假设超市有一个包含了商品所有属性的大数据库,但在做分析或展示时,数据维度太高,难以直观理解或处理。此时,超市可以使用降维算法,比如主成分分析(PCA),将这些高维数据(比如每个商品有20个属性)压缩成一个更低维的表示(比如压缩成3个属性),而这3个属性仍能保留原始数据中的大部分信息。
- 原始属性可能包括:价格、热量、蛋白质、脂肪、糖、品牌、包装大小等。
- 降维后,超市可能只关注3个主要成分,比如“价格与品牌”、“营养成分”(综合了热量、蛋白质、脂肪等)和“包装大小”。
通过降维,超市管理者可以更容易地理解数据之间的关系,并使用这些简化后的信息来做决策,比如调整商品的布局、设计促销策略,或者向顾客推荐组合商品。
4.降维的缺点
- 信息损失
- 降维的过程本质上是对原始数据的一种压缩,这通常意味着会丢失一些信息。即使是使用主成分分析(PCA)这样的技术,低维空间中也可能无法完全保留原始数据的所有重要特征。信息丢失可能导致模型的表现下降,尤其是在需要细节或准确性的任务中。
- 模型解释性下降
- 在某些情况下,降维后的新特征(如PCA中的主成分)可能缺乏明确的物理或现实意义。这使得模型的解释性变差,难以直观理解降维后的数据特征。例如,原始数据的某个特定维度可能对应一个具体的属性(如价格),但降维后的主成分可能是多个属性的组合,难以直接解释。
- 适用性有限
- 并不是所有数据集都适合降维。例如,如果数据本身已经非常低维(如只有几个关键特征),降维可能没有太大意义,甚至会导致结果变差。此外,对于一些具体的应用场景,如医学诊断或金融预测,降维可能会导致重要信息的丢失,从而影响决策的准确性。
5.奇异值分解(Singular Value Decomposition, SVD)
(1)视频讲解
这一部分用到线性代数等数学知识,b站有个讲的很好的视频,我把链接放在下面,大家去观看,里面有很好的动态效果
【【学长小课堂】什么是奇异值分解SVD–SVD如何分解时空矩阵-哔哩哔哩】 https://b23.tv/jVwPXuN
(2)奇异值分解的作用
SVD分解可以将一个矩阵进行分解,对角矩阵对角线上的特征值递减存放,而且奇异值的减少特别的快,在很多情况下,前 10%甚至 1%的奇异值的和就占了全部的奇异值之和的 99%以上的比例。
具体解释:
- 对角矩阵
Σ
:
在奇异值分解 A = U Σ V^T
中,Σ
是一个对角矩阵,它的对角线元素是非负数,这些数称为奇异值。
-
奇异值的排列:奇异值按照大小从大到小排列,通常记作
σ1, σ2, σ3, ...
,其中σ1
是最大的奇异值。 -
奇异值表示的信息量:
奇异值在矩阵中反映了数据的“能量”或“信息量”。较大的奇异值对应着较大的信息量,这意味着与这些奇异值相关的奇异向量在矩阵的描述中更重要。因此,奇异值可以被看作是矩阵的主要特征,反映了矩阵在不同方向上的信息含量。
- 主要特征的提取:
通过只保留最大的几个奇异值及其对应的奇异向量(即矩阵 U
和 V^T
中的列向量),我们可以获得一个低秩近似的矩阵。这种低秩近似包含了原始矩阵的大部分信息,同时大大降低了数据的复杂性和维度。在数据分析、图像处理和机器学习中,这种方法被广泛用于降维、压缩数据和去噪。
因此,对角矩阵 Σ
中的奇异值可以被理解为原始矩阵的主要特征,它们在很大程度上决定了矩阵的性质和信息内容。
如下图所示:
(3)示例1
下图展示了奇异值分解(SVD)如何将一个矩阵表示为几个奇异值和奇异向量的组合。
<1>图像部分
左侧的图像展示了一个矩阵(比如一幅图像),这个矩阵可能是用黑白像素表示的字母或数字(图中展示的矩阵是一个方形图案,类似数字“0”)。这个矩阵可以用奇异值分解来表示。
<2>奇异值和奇异向量部分
右侧的内容显示了SVD分解的结果,包括三个奇异值(σ1、σ2、σ3)和对应的奇异向量(u1、v1)、(u2、v2)、(u3、v3)。这些奇异值和奇异向量具有以下含义:
-
奇异值(σ):
σ1 = 14.72
,σ2 = 5.22
,σ3 = 3.31
:这些数值是矩阵的奇异值,反映了数据在对应方向上的“能量”或信息量。- 通常,最大的奇异值(σ1)对应的方向包含了最多的信息,因此对矩阵的重构贡献最大。
-
奇异向量(u 和 v):
u1, u2, u3
是左奇异向量,v1, v2, v3
是右奇异向量。- 这些向量通过奇异值加权后,可以组合成原始矩阵的近似。
<3>矩阵的重构
右下方的公式表示原始矩阵 M
可以被表示为若干奇异值分量的和:
M = u1 * σ1 * v1^T + u2 * σ2 * v2^T + u3 * σ3 * v3^T
- 这意味着,原始矩阵可以被分解为几个矩阵的加权和,其中每个矩阵由一个左奇异向量、一个右奇异向量以及一个奇异值组成。
- 具体地,较大的奇异值及其对应的奇异向量在重构矩阵时贡献最大。可以仅使用前几个奇异值来重构矩阵,从而在保持大部分信息的同时实现降维或压缩。
(4)示例2
这张图进一步展示了如何使用奇异值分解(SVD)来降噪(例如图像)。
<1>图像部分
- 左侧图像:这是原始矩阵的图像表示,可以看到有一些灰色噪点
- 右侧图像:这是通过奇异值分解只保留前几个奇异值及其对应的奇异向量后重构得到的图像,可以看到灰色的噪点已经消失
<2>奇异值和矩阵重构
-
奇异值列表:右侧列出了一部分奇异值(
σ1 = 14.15, σ2 = 4.67, σ3 = 3.00, ...
),这些奇异值按从大到小排列。- σ1, σ2, σ3:这些是最大的几个奇异值,对应的方向包含了矩阵的大部分信息。
- σ4, σ5 及更小的奇异值:这些值非常小,对重构矩阵的贡献较小,保留它们会增加矩阵的复杂性,但对图像的视觉效果影响不大。
-
重构公式:图中展示了使用前三个奇异值及其对应的奇异向量来近似重构原始矩阵
M
的公式:M ≈ u1 * σ1 * v1^T + u2 * σ2 * v2^T + u3 * σ3 * v3^T
- 这个公式表示,原始矩阵
M
被近似表示为由前三个奇异值和对应的奇异向量的加权和。 - 保留越多的奇异值和对应向量,重构的图像越接近原始图像。
- 这个公式表示,原始矩阵
(5)示例3
这张图展示了奇异值分解(SVD)在图像压缩中的一个具体案例,利用 SVD 技术来减少图像的存储空间,同时尽量保持图像的视觉质量。
<1>图像内容
- 左侧图像:显示的是原始图像,这是一张经典的 Lena 图像,常用于图像处理的研究和测试。
- 右侧图像:显示的是经过 SVD 处理后的图像。在图像视觉效果上,与原始图像相比几乎没有太大差别。
<2>数学表示
-
原始图像:
- 图像的大小为
m = 575
(高度) 和n = 1081
(宽度),图像包含的像素数为m × n × 3
(RGB三通道)。 - 原始图像的数据维度为
575 × 1081 × 3 = 1864725
,这是图像的总像素数。
- 图像的大小为
-
SVD 处理:
- 通过奇异值分解,将图像矩阵分解为三个矩阵:
U
,Σ
, 和V^T
。 - 在这个例子中,设定
k = 150
,即只保留前 150 个奇异值及其对应的奇异向量进行图像重构。 - 处理后的矩阵维度为:
U
的维度为575 × 150
。Σ
是一个对角矩阵,维度为150 × 150
。V^T
的维度为1081 × 150
。
- 通过奇异值分解,将图像矩阵分解为三个矩阵:
-
压缩后的数据量:
- 压缩后的总数据量为:
3 × (575 × 150 + 150 × 150 + 1081 × 150) = 812700
- 通过 SVD 压缩后,图像的存储数据量减少到了
812700
,远小于原始图像的1864725
。
- 压缩后的总数据量为:
<3>解释
-
降维和压缩:通过 SVD 的降维处理,可以显著减少存储数据量,而不会明显影响图像的视觉质量。这是因为图像的主要信息可以通过少量的奇异值和奇异向量来表示,而去除掉的那些较小的奇异值和对应的向量对图像的影响很小。
-
应用场景:这样的处理方式在图像压缩、存储优化以及快速传输等应用场景中非常有用。即使在压缩后,图像仍然可以保持相对较高的视觉质量。
6.主成分分析(Principal Component Analysis, PCA)
PCA 是一种统计技术,用于简化数据集的复杂性,同时尽可能保留数据的方差信息。通过PCA,可以将高维数据投影到低维空间中,以便更容易理解和分析数据的结构。
(1)目标
PCA 的目标是找到一组新的正交坐标轴(称为主成分),使得数据在这些坐标轴上的方差最大化。换句话说,PCA 试图将数据变换到一个新的坐标系,使得在新坐标系中的第一个坐标轴方向上数据的方差最大,第二个坐标轴方向上方差次大,依此类推。
(2)主要步骤
-
标准化数据:
- 首先,将数据进行标准化处理。假设我们有一个
m x n
的数据矩阵X
,其中m
是样本数量,n
是特征数量。为了消除特征尺度的影响,需要将数据标准化,使得每个特征具有零均值和单位方差。
X_standardized = (X - mean(X)) / std(X)
- 首先,将数据进行标准化处理。假设我们有一个
-
计算协方差矩阵:
- 计算标准化后的数据矩阵
X_standardized
的协方差矩阵C
,其公式为:
C = (1 / (m - 1)) * X_standardized^T * X_standardized
这里,
C
是一个n x n
的矩阵,其中每个元素表示数据集中两个特征之间的协方差。 - 计算标准化后的数据矩阵
-
对协方差矩阵进行特征值分解:
- 对协方差矩阵
C
进行特征值分解,得到特征值和特征向量。特征值表示了数据在对应特征向量方向上的方差大小,特征向量表示主成分方向。
C * v_i = λ_i * v_i
其中,
λ_i
是第i
个特征值,v_i
是对应的特征向量。 - 对协方差矩阵
-
选择主要成分:
- 将特征值按从大到小的顺序排列,选择前
k
个特征值对应的特征向量作为新的坐标轴。k
的选择取决于保留的方差比例,例如保留90%或95%的总方差。
- 将特征值按从大到小的顺序排列,选择前
-
转换数据到新空间:
- 将原始数据投影到选定的
k
个主成分方向上,得到降维后的数据。新的数据表示为:
X_pca = X_standardized * V_k
其中,
V_k
是包含前k
个特征向量的矩阵,X_pca
是降维后的数据矩阵。 - 将原始数据投影到选定的
(3)几何解释
PCA 可以被几何理解为将数据旋转到一个新的坐标系,使得最大方差方向与坐标轴对齐。通过这种方式,数据的主要变化被集中在前几个主成分上,而剩余的主成分则包含较少的信息量。
(4)实际应用
-
数据压缩:
- PCA 可以用来减少数据的维度,从而降低存储和计算成本,同时保留数据的主要信息。
-
噪声过滤:
- 在某些情况下,数据中的噪声主要集中在小的主成分方向上。通过只保留最大的主成分,可以去除噪声。
-
可视化:
- PCA 常用于数据的可视化,将高维数据投影到二维或三维空间中,以便更好地观察数据的结构和模式。
-
特征提取:
- 在机器学习中,PCA 可以用于提取最重要的特征,简化模型并防止过拟合。
(5)优缺点
- 优点:
- 能够有效地降低数据的维度,简化分析。
- 保留数据中的主要方差,尽量减少信息损失。
- 对数据的可视化和噪声过滤有帮助。
- PCA 的局限性:
- 然而,这种方差最大化的准则并不总是能够有效地区分数据的类别。如下图所示,尽管 PCA 在保留数据内在信息方面表现良好,但它在区分不同类别的数据时,效果可能并不理想。PCA 优化的是投影后的方差,而不是数据点的可分性。
- 在某些情况下,PCA 可能会将不同类别的数据投影到同一个空间区域内,导致数据点混杂在一起,无法有效区分。
7.t-分布领域嵌入算法
t-SNE(t-distributed Stochastic Neighbor Embedding)是一种非线性降维技术,专门用于高维数据的可视化。与线性降维方法(如PCA)不同,t-SNE在处理复杂的高维数据时,能够更好地保留数据点的局部结构,使得数据在低维空间中呈现出更直观的聚类或分离效果。
(1)t-SNE 的核心思想
t-SNE 的核心思想是:
- 保持局部相似性:t-SNE 在高维空间和低维空间中都尽可能保持相似的局部数据点的分布。也就是说,如果两个数据点在高维空间中彼此相邻,那么在低维空间中,它们也应尽可能彼此相邻。
- 概率分布转换:
- 高维空间:首先,t-SNE会在高维空间中,基于数据点之间的距离,计算每对数据点之间的相似度,形成一个概率分布。
- 低维空间:然后,在低维空间中,同样地计算数据点之间的相似度,形成另一个概率分布。
- Kullback-Leibler(KL)散度:t-SNE的目标是通过最小化高维空间和低维空间的概率分布之间的差异,使得低维空间能够很好地反映高维空间的结构。这个差异通常通过Kullback-Leibler散度(KL散度)来衡量。
- t分布:为了处理高维数据中的“拥挤”问题(即高维空间中相似度差异不明显),t-SNE 使用 t 分布而不是高斯分布来计算低维空间中的相似度。t 分布有更长的尾部,可以更好地分离低维空间中的数据点。
(2)t-SNE 的优点
- 非线性降维:与PCA等线性方法不同,t-SNE可以捕捉高维数据中的非线性结构,特别是在数据具有复杂的嵌套结构或多个簇时,t-SNE往往表现更好。
- 可视化能力:t-SNE 特别适合将高维数据投影到二维或三维空间中,使得数据的内在结构更加直观,方便进行数据探索和模式识别。
(3)t-SNE 的缺点
- 计算复杂度:t-SNE 的计算量较大,尤其在数据量很大的情况下,计算时间可能较长。
- 参数敏感性:t-SNE 对参数(如困惑度)的选择较为敏感,参数选择不当可能导致结果不稳定或不理想。
(4)示例
<1>图示解释
- 数据点的相似性计算:
- 在t-SNE算法中,首先需要确定每个数据点与其他数据点之间的“相似性”。
- 图中选取了一个特定的黑色数据点,并展示了如何计算该数据点与其他数据点之间的相似性。
- 相似性的定义:
- t-SNE通过将高维空间中的数据点投影到低维空间,并确保相似的数据点在低维空间中保持相近来实现降维。
- 具体来说,t-SNE根据数据点之间的距离计算相似性,距离越近,相似性越高。
- 高维空间中的相似性:
- 右上角的小图展示了高维空间中,黑色数据点与其他数据点之间的相似性连接线。线的长度代表了数据点之间的距离,线越短,相似性越高。
- 概率分布表示相似性:
- t-SNE使用一种基于概率的方式来表示这种相似性。概率分布的峰值位于距离最近的点附近,而远离该点的地方概率较低。这在图的右下方用一个高斯分布曲线来表示。
但是,我们要先进行归一化,不然就会出现以下结果:
我们直观来看上图其实相似度不一样,这是因为没有做归一化之前高维数据点之间的关系与在低维空间中关系不一样
计算后我们会发现这两个相似度是一样的:
-
计算相似性得分:
- 在 t-SNE 中,初始相似性得分是基于数据点之间的距离计算得出的。图中展示了两个示例:
- 上半部分:两个红色交叉点分别代表相对于某个数据点(如黑色点)计算出的相似性得分,分别为 0.24 和 0.05。
- 下半部分:两个新的红色交叉点代表另一个数据点(如黑色点)与两个紫色点之间的相似性得分,分别为 0.12 和 0.024。
- 在 t-SNE 中,初始相似性得分是基于数据点之间的距离计算得出的。图中展示了两个示例:
-
归一化过程:
-
为了将相似性得分转换为概率分布,所有的相似性得分需要进行归一化处理,使得它们的总和为 1。这种归一化确保了相似性得分可以被理解为概率。
-
归一化公式为:
归一化相似性得分 = 相似性得分 / 所有相似性得分的总和
-
上半部分示例:
- 红色交叉点的相似性得分为 0.24 和 0.05,将它们相加得到总和 0.29。
- 归一化后,第一个得分为
0.24 / 0.29 = 0.82
,第二个得分为0.05 / 0.29 = 0.18
。
-
下半部分示例:遵循相同的过程,最终得到类似的归一化概率。
-
-
结果解释:
- 经过归一化处理后,每个数据点之间的相似性得分被转化为概率,这些概率反映了数据点在高维空间中彼此靠近的程度。高概率意味着两个数据点在高维空间中距离更近,更为相似。
二、无监督学习之聚类算法
聚类算法是一种无监督学习算法,主要用于将数据集中的样本根据相似性或某种度量标准分成若干组(称为“簇”),使得同一簇内的样本之间的相似度最大化,而不同簇之间的样本相似度最小化。聚类算法常用于数据探索、模式识别、图像处理、客户分群等场景。
1.常见的聚类算法
-
K-means聚类:通过迭代的方法将样本分配到K个簇中,每个簇由一个质心(中心点)代表。算法不断调整质心的位置和样本的分配,直到达到某种收敛条件。
-
层次聚类:通过构建层次结构(树形结构)来进行聚类,包括自底向上(凝聚层次聚类)和自顶向下(分裂层次聚类)两种方法。
-
DBSCAN(基于密度的聚类): 通过密度的概念,将数据点划分为密度相连的区域,可以发现任意形状的簇并自动识别噪声点。
-
Gaussian Mixture Models(高斯混合模型):假设数据由若干个高斯分布组成,通过最大期望算法估计每个样本属于某个簇的概率。
2.聚类算法的应用
聚类算法的主要作用在于帮助我们从未标注的数据中发现内在的结构和模式。例如,在市场营销中,可以根据客户的购买行为将客户分成不同的群体,以便进行精准的营销策略;在图像处理领域,可以将图像的像素点分成不同的区域,实现图像分割。
3.聚类算法与降维算法的区别
-
目的不同:
- 聚类算法的目的是将数据集分组,揭示数据内部的结构。
- 降维算法的目的是将高维数据映射到低维空间,以简化数据的表示,同时保留数据的主要特征和结构。
-
处理方式不同:
- 聚类算法是通过度量数据点之间的相似性来进行分组,通常不改变数据的维度。
- 降维算法则通过变换数据的维度,使得数据在低维空间中得到更简单的表示,常用的降维方法包括主成分分析(PCA)、线性判别分析(LDA)等。
-
输出结果不同:
- 聚类算法输出的是数据点所属的簇(或类别)。
- 降维算法输出的是降维后的数据点在新空间中的坐标。
总结来说,聚类算法主要用于数据的分组和模式发现,而降维算法则用于数据的简化和可视化。在实际应用中,这两种算法可以结合使用,例如,先通过降维算法将高维数据降维,然后再进行聚类分析,以提高聚类效果和可解释性。
4.K-means聚类
- 第一个例子
上图展示了K均值(K-means)聚类算法的执行过程。K均值是一种迭代优化算法,其目的是将数据集分成K个簇,使得每个簇内的数据点尽可能接近,簇与簇之间尽可能远离。
-
输入数据(Input Data):
- 首先,我们有一个数据集(图中白色的点),这个数据集将被分成三个簇(K=3)。
-
初始化(Initialization):
- 算法随机选择K个点作为初始簇的中心(图中三角形表示),每个三角形代表一个簇的质心。这里选出了三个初始质心。
-
分配点(Assign Points (1)):
- 每个数据点根据与这些质心的距离被分配到离它最近的质心所在的簇。不同颜色的点表示它们被分配到了不同的簇中(绿色、红色、蓝色)。
-
重新计算中心(Recompute Centers (1)):
- 重新计算每个簇的质心,即将每个簇内的所有数据点的平均位置计算出来,得到新的质心位置(新三角形)。
-
重新分配点(Reassign Points (2)):
- 再次将每个数据点分配到离它最近的新的质心所在的簇。部分数据点可能会改变所属的簇。
-
重复以上步骤:
- 图中显示了进一步的迭代过程,每一次重新计算质心后,再次分配点。这个过程不断重复,直到簇中心不再发生变化,或者达到预设的迭代次数。
-
最终结果(Recompute Centers (3)):
- 当质心的位置不再变化时,算法收敛,聚类过程结束。最终的簇分配如图所示。
- 来看下面这个例子
这里涉及到一个距离计算:
距离计算满足以下四点:
非负性(Non-negativity):
- 对于任意两个点 (x_i) 和 (x_j),距离 ( dist(x_i,x_j)=0) 总是大于或等于零,即
dist ( x i , x j ) ≥ 0 \text{dist}(x_i, x_j) \geq 0 dist(xi,xj)≥0
- 这意味着距离不能是负数。
同一性(Identity of Indiscernibles):
- 当且仅当 (x_i = x_j) 时,距离
dist ( x i , x j ) = 0 \text{dist}(x_i, x_j) = 0 dist(xi,xj)=0
- 如果两个点是相同的(即它们的位置相同),那么它们之间的距离为零;反之,如果距离为零,那么这两个点一定是相同的。
对称性(Symmetry):
- 对于任意两个点 (x_i) 和 (x_j),它们之间的距离具有对称性,即
dist ( x i , x j ) = dist ( x j , x i ) \text{dist}(x_i, x_j) = \text{dist}(x_j, x_i) dist(xi,xj)=dist(xj,xi)
- 这意味着从 (x_i) 到 (x_j) 的距离与从 (x_j) 到 (x_i) 的距离是相同的。
三角不等式(Triangle Inequality):
- 对于任意三个点 (x_i), (x_j), 和 (x_k),它们之间的距离满足三角不等式,即:
dist ( x i , x j ) ≤ dist ( x i , x k ) + dist ( x k , x j ) \text{dist}(x_i, x_j) \leq \text{dist}(x_i, x_k) + \text{dist}(x_k, x_j) dist(xi,xj)≤dist(xi,xk)+dist(xk,xj)
- 这意味着在一个三角形中,一边的长度总是小于或等于另外两边长度之和。这个性质确保了距离的合理性。
另外还有一个非距离度量,如下图:
(1) 常用距离计算
距离计算是数据分析、机器学习、聚类算法等领域中的基本工具,用于度量数据点之间的相似性或差异性。常用的距离计算方法有多种, 适用于不同的数据类型和应用场景。以下是一些常见的距离计算方法:
- 欧氏距离(Euclidean Distance)
欧氏距离是最常用的距离度量方法,用于计算两个点在多维空间中的“直线距离”。给定两个点 ($ x_i = (x_{i1}, x_{i2}, \dots, x_{in})$ ) 和 ( $x_j = (x_{j1}, x_{j2}, \dots, x_{jn}) $),欧氏距离定义为:
dist ( x i , x j ) = ∑ k = 1 n ( x i k − x j k ) 2 \text{dist}(x_i, x_j) = \sqrt{\sum_{k=1}^{n} (x_{ik} - x_{jk})^2} dist(xi,xj)=k=1∑n(xik−xjk)2
欧氏距离直接反映了两个点在几何空间中的物理距离,适合用在连续型数值数据的场景中。
- 曼哈顿距离(Manhattan Distance)
曼哈顿距离(也称为城市街区距离或绝对值距离)计算的是两个点在坐标系中的水平和垂直距离之和。其定义为:
dist ( x i , x j ) = ∑ k = 1 n ∣ x i k − x j k ∣ \text{dist}(x_i, x_j) = \sum_{k=1}^{n} |x_{ik} - x_{jk}| dist(xi,xj)=k=1∑n∣xik−xjk∣
曼哈顿距离适用于一些需要计算“走网格路径”而非“直线距离”的场景,如在城市道路网格上测量距离。
- 切比雪夫距离(Chebyshev Distance)
切比雪夫距离是指两个点在任意一个维度上的最大距离,用于衡量在所有维度上单独的最大差异。其定义为:
dist ( x i , x j ) = max k = 1 n ∣ x i k − x j k ∣ \text{dist}(x_i, x_j) = \max_{k=1}^{n} |x_{ik} - x_{jk}| dist(xi,xj)=k=1maxn∣xik−xjk∣
切比雪夫距离适合在所有维度具有相同重要性的情况。
- 闵可夫斯基距离(Minkowski Distance)
闵可夫斯基距离是欧氏距离和曼哈顿距离的推广形式。其定义为:
dist ( x i , x j ) = ( ∑ k = 1 n ∣ x i k − x j k ∣ p ) 1 / p \text{dist}(x_i, x_j) = \left( \sum_{k=1}^{n} |x_{ik} - x_{jk}|^p \right)^{1/p} dist(xi,xj)=(k=1∑n∣xik−xjk∣p)1/p
其中 ( p ) 是一个参数,当 ( p = 1 ) 时,闵可夫斯基距离等于曼哈顿距离;当 ( p = 2 ) 时,等于欧氏距离。p为无穷时,即为切比雪夫距离
- 余弦相似度(Cosine Similarity)
余弦相似度不是一个距离度量,而是一种衡量两个向量之间夹角的相似性度量。其定义为:
sim ( x i , x j ) = x i ⋅ x j ∥ x i ∥ × ∥ x j ∥ \text{sim}(x_i, x_j) = \frac{x_i \cdot x_j}{\|x_i\| \times \|x_j\|} sim(xi,xj)=∥xi∥×∥xj∥xi⋅xj
余弦相似度的取值范围为[-1, 1],值越接近1表示两个向量越相似,值越接近-1表示两个向量越不相似。它通常用于文本相似性分析、推荐系统中。
- 汉明距离(Hamming Distance)
汉明距离用于计算两个等长字符串之间对应位置不同的字符数量。其定义为:
dist ( x i , x j ) = ∑ k = 1 n I ( x i k ≠ x j k ) \text{dist}(x_i, x_j) = \sum_{k=1}^{n} \text{I}(x_{ik} \neq x_{jk}) dist(xi,xj)=k=1∑nI(xik=xjk)
其中,( I \text{I} I) 是指示函数,当 ( $x_{ik} \neq x_{jk} KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 时,\(\text{I}(x_{ik} \neq x_{jk}) = 1$),否则为0。汉明距离广泛应用于编码理论、基因序列比较等领域。
(2) 应用场景与总结
- 聚类分析:使用欧氏距离或曼哈顿距离来衡量数据点之间的相似性,从而将相似的数据点分配到同一簇中。
- 推荐系统:余弦相似度常用于计算用户或物品之间的相似性,以提供个性化推荐。
- 文本分析:在自然语言处理任务中,余弦相似度常用于比较文本的相似性。
- 编码和通信:汉明距离用于检测和纠正错误编码。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,特别适用于发现任意形状的簇,并且能够自动识别噪声数据点。DBSCAN主要通过考察数据点的邻域密度来决定是否将其归入某一簇。
5.DBSCAN密度聚类
(1) 基本概念
- 基于密度聚类,此类算法假设聚类结构能通过样本分布的紧密程度确定
- 密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果
-
ε-邻域(Epsilon Neighborhood, ( ε \varepsilon ε )):
- 对于数据集中的一个点 ( p ),ε-邻域是指以点 ( p ) 为中心、半径为 (
ε
\varepsilon
ε ) 的所有数据点的集合。用数学形式表示为:
N ε ( p ) = { q ∈ D ∣ dist ( p , q ) ≤ ε } N_{\varepsilon}(p) = \{q \in D \mid \text{dist}(p, q) \leq \varepsilon \} Nε(p)={q∈D∣dist(p,q)≤ε}
其中,( D ) 是数据集,( dist ( p , q ) \text{dist}(p, q) dist(p,q)) 是点 ( p ) 和点 ( q ) 之间的距离。
- 对于数据集中的一个点 ( p ),ε-邻域是指以点 ( p ) 为中心、半径为 (
ε
\varepsilon
ε ) 的所有数据点的集合。用数学形式表示为:
-
核心点(Core Point):
- 如果一个点的ε-邻域中至少包含MinPts个数据点(包括点自己),则这个点称为核心点。核心点是形成簇的关键点。
-
边界点(Border Point):
- 边界点本身的ε-邻域内的点数不足MinPts,但它位于某个核心点的ε-邻域内。因此,它可以归属于某一个簇。
-
噪声点(Noise Point):
- 噪声点既不是核心点,也不是边界点。它无法归入任何簇,是被孤立的点。
- 密度直达(Directly Density-Reachable)
密度直达是DBSCAN中最基础的概念。一个点 ( x_j ) 若位于点 ( x_i ) 的 ( ε \varepsilon ε )邻域中,且 ( x_i ) 是核心点,则称 ( x_j ) 由 ( x_i ) 密度直达。换句话说,点 ( x_i ) 的 ( ε \varepsilon ε )-邻域内有足够多的点(至少 MinPts 个),使得它是一个核心点,同时 ( x_j ) 在这个邻域范围内。
- 密度可达(Density-Reachable)
密度可达的概念基于密度直达。对于两个点 ( x_i ) 和 ( x_j ),如果存在一个点序列 ($ p_1, p_2, \dots, p_n$ ),其中 ($ p_1 = x_i $) 且 ( $p_n = x_j KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲,并且对于序列中的每一个相邻点… p_i$ ) 和 ( p i + 1 p_{i+1} pi+1 ),( p i + 1 p_{i+1} pi+1 ) 由 ( p i p_i pi ) 密度直达,那么就称 ( $x_j $) 由 ( x i x_i xi ) 密度可达。这意味着可以通过一系列密度直达的点逐步连接到 ( x_j )。
- 密度相连(Density-Connected)
密度相连是一个更广泛的概念。对于两个点 ( x_i ) 和 ( x_j ),如果存在一个点 ( x_k ),使得 ( x_i ) 和 ( x_j ) 均由 ( x_k ) 密度可达,那么就称 ( x_i ) 和 ( x_j ) 密度相连。这意味着即使 ( x_i ) 和 ( x_j ) 之间没有直接的密度直达关系,只要它们能通过第三个点 ( x_k ) 连接起来,它们就被认为是相连的。
性质总结
- 密度直达关系:通常不满足对称性,即如果 ( x_j ) 由 ( x_i ) 密度直达,反之不一定成立。
- 密度可达关系:满足传递性,但不满足对称性。
- 密度相连关系:满足对称性,即如果 ( x_i ) 与 ( x_j ) 密度相连,则 ( x_j ) 也与 ( x_i ) 密度相连。
(2) DBSCAN算法的步骤
-
初始化:
- 随机选择一个未被访问过的点 ( p )。
-
检查邻域:
- 查找点 ( p ) 的ε-邻域。如果邻域内的点数不小于MinPts,则将点 ( p ) 标记为核心点,并将其邻域内的所有点纳入同一簇。否则,将 ( p ) 标记为噪声点,但它可能在后续过程中被重新归类为边界点。
-
扩展簇:
- 对于被标记为核心点的点,继续检查其ε-邻域内的点。如果这些点中有未被访问过的点,则将它们纳入当前簇中。重复此过程,直到不能再扩展为止。
-
处理剩余点:
- 对数据集中剩下的未被访问过的点重复上述步骤,直到所有点都被访问过为止。
-
输出簇:
- 当所有点都被访问过后,算法结束,所有簇以及噪声点都被标记完毕。
(3) 例子
- 数据集:以表9.1的西瓜数据集4.0为例。
- 算法参数:
- 邻域参数 ($ \varepsilon$ = 0.11 )
- 最小点数 ( MinPts = 5 )
<1>步骤1:确定核心对象集
-
DBSCAN算法首先找出各样本的 ( ε \varepsilon ε )-邻域并确定核心对象集。
-
符合条件的样本集合 ($ \Omega$ ) 为:
Ω = { x 3 , x 5 , x 6 , x 8 , x 9 , x 13 , x 14 , x 18 , x 19 , x 24 , x 25 , x 28 , x 29 } \Omega = \{x_3, x_5, x_6, x_8, x_9, x_{13}, x_{14}, x_{18}, x_{19}, x_{24}, x_{25}, x_{28}, x_{29}\} Ω={x3,x5,x6,x8,x9,x13,x14,x18,x19,x24,x25,x28,x29}
<2>步骤2:选择核心对象并扩展簇
-
随机从核心对象集 ($ \Omega$ ) 中选择一个核心点作为种子,然后寻找由其密度可达的所有样本,构成第一个聚类簇 ( C 1 C_1 C1 )。
-
假设选择了核心对象 ( $x_8 $) 作为种子,则第一个聚类簇 ( C 1 C_1 C1 ) 为:
C 1 = { x 6 , x 7 , x 8 , x 10 , x 12 , x 18 , x 19 , x 20 , x 23 } C_1 = \{x_6, x_7, x_8, x_{10}, x_{12}, x_{18}, x_{19}, x_{20}, x_{23}\} C1={x6,x7,x8,x10,x12,x18,x19,x20,x23}
<3>步骤3:更新核心对象集并寻找下一簇
-
DBSCAN将 ( C 1 C_1 C1 ) 中包含的核心对象从 ( Ω \Omega Ω ) 中去除,更新后的核心对象集为:
Ω = Ω ∖ C 1 = { x 3 , x 5 , x 9 , x 13 , x 14 , x 24 , x 25 , x 28 , x 29 } \Omega = \Omega \setminus C_1 = \{x_3, x_5, x_9, x_{13}, x_{14}, x_{24}, x_{25}, x_{28}, x_{29}\} Ω=Ω∖C1={x3,x5,x9,x13,x14,x24,x25,x28,x29}
-
从更新后的集合 ( Ω \Omega Ω ) 中随机选择一个核心对象作为种子,生成下一个聚类簇。
-
重复以上步骤,直到 ( $\Omega $) 为空,所有的簇都已生成。
(4) DBSCAN的优点
- 自动识别噪声点:DBSCAN能够自动识别并标记数据集中的噪声点,而不将其误归类为某个簇。
- 发现任意形状的簇:DBSCAN能够发现任意形状的簇,适用于非球形的数据分布。
- 无需事先确定簇的数量:与K均值不同,DBSCAN不需要提前指定簇的数量。
(5) DBSCAN的缺点
- 参数敏感:DBSCAN对 ( ε \varepsilon ε ) 和 MinPts 这两个参数较为敏感,不同的数据集需要仔细选择这两个参数的值。
- 对不同密度簇的处理:当簇的密度差异较大时,DBSCAN可能无法很好地处理,因为固定的 ( ε \varepsilon ε ) 可能无法适用于所有簇。
(6)DBSCAN的应用场景
- 地理空间数据分析:如检测聚集区域、识别异常点等。
- 图像处理:如图像分割、物体检测。
- 社交网络分析:如社区检测、热点区域识别。
6.层次聚类
层次聚类(Hierarchical Clustering)是一种将数据逐步合并或分裂的聚类方法,通过构建层次结构来对数据进行聚类。层次聚类不需要预先指定簇的数量,而是通过一个树状结构(称为树状图,dendrogram)来展示数据的聚类过程。
(1) 层次聚类的两种主要方法
-
凝聚层次聚类(Agglomerative Hierarchical Clustering):
- 自下而上的方法。开始时,每个数据点被视为一个独立的簇,算法逐步将距离最近的两个簇合并,直到所有数据点被合并成一个簇,或者达到预定的簇数量为止。
- 凝聚层次聚类的主要步骤:
- 计算所有数据点之间的距离矩阵。
- 将距离最近的两个簇合并为一个新的簇。
- 更新距离矩阵,重新计算新簇与其他簇之间的距离。
- 重复步骤2和3,直到所有数据点被合并成一个簇,或者达到预定的簇数量为止。
-
分裂层次聚类(Divisive Hierarchical Clustering):
- 自上而下的方法。开始时,所有数据点被视为一个整体簇,算法逐步将这个簇分裂成更小的簇,直到每个数据点成为一个单独的簇,或者达到预定的簇数量为止。
- 分裂层次聚类的主要步骤:
- 将所有数据点看作一个簇。
- 选择一个簇进行分裂,通常是选择最不紧密的簇。
- 将选择的簇分裂为两个子簇。
- 重复步骤2和3,直到每个数据点成为一个单独的簇,或者达到预定的簇数量为止。
(2) 距离的计算方法
在层次聚类中,簇之间的距离可以通过不同的方式计算,这会影响最终的聚类结果。常见的距离计算方法有:
-
最短距离(单链接,Single Linkage):
- 定义为两个簇中最近的两个数据点之间的距离。
dist ( A , B ) = min { dist ( x , y ) ∣ x ∈ A , y ∈ B } \text{dist}(A, B) = \min \{ \text{dist}(x, y) \mid x \in A, y \in B \} dist(A,B)=min{dist(x,y)∣x∈A,y∈B}
-
最长距离(全链接,Complete Linkage):
- 定义为两个簇中最远的两个数据点之间的距离。
dist ( A , B ) = max { dist ( x , y ) ∣ x ∈ A , y ∈ B } \text{dist}(A, B) = \max \{ \text{dist}(x, y) \mid x \in A, y \in B \} dist(A,B)=max{dist(x,y)∣x∈A,y∈B}
-
平均距离(平均链接,Average Linkage):
- 定义为两个簇中所有数据点之间的平均距离。
dist ( A , B ) = 1 ∣ A ∣ ⋅ ∣ B ∣ ∑ x ∈ A ∑ y ∈ B dist ( x , y ) \text{dist}(A, B) = \frac{1}{|A| \cdot |B|} \sum_{x \in A} \sum_{y \in B} \text{dist}(x, y) dist(A,B)=∣A∣⋅∣B∣1x∈A∑y∈B∑dist(x,y)
-
质心距离(Centroid Linkage):
- 定义为两个簇的质心之间的距离。
dist ( A , B ) = dist ( centroid ( A ) , centroid ( B ) ) \text{dist}(A, B) = \text{dist}(\text{centroid}(A), \text{centroid}(B)) dist(A,B)=dist(centroid(A),centroid(B))
(3) 层次聚类的优点
- 无需指定簇的数量:层次聚类不需要预先确定要生成的簇的数量,这在某些情况下是一个优势。
- 可解释性强:通过树状图,可以直观地看到聚类的过程和簇之间的关系。
(4) 层次聚类的缺点
- 计算复杂度高:层次聚类的计算复杂度较高,尤其是在处理大规模数据集时。
- 难以修正错误的合并或分裂:一旦两个簇被合并或分裂,无法再进行调整,这意味着早期的错误决策可能会影响最终结果。
(5)应用场景
- 生物信息学:层次聚类常用于基因表达数据的分析,帮助科学家理解基因之间的关系。
- 市场细分:在市场营销中,层次聚类用于细分客户群体,找出相似的客户群体。
- 图像处理:用于图像分割,将图像中的像素分割成不同的区域。
高斯混合模型(Gaussian Mixture Model, GMM)是一种基于概率模型的聚类方法。它假设数据是由多个高斯分布(也称为正态分布)混合而成的,因此每个簇可以看作是一个高斯分布。GMM在处理复杂的、非球形的簇时具有很强的灵活性。
7.高斯混合模型聚类
(1) 高斯混合模型的基本概念
-
混合模型:
- 在GMM中,数据点的分布被建模为多个高斯分布的加权和。每个高斯分布对应一个簇,模型中的每个数据点都由这些分布中的一个或多个生成。
-
高斯分布:
- 对于一个 (d) 维数据点 (x),高斯分布的概率密度函数表示为:
N ( x ∣ μ , Σ ) = 1 ( 2 π ) d / 2 ∣ Σ ∣ 1 / 2 exp ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) \mathcal{N}(x \mid \mu, \Sigma) = \frac{1}{(2\pi)^{d/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(x - \mu)^\top \Sigma^{-1}(x - \mu)\right) N(x∣μ,Σ)=(2π)d/2∣Σ∣1/21exp(−21(x−μ)⊤Σ−1(x−μ))
其中,( μ \mu μ ) 是均值向量,($ \Sigma$ ) 是协方差矩阵。
- 对于一个 (d) 维数据点 (x),高斯分布的概率密度函数表示为:
-
混合系数:
- 每个高斯分布都有一个对应的权重或混合系数 ($ \pi_k$ ),它表示每个高斯成分在整个数据集中所占的比例。这些系数满足:
∑ k = 1 K π k = 1 , π k ≥ 0 \sum_{k=1}^{K} \pi_k = 1, \quad \pi_k \geq 0 k=1∑Kπk=1,πk≥0
其中 ( K ) 是高斯分布的数量(即簇的数量)。
- 每个高斯分布都有一个对应的权重或混合系数 ($ \pi_k$ ),它表示每个高斯成分在整个数据集中所占的比例。这些系数满足:
(2) GMM的工作原理
GMM的目标是通过最大化似然估计(Maximum Likelihood Estimation, MLE)来估计模型参数,包括每个高斯分布的均值向量 ($ \mu_k$ )、协方差矩阵 ( Σ k \Sigma_k Σk )、以及混合系数 ( π k \pi_k πk )。
期望最大化(Expectation-Maximization, EM)算法 是用于估计这些参数的主要方法:
-
初始化:
- 随机初始化高斯分布的均值、协方差矩阵和混合系数。
-
期望步骤(E-Step):
- 对于每个数据点,计算其属于每个高斯成分的概率。这一步的输出是后验概率,即数据点 (
x
i
x_i
xi ) 属于第 ( k ) 个高斯分布的概率:
γ i k = π k N ( x i ∣ μ k , Σ k ) ∑ j = 1 K π j N ( x i ∣ μ j , Σ j ) \gamma_{ik} = \frac{\pi_k \mathcal{N}(x_i \mid \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_i \mid \mu_j, \Sigma_j)} γik=∑j=1KπjN(xi∣μj,Σj)πkN(xi∣μk,Σk)
其中,( γ i k \gamma_{ik} γik ) 是数据点 ( x i x_i xi ) 属于第 ( k ) 个簇的责任(responsibility)。
- 对于每个数据点,计算其属于每个高斯成分的概率。这一步的输出是后验概率,即数据点 (
x
i
x_i
xi ) 属于第 ( k ) 个高斯分布的概率:
-
最大化步骤(M-Step):
- 根据期望步骤计算出的责任,更新高斯分布的参数:
- 更新均值向量:
μ k = ∑ i = 1 N γ i k x i ∑ i = 1 N γ i k \mu_k = \frac{\sum_{i=1}^{N} \gamma_{ik} x_i}{\sum_{i=1}^{N} \gamma_{ik}} μk=∑i=1Nγik∑i=1Nγikxi - 更新协方差矩阵:
Σ k = ∑ i = 1 N γ i k ( x i − μ k ) ( x i − μ k ) ⊤ ∑ i = 1 N γ i k \Sigma_k = \frac{\sum_{i=1}^{N} \gamma_{ik} (x_i - \mu_k)(x_i - \mu_k)^\top}{\sum_{i=1}^{N} \gamma_{ik}} Σk=∑i=1Nγik∑i=1Nγik(xi−μk)(xi−μk)⊤ - 更新混合系数:
π k = ∑ i = 1 N γ i k N \pi_k = \frac{\sum_{i=1}^{N} \gamma_{ik}}{N} πk=N∑i=1Nγik
其中,( N ) 是数据点的总数。
- 更新均值向量:
- 根据期望步骤计算出的责任,更新高斯分布的参数:
-
重复:
- 不断交替进行期望步骤和最大化步骤,直到参数收敛,即参数的变化值小于某个预设的阈值。
(3) GMM的优点
- 灵活性:GMM可以处理不同形状和不同大小的簇,因为每个簇的形状由其协方差矩阵决定。
- 软聚类:GMM是一种软聚类方法,每个数据点属于每个簇的概率不同,而不是硬聚类中的非此即彼。
- 适用性广泛:GMM不仅适用于聚类,还可以用于密度估计、数据生成等任务。
(4) GMM的缺点
- 初始化敏感:EM算法对初始参数非常敏感,可能会陷入局部最优解。
- 计算复杂度高:GMM的计算复杂度较高,尤其是当数据维度和簇的数量较大时,计算协方差矩阵和逆矩阵的代价很高。
- 模型选择:需要预先指定簇的数量 ( K ),在实际应用中通常需要通过交叉验证或其他模型选择方法来确定最佳的 ( K )。
(5) 应用场景
- 图像分割:GMM常用于图像分割任务中,通过颜色分布的混合来分割不同的图像区域。
- 模式识别:在语音识别、手写字符识别等领域,GMM被广泛用于建模复杂的概率分布。
- 数据生成:GMM可以用来生成模拟数据,因为其能够逼近任意的概率密度分布。
(6) 总结
高斯混合模型推导极其复杂,听的我快晕了,总结一下所有参数
在高斯混合模型(Gaussian Mixture Model, GMM)中,以下是主要参数及其作用的解释:
-
( K ) - 簇的数量(Number of Clusters)
- 作用:GMM假设数据由 ( K ) 个高斯分布混合而成,( K ) 是需要预先设定的参数,表示模型中高斯分布的数量,也就是簇的数量。
- 用途:指定模型将数据划分成多少个簇。GMM会根据这个参数估计出 ( K ) 个高斯分布的参数。
-
($ \pi_k$ ) - 混合系数(Mixing Coefficient)
- 作用:表示第 ( k ) 个高斯分布在整个模型中所占的权重。混合系数满足:
∑ k = 1 K π k = 1 , π k ≥ 0 \sum_{k=1}^{K} \pi_k = 1, \quad \pi_k \geq 0 k=1∑Kπk=1,πk≥0 - 用途:确定每个高斯分布对整体模型的贡献度,影响每个簇的大小和占比。
- 作用:表示第 ( k ) 个高斯分布在整个模型中所占的权重。混合系数满足:
-
( μ k \mu_k μk ) - 均值向量(Mean Vector)
- 作用:表示第 ( k ) 个高斯分布的均值向量,定义了该簇的中心位置。
μ k = ( μ k 1 , μ k 2 , … , μ k d ) \mu_k = (\mu_{k1}, \mu_{k2}, \dots, \mu_{kd}) μk=(μk1,μk2,…,μkd)
其中,( d ) 是数据的维度。 - 用途:决定第 ( k ) 个簇在空间中的位置,影响数据点聚集的中心。
- 作用:表示第 ( k ) 个高斯分布的均值向量,定义了该簇的中心位置。
-
( Σ k \Sigma_k Σk ) - 协方差矩阵(Covariance Matrix)
- 作用:表示第 ( k ) 个高斯分布的协方差矩阵,定义了该簇的形状和范围。协方差矩阵描述了每个簇在各个方向上的扩展程度和形状。
Σ k = ( σ 11 σ 12 ⋯ σ 1 d σ 21 σ 22 ⋯ σ 2 d ⋮ ⋮ ⋱ ⋮ σ d 1 σ d 2 ⋯ σ d d ) \Sigma_k = \begin{pmatrix} \sigma_{11} & \sigma_{12} & \cdots & \sigma_{1d} \\ \sigma_{21} & \sigma_{22} & \cdots & \sigma_{2d} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{d1} & \sigma_{d2} & \cdots & \sigma_{dd} \end{pmatrix} Σk= σ11σ21⋮σd1σ12σ22⋮σd2⋯⋯⋱⋯σ1dσ2d⋮σdd - 用途:影响簇的形状和大小。如果协方差矩阵是对角矩阵,簇的形状为椭球;如果协方差矩阵是单位矩阵,簇的形状为圆形。
- 作用:表示第 ( k ) 个高斯分布的协方差矩阵,定义了该簇的形状和范围。协方差矩阵描述了每个簇在各个方向上的扩展程度和形状。
-
( γ i k \gamma_{ik} γik ) - 责任(Responsibility)
- 作用:表示数据点 ( $x_i KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 属于第 \( k \) 个高… x_i$ ) 的“责任”大小。
γ i k = P ( z i = k ∣ x i ) = π k N ( x i ∣ μ k , Σ k ) ∑ j = 1 K π j N ( x i ∣ μ j , Σ j ) \gamma_{ik} = P(z_i = k \mid x_i) = \frac{\pi_k \mathcal{N}(x_i \mid \mu_k, \Sigma_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(x_i \mid \mu_j, \Sigma_j)} γik=P(zi=k∣xi)=∑j=1KπjN(xi∣μj,Σj)πkN(xi∣μk,Σk) - 用途:用于在EM算法中更新模型参数,帮助确定每个数据点更倾向于属于哪个簇。
- 作用:表示数据点 ( $x_i KaTeX parse error: Can't use function '\)' in math mode at position 1: \̲)̲ 属于第 \( k \) 个高… x_i$ ) 的“责任”大小。
-
( N ( x ∣ μ k , Σ k \mathcal{N}(x \mid \mu_k, \Sigma_k N(x∣μk,Σk) ) - 高斯分布的概率密度函数(Probability Density Function of Gaussian Distribution)
- 作用:表示数据点 ( x ) 在第 ( k ) 个高斯分布中的概率密度。具体公式为:
N ( x ∣ μ k , Σ k ) = 1 ( 2 π ) d / 2 ∣ Σ k ∣ 1 / 2 exp ( − 1 2 ( x − μ k ) ⊤ Σ k − 1 ( x − μ k ) ) \mathcal{N}(x \mid \mu_k, \Sigma_k) = \frac{1}{(2\pi)^{d/2}|\Sigma_k|^{1/2}} \exp\left(-\frac{1}{2}(x - \mu_k)^\top \Sigma_k^{-1}(x - \mu_k)\right) N(x∣μk,Σk)=(2π)d/2∣Σk∣1/21exp(−21(x−μk)⊤Σk−1(x−μk)) - 用途:用于计算数据点 ( x ) 属于某个簇的概率,在E-Step中用来计算责任 ( γ i k \gamma_{ik} γik )。
- 作用:表示数据点 ( x ) 在第 ( k ) 个高斯分布中的概率密度。具体公式为:
-
似然函数(Likelihood Function)
- 作用:表示整个数据集在当前模型参数下的概率,用于衡量模型的好坏。通过最大化似然函数来优化模型参数。
L ( Θ ∣ X ) = ∏ i = 1 N ∑ k = 1 K π k N ( x i ∣ μ k , Σ k ) L(\Theta \mid X) = \prod_{i=1}^{N} \sum_{k=1}^{K} \pi_k \mathcal{N}(x_i \mid \mu_k, \Sigma_k) L(Θ∣X)=i=1∏Nk=1∑KπkN(xi∣μk,Σk)
其中 ( Θ = { π k , μ k , Σ k } \Theta = \{\pi_k, \mu_k, \Sigma_k\} Θ={πk,μk,Σk} ) 是模型的参数集,( N ) 是数据点的总数。 - 用途:EM算法中通过最大化该函数来调整模型参数,使得模型更好地拟合数据。
- 作用:表示整个数据集在当前模型参数下的概率,用于衡量模型的好坏。通过最大化似然函数来优化模型参数。
8.聚类算法性能度量
聚类算法的性能度量是用于评估聚类结果质量的指标。由于聚类是一种无监督学习方法,评估其性能可能不像分类问题那样直接。因此,聚类算法的性能度量通常分为内部度量、外部度量和相对度量。
(1) 内部度量(Internal Measures)
内部度量不依赖于任何外部信息或标签,只根据聚类结果和数据的内在结构来评估聚类的质量,而不利用任何参考模型,常见的内部度量包括:
<1> 簇内距离(Within-Cluster Distance)
-
定义:簇内距离度量的是簇内数据点之间的紧密程度。通常是簇内所有点到簇中心(质心)的平均距离或最大距离。
-
目标:簇内距离越小,表示聚类结果越好,因为簇内的数据点越紧密。
公式:
WCSS = ∑ k = 1 K ∑ x ∈ C k dist ( x , μ k ) 2 \text{WCSS} = \sum_{k=1}^{K} \sum_{x \in C_k} \text{dist}(x, \mu_k)^2 WCSS=k=1∑Kx∈Ck∑dist(x,μk)2
其中 ( C k C_k Ck ) 是第 ( k ) 个簇,( μ k \mu_k μk ) 是簇 ( C k C_k Ck ) 的质心。
<2> 簇间距离(Between-Cluster Distance)
-
定义:簇间距离度量的是不同簇之间的分离程度,通常是簇之间的质心距离。
-
目标:簇间距离越大,表示不同簇之间的分离度越高,聚类结果越好。
公式:
BCS = ∑ k = 1 K ∑ l = 1 , l ≠ k K dist ( μ k , μ l ) \text{BCS} = \sum_{k=1}^{K} \sum_{l=1, l\neq k}^{K} \text{dist}(\mu_k, \mu_l) BCS=k=1∑Kl=1,l=k∑Kdist(μk,μl)
其中 ( μ k \mu_k μk ) 和 ($ \mu_l$ ) 是簇 ( C k C_k Ck ) 和 ($ C_l$ ) 的质心。
<3> 轮廓系数(Silhouette Coefficient)
- 定义:轮廓系数综合了簇内距离和簇间距离来度量聚类效果。对于每个数据点 ( i ),计算该点到其所属簇内其他点的平均距离 ( a(i) ),以及该点到最近簇的平均距离 ( b(i) )。
- 公式:
s ( i ) = b ( i ) − a ( i ) max ( a ( i ) , b ( i ) ) s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))} s(i)=max(a(i),b(i))b(i)−a(i) - 目标:轮廓系数的值介于[-1, 1]之间。值越接近1,表示聚类效果越好;接近0表示点在边界上;负值表示点被错误分类。
(2) 外部度量(External Measures)
外部度量依赖于外部标签,即在聚类前已知的数据点的真实类别标签。这些度量通过比较聚类结果与真实标签来评估聚类的性能。常见的外部度量包括:
<1> 混淆矩阵(Confusion Matrix)
- 定义:通过比较聚类结果和真实标签的对应关系来生成的矩阵,反映聚类结果的正确性。
- 目标:混淆矩阵越“对角化”,表示聚类结果越好。
<2> 纯度(Purity)
- 定义:对于每个簇,确定其中最多的真实类别所占的比例。纯度是这些最大比例的平均值。
- 公式:
Purity = 1 N ∑ k = 1 K max j ∣ C k ∩ T j ∣ \text{Purity} = \frac{1}{N} \sum_{k=1}^{K} \max_j |C_k \cap T_j| Purity=N1k=1∑Kjmax∣Ck∩Tj∣
其中 ( ∣ C k ∩ T j ∣ |C_k \cap T_j| ∣Ck∩Tj∣ ) 是簇 ( C k C_k Ck ) 中属于真实类别 ( T j T_j Tj ) 的点的数量,( N ) 是总样本数。 - 目标:纯度越高,表示聚类结果越好。
<3> 调整互信息(Adjusted Mutual Information, AMI)
- 定义:AMI度量了聚类结果与真实标签之间的信息共享量,消除了随机性带来的影响。
- 公式:
AMI = M I ( C , T ) − E [ M I ( C , T ) ] max ( H ( C ) , H ( T ) ) − E [ M I ( C , T ) ] \text{AMI} = \frac{MI(C, T) - E[MI(C, T)]}{\max(H(C), H(T)) - E[MI(C, T)]} AMI=max(H(C),H(T))−E[MI(C,T)]MI(C,T)−E[MI(C,T)]
其中 ( MI(C, T) ) 是聚类结果和真实标签之间的互信息,( H© ) 和 ( H(T) ) 分别是聚类结果和真实标签的熵。 - 目标:AMI值越高表示聚类结果越好。
(3) 相对度量(Relative Measures)
相对度量用于比较不同聚类算法或同一算法的不同参数设置的优劣。相对度量通常依赖于某种性能指标,如轮廓系数、SSE等,通过这些指标的值来比较不同聚类结果的好坏。
<1> SSE(Sum of Squared Errors)
- 定义:SSE是簇内平方误差之和,即数据点到其对应簇质心的欧氏距离的平方和。
- 目标:SSE越小,表示簇内点越接近质心,聚类效果越好。通常用于选择最佳簇数量。
(4) 数据集固有特性对度量的影响
- 数据的维度和分布:高维数据或非均匀分布的数据可能会影响某些度量的有效性。
- 簇的形状和大小:不同簇的形状(如球形或非球形)和大小(如密度不同)会影响聚类算法的性能度量。
。
<2> 纯度(Purity)
- 定义:对于每个簇,确定其中最多的真实类别所占的比例。纯度是这些最大比例的平均值。
- 公式:
Purity = 1 N ∑ k = 1 K max j ∣ C k ∩ T j ∣ \text{Purity} = \frac{1}{N} \sum_{k=1}^{K} \max_j |C_k \cap T_j| Purity=N1k=1∑Kjmax∣Ck∩Tj∣
其中 ( ∣ C k ∩ T j ∣ |C_k \cap T_j| ∣Ck∩Tj∣ ) 是簇 ( C k C_k Ck ) 中属于真实类别 ( T j T_j Tj ) 的点的数量,( N ) 是总样本数。 - 目标:纯度越高,表示聚类结果越好。
<3> 调整互信息(Adjusted Mutual Information, AMI)
- 定义:AMI度量了聚类结果与真实标签之间的信息共享量,消除了随机性带来的影响。
- 公式:
AMI = M I ( C , T ) − E [ M I ( C , T ) ] max ( H ( C ) , H ( T ) ) − E [ M I ( C , T ) ] \text{AMI} = \frac{MI(C, T) - E[MI(C, T)]}{\max(H(C), H(T)) - E[MI(C, T)]} AMI=max(H(C),H(T))−E[MI(C,T)]MI(C,T)−E[MI(C,T)]
其中 ( MI(C, T) ) 是聚类结果和真实标签之间的互信息,( H© ) 和 ( H(T) ) 分别是聚类结果和真实标签的熵。 - 目标:AMI值越高表示聚类结果越好。
(3) 相对度量(Relative Measures)
相对度量用于比较不同聚类算法或同一算法的不同参数设置的优劣。相对度量通常依赖于某种性能指标,如轮廓系数、SSE等,通过这些指标的值来比较不同聚类结果的好坏。
<1> SSE(Sum of Squared Errors)
- 定义:SSE是簇内平方误差之和,即数据点到其对应簇质心的欧氏距离的平方和。
- 目标:SSE越小,表示簇内点越接近质心,聚类效果越好。通常用于选择最佳簇数量。
(4) 数据集固有特性对度量的影响
- 数据的维度和分布:高维数据或非均匀分布的数据可能会影响某些度量的有效性。
- 簇的形状和大小:不同簇的形状(如球形或非球形)和大小(如密度不同)会影响聚类算法的性能度量。