数据爆炸标签稀缺?无监督学习成救星,python实现聚类超神

发布时间:2026/6/30 22:27:15
数据爆炸标签稀缺?无监督学习成救星,python实现聚类超神 从K-Means到PCA一篇讲透无监督学习的核心算法引言为什么你需要关注无监督学习处于工业4.0的时代当中, 数据每日都在凭借着令人惊讶的速率增长着。可是呢, 实际状况通常是这样子的现象: 数据堆积得像山一样多, 然而标签却仅仅非常少的数量。要去获取标注的数据, 这是需要投入大量的人工成本以及时间的, 而这在好多场景里基本上是没办法做到的。而这里恰恰就是无监督学习能够充分发挥作用的所在之处。无监督学习, 按其字面意思理解, 是在不存在任何标签的情形下, 单单凭借数据自身所具有的内在结构去寻觅规律, 它好似一名侦探, 面对那一堆杂乱无章的线索, 并非需要任何人告知其真相究竟是什么, 而是借助线索之间的关联自行推导出模式。以市场细分起始, 直至图像分割, 由异常检测延展到基因分析, 毫无监督性质的学习正以不易察觉的态势改变着各个行业的运作模式。2026年开展的一项研究表明, 鉴于的无监督异常检测模型USAGI在MVTec AD数据集上的AUROC达到了98.2%, 于VisA数据集上更是比例高达99.5%, 呈现出颇为惊人的性能表现。这充分说明, 无监督学习不但处于“可行”的界限范围之内, 而且正朝着“卓越”的方向迈进。本文章, 将会引领你, 以系统的方式, 去掌握无监督学习的两大核心领域, 即聚类以及降维。我们会深入探究K-Means、层次聚类以及SVD和PCA的数学原理, 并且结合最新的应用案例, 还有完整的代码实战, 使得你不但“知其然”, 而且更“知其所以然”。一、聚类——让数据“物以类聚”1.1 什么是聚类一句话概括聚类的核心思想, 那就是: 物以类聚, 人以群分。它尝试把数据集中的样本划分成若干个“簇”, 要让同一簇内的对象相互间相似, 不同簇间的对象差异显著。因为聚类算法不需要预先标注的标签, 它完全依靠数据自身的内在结构以及特征来进行分组。聚类结果所代表的“概念”与“语义”得靠使用者加以把握和命名, 这也是无监督学习中“无监督”二字的意义之所在。实现聚类, 通常涵盖三个核心步骤, 其一为, 定义相似性, 也就是要选择一个恰当的度量标准, 像欧氏距离、余弦相似度等等, 以此来衡量对象之间的距离其二是分组, 依据相似性, 把对象分配到不同的簇当中其三是优化, 借助迭代或者直接计算的方式, 去调整簇的划分, 从而最大化簇内相似性以及簇间差异性。依据其核心思想, 聚类算法能够大体被划分成以下这三类, 则是, 聚类算法的三大流派。流派代表算法核心思想适用场景划分式K-Means、K-将数据划分为K个互斥的簇数据量大、簇形状近似球形层次式聚合聚类、分裂聚类构建簇的层次树状结构需要探索不同粒度的聚类结果密度式、将高密度区域视为簇簇形状不规则、存在噪声数据1.2 K-Means聚类简洁而强大的划分式方法基于一个朴素想法的K-Means, 可能是最广为人知的聚类算法, 这个想法是每个簇应当有一个“中心点”, 并且数据点应当归属于离它最近的那个“中心点”。1数学原理K-Means的关键要点在于使样本与它所归属的簇中心之间的距离平方和达到最小化, 以此作为核心内容:你提供的内容似乎是重复的数学公式, 不太明确具体期望的改写方向, 请你明确一下需求, 以便我按照要求准确改写。当中, $\bar{x}_l$为第$l$个簇之中心。此乃一个组合优化问题, n个样本分到k个簇的全部可能分法数目是:这个数目呈现为指数级, 于现实里没法穷举, 所以一般运用迭代近似求解。2算法流程K-Means的执行过程可以用一个简单的循环概括初始化, 随机挑选k个样本点当作初始簇中心, 分配, 计算每一个样本到各个簇中心的距离, 把样本分到最近的簇, 更新, 再次计算每个簇内全部样本的均值, 作为新的簇中心, 重复执行步骤2 - 3, 直至簇中心不再变动或者达到迭代上限, 3K值的确定, ——肘部法则。K-Means最为突出的痛点当中的一个便是得要预先指定K值, 怎样去找出最优的K值呢, 肘部法则也就是Elbow是最为常用的办法当中的一个, 它借助绘制不同K值所对应的簇内平方和也就是WCSS, 即Sum of曲线, 寻觅“肘部点”, 也就是WCSS下降速度明显减缓的地方, 肘部法在学术研究以及工业实践里都被广泛运用, 比如在K-means-集成分类方法中, 研究者正是运用肘部法来确定最优的聚类数量。4K-Means的局限与改进K-Means虽然简单高效但也有着明显的短板1.3 层次聚类构建数据的家族谱系层次聚类并不要求去指定K值, 而是去构建一个簇的那种“家谱树”, 将其称作树状图, 它主要是分为两种方式, 。层次聚类得出的结果是以树状图那种形式来呈现的, 纵轴所表示的是簇间的距离。借助于在不同的高度对这棵树进行“横切”, 我们能够获取到不同粒度的聚类的结果。这样的多层级结构在生物信息学里是特别常见的——对于基因表达数据所做的层次聚类能够同时去展示物种的大类门类以及具体物种科属的关系。在2025年的时候, 层次聚类技术取得了那般令人振奋不已的突破, 研究者提出来了 -based Using LLMs for, 它是一个把分层K-Means跟大语言模型进行深度集成的包, 借助递归运用K-Means去构建簇的层次结构, 还利用LLM以为每一层的簇生成语义丰富的标题以及描述, 极大地增强了聚类结果的可解释性。详尽来讲, 它具备两种模式, 其一为直接模式, 此模式是基于原始数据嵌入或者数值特征来开展聚类活动另一种是描述模式, 该模式是基于由LLM生成的摘要的嵌入来进行聚类。并且, 用户能够借助提供相关内容的方式, 去引导LLM的摘要生成方向。1.4 密度驱动的聚类革命倘若数据点分布状况呈现出不规则形态, 又或者存有大量噪声, 那么K-Means以及层次聚类或许会显得力不从心, 无法有效应对。在这种情形之下, 基于稠密程度的聚类算法便能够充分展现优势, 发挥出显著作用。1核心概念中心思想为是, 呈现着这样的状况, 簇是经由高密度区域构建而成的情形, 且这类区域是被低密度区域给予分隔开来的状态, 它还引入了一些关键概念, 有。2算法流程于$\$以及找出全部核心对象那儿, 从任意一个核心对象起始, 找出经由其密度能够达到的所有样本, 从而形成一个簇状结构, 重复下面这个步骤, 直至所有核心对象都被访问完毕, 尚未归属到任何簇状结构里的样本被标作噪声点, 3的优势之处与改进情况也一并如此这般。显而易见具有这样的优势: 无需对K值进行指定, 能够将任意形状的簇给发现出来, 还可以自动对噪声点实施识别, 然而, 它并非毫无瑕疵, 该算法对于那两个参数以及$\$极为敏感, 并且在针对不同密度区域加以处理时, 所呈现的效果不太理想。有关这些问题, 研究者们给出了诸多改进方案, 2025年, 一项研究给出了基于改进的道路障碍物点云聚类方法, 借助孤立核函数改进传统的距离度量办法, 大大提升对不同密度区域的适应性与准确性, 同年, NaGB - 算法通过融合自然邻居与颗粒球 - Ball的概念, 切实解决了参数调优艰难的问题, 另外, 有研究者运用多智能体强化学习给出了AR - 框架, 达成了对聚类参数的动态自适应调节。二、聚类效果如何评估没法像监督学习那样去计算准确率或者F1分数, 因为聚类任务并没有预定义的标签当做参考, 还有, 聚类的评估是必须要完全依赖于数据本身的内部结构的, 以下是几种最常用的评估方法。2.1 轮廓系数 轮廓系数把簇内的紧密度也就是内聚度以及簇间的分离度都考虑进去。针对每个样本点$i$。单个样本的轮廓系数为si等于bi减去ai, 其中ai是ai与bi中的较大值, 属于si, 而si是ai与bi中的较大值, 且bi减去ai也属于。全部$ s_i$的平均值是总体轮廓系数, 常常选取平均轮廓系数最大限度的K值当作最佳聚类数。轮廓系数于实际运用里也经常跟肘部法则一块运用, 肘部法则借助找寻WCSS曲线拐点来确定K值范围, 转而轮廓系数在其中挑选出最优解。2.2 肘部法则与WCSSWCSS, 也就是簇内平方和, 所衡量的乃是, 所有样本点至其所属簇中心的, 总距离平方之和。伴着K值增大, WCSS会渐渐减小。肘部法则是用来寻觅WCSS下降速度明显放缓的那个点, 也就是“肘部”点, 这个点通常被视作最佳的K值。2.3 CH指数- IndexCH指数综合考虑了簇间分散度和簇内紧密度其计算公式为CH等于BCSS除以(K减去1), 等于WCSS除以(N减去K), CH等于WCSS除以(N减去K), 则等于BCSS除以(K减去1)。这当中, BCSS乃是簇间平方和, WCSS则是簇内平方和。CH指数越大, 意谓着簇间距离越大、簇内距离越小, 进而聚类效果越好。需要留意的是, CH指数在业界也存在实际应用——比如说在客户细分研究里, 当研究者通过FAMD of Mixed Data方法结合K-Means以及层次聚类来进行客户细分时, 便运用了涵盖CH指数在内的多种指标用以评估聚类质量。2.4 聚类评估代码实战import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.datasets import make_blobs from sklearn.metrics import silhouette_score, calinski_harabasz_score plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 生成3个簇的样本数据增加标准差使数据有一定重叠 X, y_true make_blobs(n_samples300, centers3, cluster_std5) # K-Means聚类 kmeans KMeans(n_clusters3) kmeans.fit(X) y_kmeans kmeans.predict(X) centers kmeans.cluster_centers_ # 可视化 plt.scatter(X[:, 0], X[:, 1], s50, cy_kmeans, cmapviridis) plt.scatter(centers[:, 0], centers[:, 1], s200, cred, marker*, label簇中心) plt.legend() plt.show() # 输出评估指标 print(簇内平方和: , kmeans.inertia_) print(轮廓系数: , silhouette_score(X, y_kmeans)) print(CH指数: , calinski_harabasz_score(X, y_kmeans))三、降维——化繁为简的数据压缩术将机器学习跟数据分析放置其中的情况下, 高维数据通常会致使“维度灾难”出现, 这表现为数据变得极为稀疏, 并且计算复杂度呈现指数级增长态势, 同时模型容易出现过拟合现象。降维技术随之诞生, 其目的在于借助更少的特征去捕获数据的主要信息。3.1 奇异值分解SVD——矩阵分解的基石奇异值分解, 也就是Value, 或者说SVD, 它属于一种通用的矩阵分解方法。SVD其理论基础在于, 任何一个实矩阵能够被分解成三个矩阵的乘积, 这三个矩阵分别是:AUΣVTAUΣVTSVD的一项关键性质是, 留存住最为大的那r个奇异值以及跟它们相对应的奇异向量, 能够获取到原始矩阵的最优的低秩近似, 这一性质致使SVD变成数据压缩以及降维的强有力工具。SVD的计算过程传统上SVD可以通过以下步骤计算求解$A^TA$的特征值以及特征向量, 从而得出$V$和$\Sigma$, 凭借$u_j \frac{1}{\} A v_j$来计算左奇异向量, 再补充额外的正交向量进而构造完整的$U$矩阵。下面拿矩阵$A \begin{} 1 1 \ 2 2 \end{}$当作例子, 来演示一下计算的过程, 是这么做的:最终经过分解得出, $A$等于$U\Sigma V^T$。然而, 上面所说的这个过程, 仅仅是为了对计算原理进行说明, 在实际的应用当中, 所使用的是更为高效的数值计算方法。3.2 主成分分析PCA——寻找数据的主方向主成分分析, 也就是PCA, 属于在众多降维手段里最为常用的一种方法, 其目标具备相当直观的特性, 那便是寻觅到数据之中导致方差处于最大状态的方向, 并且运用这些方向以一种全新的方式去表述数据。1核心思想构想一下, 在你眼前存在着一片处于三维空间里的点云, 这些点云集可能大致依照一定规律分布于一个平面之上。主成分分析所要达成的就是去寻觅出这个“平面”的指向情形, 随后把所有的相关点都投射映照到这个平面之中。如此一来, 我们便采用了两个维度也就是该平面的两个基础向量去替换掉原本所具有的三个维度。更进一步来讲, PCA借助正交变换, 把原本兴许具有线性相关性的原始特征转变为一组互不相关的新特征称作主成分。主成分依据方差大小进行排列, 首个主成分捕获的数据中变异程度最大的方向, 第二个主成分于和首个主成分正交的方向上捕获变异程度次高的方向, 依此延续下去。2数据预处理参与PCA以前, 有一个相当关键的步骤, 那便是数据标准化。这是由于PCA对于方差敏感, 要是不同特征的量纲差异极为显著, 像是一个特征以“米”作为单位, 但另一个是以“厘米”作为单位, PCA就会错误地把量纲大的特征当作主要变异来源。一般的做法是把每个特征规范成均值是0、方差为1。3PCA的数学原理传统PCA通过协方差矩阵的特征值分解来实现SXXTXn−1SXn−1XTX其中, $X$是经过标准化处理后的样本矩阵, 每一列代表一个特征, 每一行代表一个样本。通过特征值分解$S_X V\ V^T$所得到的特征向量$V$, 就是主成分的方向, 特征值$\$用以衡量第$i$个主成分所解释的方差大小。4用SVD实现PCA现代PCA的实现, 通常是采用SVD的方式, 而不是直接去进行特征值分解, 原因主要有三个。在数学范畴之内能够予以验证, 把经过标准化操作之后的样本矩阵$X$实施SVD分解, 也就是$X U\Sigma V^T$, 接着代入到协方差公式之中, 此乃:这恰恰是协方差矩阵以特征值分解的形式呈现, 在这里, $V$的列向量是主成分方向, 并且特征值等于$\frac{\^2}{n - 1}$。每个主成分的方差贡献率为σi2∑i1pσi2∑i1pσi2σi2这般比例助力我们去定夺要留存多少个主成分, 一般而言会挑选那累计贡献率抵达百分之八十五至百分之九十五的前$r$个主成分。5PCA的代码实现import numpy as np import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.datasets import load_iris from sklearn.preprocessing import StandardScaler # 加载数据 iris load_iris() X iris.data y iris.target # 标准化PCA前必须做的预处理 scaler StandardScaler() X_scaled scaler.fit_transform(X) # 执行PCA降维到2维 pca PCA(n_components2) X_pca pca.fit_transform(X_scaled) # 查看解释方差比例 print(各主成分解释方差比例:, pca.explained_variance_ratio_) print(累计解释方差比例:, np.cumsum(pca.explained_variance_ratio_)) # 可视化 plt.figure(figsize(8, 6)) colors [red, green, blue] for i, color in enumerate(colors): plt.scatter(X_pca[y i, 0], X_pca[y i, 1], colorcolor, labeliris.target_names[i]) plt.xlabel(第一主成分) plt.ylabel(第二主成分) plt.title(PCA降维后的Iris数据集) plt.legend() plt.show()6PCA的最新应用PCA可不只是一个所谓“过时的老方法”, 2025年开始PCA其在多个领域内这应用持续不断地在深入发展。四、实战案例——从理论到应用4.1 客户细分在市场营销里头, 客户细分属于应用最为广泛的无监督学习场景, 电商平台期望去了解用户的消费行为模式, 进而制定出差异化的营销策略 ,凭藉K-Means聚类, 能够依据用户的消费频率、消费金额、品类偏好等特征, 把用户划分成几个典型的客户群体。在2025年开展的研究展现, 将因子分析混合数据FAMD予以结合, 搭配K-Means以及层次聚类的方式, 能够于客户细分里取得更高质量的聚类成果, 进而为企业提供更为精准的客户画像。典型应用流程收集来自用户的消费记录, 以及浏览行为、基本信息这类数据, 接着予以数据清洗操持, 随后开展特征工程工作, 构建起用户画像特征, 运用肘部法则将最优K值确定下来, 实施K-Means聚类, 从而获取用户分组, 对每个簇的诸多特征加以分析, 进而赋予其商业含义, 诸如“高价值用户”、“流失风险用户”等, 4.2 图像分割。图像分割, 乃是把图像划分成若干具备意义的区域的进程。在2025年的时候, 无监督图像分割获得了具有突破性的进展。4.3 异常检测于工业质检领域, 于金融风控领域, 于网络安全等领域之中, 异常检测具备着重要的应用价值。在二零二五年到二零二六年这样的时间段内, 无监督异常检测技术持续不断地刷新性能记录:五、总结审视全篇内容, 无监督学习所具备的价值已然清晰明了, 无需多言。于当下这个数据量持续迅猛增长, 且标注所需成本始终处于高位难以下降的时代背景之下, 无监督学习为我们开辟出了一条能够从海量数据之中自行探寻到知识的切实可行的途径。核心要点速记算法核心公式优点缺点K-Means简单高效需指定K对初始值敏感层次聚类树状图无需K值多粒度结果计算复杂度高密度可达/相连任意形状抗噪声参数敏感PCA/SVD$X U\Sigma V^T$降维保信息线性假设轮廓系数综合评估内聚与分离计算复杂度O(n²)肘部法WCSS vs K曲线拐点直观易用肘部点可能不明显聚类算法的选择, 在极大程度上取决于数据的特点, 若数据呈球形分布, 并且计算效率是首要被考虑的因素, 那么K-Means是首选, 若存在需要探索不同粒度的层次关系的情况, 层次聚类是不可或缺的, 若数据形状不规则, 或者存在大量噪声, 那它就是不二之选, 而在面对高维数据的时候, PCA和SVD则是最好的“信息浓缩”工具。伴随大语言模型兴起, 无监督学习正迎来全新范式, 把LLM的语义理解能力融入层次聚类, 给聚类结果赋予了前所未有的可解释性, USAGI把架构引入异常检测, 刷新了多个基准数据集的最佳成绩, 能够预见, 无监督学习会在数据科学以及人工智能领域发挥愈发重要的作用。希求这一篇文章, 得以助你构建起对于无监督学习核心算法的完备认知。要是你对某一个算法仍然存有疑问, 欢迎于评论区留言展开讨论