40 KiB
第十四章
机器学习(Machine Learning)领域中,监督学习和非监督学习是两种最基础且核心的范式。简单来说,它们的本质区别在于训练数据中是否包含“答案”。
1. 什么是监督学习(Supervised Learning)?
监督学习好比一名学生在老师的指导下学习。老师给学生一套练习题,并且每道题都附带了标准答案。学生通过观察题目特征(特征向量 $x$)和答案(标签 $y$)之间的对应关系,总结出规律。
-
核心目标:建立一个从输入到输出的映射函数 $f(x) \rightarrow y$。
-
常见任务:
-
回归(Regression):预测连续数值,如房价预测、股票价格走势。
-
分类(Classification):预测离散类别,如垃圾邮件检测(是/否)、图像识别(猫/狗)。
-
-
典型算法:线性回归、逻辑回归、支持向量机(SVM)、决策树、随机森林、神经网络。
2. 什么是非监督学习(Unsupervised Learning)?
非监督学习则更像是一个孩子在没有老师指导的情况下自行探索世界。给出的数据只有题目(特征 $x$),没有答案(没有标签 $y$)。模型需要自己去发现数据内部隐藏的结构或模式。
-
核心目标:发现数据的内在结构、分布或相似性。
-
常见任务:
-
聚类(Clustering):根据相似性将数据分组,如客户细分、新闻聚合。
-
降维(Dimensionality Reduction):简化数据特征,去除冗余信息,如 PCA(主成分分析)。
-
关联规则(Association Rule):发现数据间的潜在规则,如超市里“买了尿布的人通常也会买啤酒”。
-
-
典型算法:K-means 聚类、层次聚类、PCA、自编码器(Autoencoders)。
3. 两者的区别与联系
核心区别
| 维度 | 监督学习 | 非监督学习 |
|---|---|---|
| 数据标签 | 有标签(Labeled Data) | 无标签(Unlabeled Data) |
| 反馈机制 | 直接反馈(有标准答案对比) | 无反馈(仅寻找模式) |
| 预测能力 | 强,能预测未来数据的类别或值 | 弱,主要用于描述和探索现有数据 |
| 复杂度 | 较高(数据标注成本昂贵) | 较低(直接使用原始数据) |
两者的联系
-
相辅相成:在实际应用中,两者经常结合使用。例如,先通过非监督学习(聚类)对海量未标记数据进行预处理或异常检测,然后再利用监督学习进行精确分类。
-
目标一致:无论是哪种方式,其终极目标都是为了让计算机通过算法从数据中获取知识,提高处理任务的自动化程度。
-
技术交织:深度学习中的许多结构(如生成对抗网络 GANs)会同时包含监督和非监督的思想。此外,还衍生出了半监督学习(只有少量标注数据)等中间形态。
总结:
如果你已经知道想要寻找的特定结果(比如预测是否违约),选监督学习;如果你只是拿到一堆混乱的数据,想看看里面有什么规律或族群,选非监督学习。
关联规则(Association Rules)是非监督学习中非常有意思的一个分支,它不像聚类那样为了“分类”,而是为了“找关系”。最经典的案例就是沃尔玛发现的“啤酒与尿布”的故事:通过分析购物篮数据,发现买尿布的人大概率也会买啤酒。
1. 核心概念:如何衡量“规则”?
假设我们有一堆交易数据,每条交易包含若干商品。要确定“如果买了 A,那么也会买 B”($A \rightarrow B$)这个规则是否有价值,通常看三个核心指标:
-
支持度(Support):
-
定义:商品 A 和 B 同时出现在所有交易中的概率。
-
公式:
Support(A \rightarrow B) = P(A \cup B) -
意义:衡量这个规则的普适性。如果支持度太低,说明这个组合很少见,没必要研究。
-
-
置信度(Confidence):
-
定义:在已经买了 A 的前提下,买 B 的概率。
-
公式:
Confidence(A \rightarrow B) = P(B|A) = \frac{Support(A \cup B)}{Support(A)} -
意义:衡量规则的可靠性。
-
-
提升度(Lift):
-
定义:含有 A 条件下出现 B 的概率,与不考虑 A 时 B 出现概率的比值。
-
公式:
Lift(A \rightarrow B) = \frac{Confidence(A \rightarrow B)}{Support(B)} -
意义:
-
$Lift > 1$:A 对 B 有正向促进作用(强关联)。
-
$Lift = 1$:A 和 B 相互独立。
-
$Lift < 1$:A 甚至排斥 B。
-
-
2. Apriori 算法:寻找频繁项集的经典
Apriori 算法的名字源于它利用了“先验知识”(Prior knowledge)。它的核心任务是找到频繁项集(满足最小支持度阈值的商品组合)。
核心原理:Apriori 定理
-
性质 1:如果一个项集是频繁的,那么它的所有子集也一定是频繁的。
-
性质 2(逆反):如果一个项集是非频繁的,那么它的所有超集(包含它的组合)也一定是非频繁的。
这个定理极大地减少了搜索空间。比如,如果我们发现“可乐”本身买的人就极少(不频繁),那我们根本不需要去计算“可乐+汉堡”或者“可乐+薯条”的频率了,直接剪枝。
算法步骤
-
扫描数据:计算单个物品的支持度,剔除不达标的,得到频繁 1-项集。
-
连接与剪枝:将上一步的频繁项集两两组合,生成候选集,并利用 Apriori 性质剔除不可能频繁的项。
-
循环迭代:重复上述过程,直到无法生成更高阶的频繁项集。
-
产生规则:从频繁项集中提取满足最小置信度的关联规则。
3. Apriori 的优缺点
-
优点:
-
逻辑简单直观,易于理解。
-
利用剪枝技术,避免了对所有可能组合的盲目计算。
-
-
缺点:
-
性能瓶颈:每产生一次频繁项集都要全表扫描数据库。如果数据量巨大或商品种类极多,I/O 开销非常恐怖。
-
候选项过多:当频繁项集很大时(比如包含 100 个物品),产生的子集数量是天文数字。
-
4. 算法演进:FP-Growth
为了解决 Apriori 频繁扫描数据库的问题,后来业界提出了 FP-Growth (Frequent Pattern Growth) 算法:
-
核心改进:它只扫描两次数据库。
-
原理:它将数据压缩成一棵 FP 树(Frequent Pattern Tree),然后通过递归地在树上搜索来挖掘频繁项。它不需要生成候选集,速度通常比 Apriori 快两个数量级。
5. 应用场景
除了“超市购物篮分析”,关联规则还广泛用于:
-
个性化推荐:在电商网站,“买了此商品的顾客还买了...”。
-
网络安全:分析攻击行为的关联模式(比如登录失败后紧跟扫描行为)。
-
生物信息学:寻找基因序列之间的关联关系。
-
软件工程:分析哪些代码模块经常被同时修改,辅助重构。
聚类分析(Clustering Analysis)是非监督学习中最具代表性的技术。它的目标是将数据集划分为若干个组(簇),使得同一簇内的数据点高度相似,而不同簇间的数据点尽可能不同。
1. 基础:相似性度量与邻接矩阵
在聚类之前,我们必须量化“两个点有多像”。
-
相似性(Similarity)与不相似性(Dissimilarity):
-
不相似性通常用距离表示。最常见的是 欧氏距离(Euclidean Distance),公式为 $d(x, y) = \sqrt{\sum (x_i - y_i)^2}$。此外还有曼哈顿距离、切比雪夫距离等。
-
相似性通常用相关系数或余弦相似度表示,取值范围通常在
[0, 1]或 $[-1, 1]$。
-
-
邻接矩阵 / 接近矩阵(Proximity Matrix):
- 这是一个
n \times n的对称矩阵,其中第i行第j列的元素表示第i个样本与第j个样本之间的距离或相似度。它是许多聚类算法(尤其是层次聚类)的输入基础。
- 这是一个
2. 基于原型的聚类:K-means 与 K-medoids
这类算法假设每个簇都有一个“中心”。
K-means(K-均值)
-
核心逻辑:以均值(质心)作为簇中心。
-
流程:随机选
K个中心\rightarrow将每个点分配给最近的中心\rightarrow重新计算每个簇的均值作为新中心\rightarrow迭代直到中心不再变化。 -
优点:速度极快,适合大规模数据。
-
缺点:对异常值非常敏感(一个极值就能把均值拉跑);只能处理球形簇;需要预先指定 $K$。
K-medoids(K-中心点)
-
核心逻辑:强制要求簇中心必须是原始数据集中的某个点(称为 Medoid)。
-
优点:对异常值更鲁棒(健壮),因为它不计算均值,而是寻找中值。
-
缺点:计算复杂度比 K-means 高,适合中小型数据集。
3. 向量量化(Vector Quantization, VQ)
向量量化实际上是聚类在信号处理和数据压缩中的应用。
-
原理:将高维连续向量映射到有限个“码向量”(Codevector)的过程。
-
联系:K-means 实际上就是寻找最优码书(Codebook)的过程。通过用簇中心的索引代替原始数据,可以实现极高比例的损耗压缩。
4. 层次聚类(Hierarchical Clustering)
层次聚类通过构建一个树状结构(Dendrogram)来表示数据间的关系。
合并聚类(Agglomerative / 系统聚类)
这是最常用的“自底向上”方法:
-
起步:每个点自成一簇。
-
合并:计算两两簇之间的距离,合并最近的两个簇。
-
循环:重复直到达到预设簇数或所有点合为一簇。
组合算法(Linkage Method):决定“簇与簇之间距离”的计算方式:
-
最短距离法(Single Linkage):取两个簇中最近两点的距离。易产生“链状效应”。
-
最长距离法(Complete Linkage):取两个簇中最远两点的距离。结果通常比较紧凑。
-
平均距离法(Average Linkage):取所有点对距离的平均值。
-
离差平方和法(Ward's Method):合并后使簇内方差增加最小,效果通常最好。
分裂聚类(Divisive)
- “自顶向下”:初始将所有点视为一簇,然后递归地将其分裂。计算量极大,实际应用较少。
5. 其他聚类方式概览
-
基于密度的聚类(DBSCAN):
-
通过寻找被低密度区域分隔的高密度区域来发现簇。
-
优点:可以发现任意形状的簇(不限于球形),且能自动识别噪声点(异常值)。
-
-
基于网格的聚类(STING):
- 将空间划分为网格单元,在网格级别处理数据,速度极快。
-
基于模型的聚类(GMM - 高斯混合模型):
- 假设数据是由多个高斯分布混合生成的,通过 EM 算法估计参数。这属于概率聚类。
总结比较
| 算法 | 类型 | 优点 | 缺点 |
|---|---|---|---|
| K-means | 划分式 | 简单、高效、适合大数据 | 需预设 $K$,对异常值敏感 |
| K-medoids | 划分式 | 鲁棒性强,处理异常值好 | 速度较慢 |
| 合并聚类 | 层次式 | 聚类关系一目了然,不需预设 K |
复杂度高 $O(n^3)$,不可回溯 |
| DBSCAN | 密度式 | 可识别噪声,发现异形簇 | 对密度差异大的数据效果差 |
在实际操作中,通常会先通过 层次聚类 观察谱系图来确定合适的 K 值,然后再用 K-means 进行大规模运算。
在聚类分析的理论框架中,根据构建簇(Cluster)的数学逻辑和模型假设,我们通常将算法归纳为组合算法、混合模型和模式寻找三大类。这三者代表了从“经验主义”到“概率统计”再到“几何特征”的不同视角。
1. 组合算法 (Combinatorial Algorithms)
组合算法不假设数据背后存在任何概率分布,而是直接在离散的组合空间中寻找最优的数据划分。
-
核心逻辑:将
N个观测值分配到K个簇中,目标是最小化某种“损失函数”(通常是簇内不相似度之和)。 -
数学表达:
目标通常是最小化如下平方误差:
W(C) = \frac{1}{2} \sum_{k=1}^{K} \sum_{i \in C_k} \sum_{j \in C_k} d(x_i, x_j) -
代表算法:
-
K-means:最典型的组合优化,通过迭代将点分配给最近的质心。
-
层次聚类 (Hierarchical Clustering):通过合并或分裂的组合策略构建树状结构。
-
-
特点:
-
优点:计算直观,不依赖复杂的概率假设,工程实现简单。
-
缺点:这是一个 NP-Hard 问题,算法(如 K-means)通常只能找到局部最优解,且对
K的选择和初始点非常敏感。
-
2. 混合模型 (Mixture Models)
混合模型属于概率聚类。它假设观测数据是由若干个潜在的概率分布(通常是高斯分布)混合生成的。
-
核心逻辑:每个簇对应一个概率密度函数,一个样本点属于某个簇的概率由该分布决定。这是一种“软聚类”(Soft Clustering),即一个点可以以 0.7 的概率属于 A 簇,0.3 的概率属于 B 簇。
-
数学表达:
数据的总概率密度表示为各成分的加权和:
f(x) = \sum_{k=1}^{K} \pi_k P(x|\theta_k)其中
\pi_k是混合权重,\theta_k是第k个分布的参数(如均值和方差)。 -
代表算法:
-
高斯混合模型 (GMM):假设每个簇都服从高斯分布。
-
EM 算法 (Expectation-Maximization):用于求解模型参数的标准迭代程序。
-
-
特点:
-
优点:数学基础严谨,能够提供隶属概率,可以处理簇大小不一、形状重叠的情况。
-
缺点:计算开销比 K-means 大;如果实际数据不符合预设的分布(如不是高斯分布),效果会大打折扣。
-
3. 模式寻找 (Mode Seeking / Density-based)
模式寻找算法(也称基于密度的聚类)从几何和拓扑的角度看待聚类。它认为簇是特征空间中密度较高的区域,而被低密度区域(噪声)所分隔。
-
核心逻辑:聚类的中心被定义为概率密度函数的局部最大值(波峰/模式)。算法会沿着密度的梯度方向寻找这些波峰。
-
代表算法:
-
Mean Shift (均值漂移):一种非参数估计方法,通过不断将中心点移向高密度区域来定位波峰。
-
DBSCAN:虽然通常被归类为密度聚类,但其核心思想也是连接高密度模式区域。
-
-
特点:
-
优点:
-
无需预设 K:它能根据数据密度自动发现簇的数量。
-
形状无关:可以发现任何奇形怪状的簇(如环形、S型)。
-
鲁棒性:能天然地识别并剔除离群点(噪声)。
-
-
缺点:在高维数据下由于“维度灾难”,密度估计会变得非常不准;对密度不均匀的数据集处理效果较差。
-
总结对比
| 类别 | 视角 | 划分性质 | 对 K 的依赖 | 典型场景 |
|---|---|---|---|---|
| 组合算法 | 距离/能量最小化 | 硬划分 (0或1) | 必须预设 | 大规模快速处理,球形簇 |
| 混合模型 | 概率统计生成 | 软划分 (概率) | 需预设 | 需要确定置信度,数据重叠 |
| 模式寻找 | 几何密度/拓扑 | 硬划分/噪声识别 | 自动发现 | 形状复杂的数据,包含噪声 |
这三种类别并不是互斥的。例如,如果你在处理底层的系统指标监控或者复杂的信号分析,可能会先用模式寻找来剔除异常,再用混合模型进行精细化刻画。
你目前是在做相关的算法实现,还是在准备课程考试呢?
聚类在现实生活中的应用非常广泛,它本质上是在给混乱的信息找秩序。
1. 常见的聚类例子
-
电商客户画像:根据购买频次、消费金额、浏览偏好,将用户分为“高价值忠实客户”、“潜在流失客户”、“价格敏感型客户”等,从而进行精准营销。
-
新闻自动分组:像 Google News 这样的平台,每天抓取数百万篇报道。它通过聚类将讨论“同一个事件”的稿件合在一起,形成一个新闻专题。
-
生物信息学:在基因芯片实验中,将表达模式相似的基因聚在一起,从而推测未知基因的功能或参与的生物学过程。
-
图像分割:在计算机视觉中,将像素点根据颜色、亮度或纹理聚类,从而把前景物体(如一张脸)从背景中分离出来。
-
城市规划:根据人口密度、交通流量和商业设施分布,将城市划分为不同的功能区(居住区、商业区、工业区)。
2. 合并聚类(系统聚类)的树状图演示
合并聚类最直观的产物就是聚类树(Dendrogram)。我们来构造一个简单的例子。
假设场景
我们要对 5 个城市(A, B, C, D, E)进行聚类,假设它们之间的距离矩阵如下(数值越小越近):
| A | B | C | D | E | |
|---|---|---|---|---|---|
| A | 0 | 2 | 7 | 8 | 10 |
| B | 2 | 0 | 6 | 9 | 11 |
| C | 7 | 6 | 0 | 1 | 4 |
| D | 8 | 9 | 1 | 0 | 3 |
| E | 10 | 11 | 4 | 3 | 0 |
合并过程:
-
第一步:找距离最近的一对。C 和 D 距离仅为 1。合并它们,形成簇 (CD)。
-
第二步:剩下的点里,A 和 B 距离为 2。合并它们,形成簇 (AB)。
-
第三步:现在有三个簇:(AB), (CD), E。计算距离发现 (CD) 和 E 最近(假设 D 到 E 距离为 3)。合并它们,形成簇 (CDE)。
-
最后一步:将剩下的两个大簇 (AB) 和 (CDE) 合并。
构造的聚类树:
Plaintext
距离 (Height)
^
10| +-----------------------+
| | |
| +------+-------+ |
5| | | | |
| | | +---+---+ |
| | | | | |
2| +---+---+ | | +---+---+ |
| | | | | | | | | |
1| | | | | | | | | |
+--A---B---+--+---E---C---D---+-------+
[ 簇 1 ] [ 簇 2 ]
怎么看这张图?
-
横轴:代表原始的每一个数据点(城市)。
-
纵轴:代表合并时的距离(不相似度)。
-
如何分类:你可以通过在纵轴上“砍一刀”来决定分几类。
-
如果你在距离 5 的位置横着画一条线,树会被切成两半,你就得到了两个簇:{A, B} 和 {C, D, E}。
-
如果你在距离 1.5 的位置画线,你会得到四个簇:{A}, {B}, {E} 和已经合并的 {C, D}。
-
这种树状结构的魅力在于,它不需要你预先指定 $K$。你可以先画出整棵树,然后根据实际需求(比如经费只够做 3 组实验)来决定在哪里“切一刀”。
你目前是在尝试用代码(比如 Rust 或 Python)实现这种树状图的绘制,还是在推导它的数学逻辑?
自组织映射图(Self-Organizing Map, SOM),也常被称为 Kohonen 网络,是一种非常独特的非监督学习人工神经网络。
如果说 K-means 是在做“分类”,那么 SOM 更像是在做“降维+可视化”。它能够将高维度的复杂数据,映射到低维(通常是二维)的网格上,同时还能保持数据原有的拓扑结构(即:在原始空间离得近的点,在映射后的地图上也离得近)。
1. 核心原理:它是如何工作的?
想象一张由很多神经元组成的“网”(通常是二维正方形或六边形网格),这张网覆盖在你的原始数据点上。
-
竞争机制(Competition):
当输入一个数据样本时,网格上所有的神经元都会计算自己与这个样本的“距离”。距离最近的那个神经元被称为 最佳匹配单元(Best Matching Unit, BMU)。
-
协作机制(Cooperation):
BMU 胜出后,它不仅自己会向这个样本靠近,还会带着它周围的“邻居”神经元一起向样本靠近。
-
学习机制(Adaptation):
随着训练的进行,距离 BMU 越近的邻居挪动幅度越大,越远的越小。最终,整张网会像一层皮肤一样,根据数据的密度和形状分布开来。
2. SOM 的三大特点
-
拓扑保持(Topology Preserving):这是它最迷人的地方。如果你输入的是全球各地的气候数据,SOM 映射出来的二维图上,地理位置相近或气候特征相似的城市会自动靠在一起。
-
非监督性:不需要任何标签,它完全通过自我竞争来发现数据内在的聚类模式。
-
降维与可视化:它能把拥有成百上千个特征的数据,压缩成一张人类一眼就能看懂的“热力图”。
3. 常见的应用举例
A. 颜色聚类(最直观的例子)
如果你给 SOM 输入成千上万种随机的 RGB 颜色(三维数据:R, G, B),经过训练,你会得到一张平滑渐变的彩色地图。你会发现所有的蓝色系被聚在了一角,红色系在另一角,中间是过渡色。
B. 金融风险分析(银行客户评估)
银行有成千上万个客户,每个客户有年收入、信用评分、负债率、消费频率等几十个维度的指标。
-
通过 SOM,银行可以将这些客户映射到一张二维网格图上。
-
图中右上角的区域可能聚集了“高收入、低负债”的优质客户;左下角可能聚集了“频繁逾期”的高风险客户。
-
银行经理只需要看这张“风险地图”,就能直观地发现客户群体的分布和变化。
C. 故障诊断
在大型工厂(如核电站或化工厂)中,传感器产生的监测数据维度极高。
-
SOM 可以学习设备“正常运行”时的参数状态,并在地图上形成一个“正常区域”。
-
当新的监测数据落在了地图上的“异常边缘”或未知区域时,系统就能立刻发出预警,指示设备可能出现了某种特定类型的故障。
D. 语意映射
在语言处理早期,研究者将单词根据其上下文特征输入 SOM,发现含义相近的词(如“苹果”、“香蕉”)在二维地图上会自动聚集在一起,甚至能区分出名词区域和动词区域。
4. SOM 与 K-means 的区别
虽然它们都用于聚类,但侧重点不同:
-
K-means:追求的是“划分”,它给你
K个互不相干的组,组与组之间的逻辑关系(谁离谁更近)并不直观。 -
SOM:追求的是“分布”,它不仅告诉你谁和谁一类,还通过地图展示了不同类别之间的过渡和演变关系。
你可以把 SOM 想象成一张“数据的航海图”,它不只是把岛屿分类,而是把整个海洋的深浅和岛屿的相对位置全部画了出来。
自组织映射(Self-Organizing Map, SOM)的核心在于“竞争学习”。它将高维输入空间中的模式,映射到低维(通常是二维)的离散图形上。
我们可以把这个过程想象成一块“具有弹性的橡皮网”,它试图根据数据点的分布不断拉伸、折叠,直到能够贴合这些点的形状。
1. 算法组成要素
-
输入向量:$V \in \mathbb{R}^n$,即你的原始高维数据。
-
神经元网格:通常是一个二维平面(如 $10 \times 10$),每个格点代表一个神经元。
-
权重向量:每个神经元
j都有一个与输入维度相同的权重向量 $W_j \in \mathbb{R}^n$。- 注意:算法的目标就是不断更新这些 $W_j$,使其代表数据的特征。
2. 详细算法步骤
第一步:初始化
-
随机初始化所有神经元的权重向量 $W_j$。
-
设定初始学习率
\eta(0)和邻域半径 $\sigma(0)$。
第二步:竞争阶段 (Competition)
-
从训练集中随机取出一个样本 $x$。
-
计算该样本与网格中所有神经元权重
W_j的距离(通常使用欧氏距离)。 -
找到距离最近的那个神经元,称之为最佳匹配单元(Best Matching Unit, BMU),记为 $c$:
c = \arg\min_j \| x - W_j \|
第三步:协作阶段 (Cooperation)
-
BMU 确定后,它会影响其周围的邻居。
-
计算其他神经元
j与 BMUc在二维网格上的距离 $d_{cj}$。 -
计算邻域函数 $h_{cj}(t)$。最常用的是高斯函数:
h_{cj}(t) = \exp\left( - \frac{d_{cj}^2}{2\sigma^2(t)} \right)- 这意味着离 BMU 越近的神经元,受到的影响越大。
第四步:学习阶段 (Adaptation)
-
更新网格中所有(或邻域内)神经元的权重:
W_j(t+1) = W_j(t) + \eta(t) \cdot h_{cj}(t) \cdot [x - W_j(t)]-
直观理解:这个公式把神经元的权重
W_j向当前样本x的方向“拉”了一把。 -
\eta(t)是随时间衰减的学习率。
-
第五步:迭代与退火
-
随着迭代次数
t的增加,学习率\eta(t)和邻域半径\sigma(t)都会逐渐减小。 -
退火效应:起初,整张网大范围移动(粗调);后期,只有 BMU 及其极少数邻居微调(精调)。
-
重复上述步骤,直到达到预设的迭代次数或权重收敛。
3. SOM 算法的精髓
1. 为什么它能保持拓扑结构?
因为在更新时,邻居是带着一起动的。
如果两个样本 x_1 和 x_2 在高维空间很接近,它们激活的 BMU 也会非常接近。由于邻域更新机制,这两个 BMU 及其周围的权重会趋于相似,最终在地图上形成相邻的区域。
2. 两个关键的递减过程
-
邻域半径递减:开始时,“牵一发而动全身”,确保全局结构的形成;最后,半径缩到几乎只剩 BMU 自己,确保局部细节的准确。
-
学习率递减:保证算法最终能稳定下来,不会因为最后几个样本的冲击而大幅波动。
4. 结果可视化:U-Matrix
训练完 SOM 后,我们怎么看结果?最常用的是 U-Matrix (Unified Distance Matrix):
-
它计算每个神经元与其相邻神经元权重之间的距离。
-
在图中,颜色较深(距离小)的区域代表这里的神经元非常相似,形成了一个“簇”;
-
颜色较浅或有亮色线条(距离大)的区域代表“边界”,即不同类别之间的分水岭。
5. 总结
| 阶段 | 动作 | 目的 |
|---|---|---|
| 竞争 | 找最近的神经元 | 确定样本在地图上的“归属点” |
| 协作 | 确定受影响的范围 | 保持空间拓扑连接,不让神经元孤立 |
| 学习 | 拉近权重与样本的距离 | 让网格逐渐“长成”数据的样子 |
这三个概念构成了非监督学习中流形学习(Manifold Learning)和降维的核心逻辑。它们的关系可以看作是从“直线”到“曲线”再到“曲面”的维度与复杂度演进。
1. 主成分 (Principal Components, PC)
主成分是主成分分析(PCA)的产物。它的核心思想是:寻找数据方差最大的方向。
-
几何本质:在
n维空间中寻找一条直线,使得数据点投影到这条直线上的残差平方和最小。 -
线性特性:它是原始变量的线性组合。第一主成分(PC1)解释了数据中最大的波动,第二主成分(PC2)与第一主成分正交,解释次大的波动。
-
局限性:只能处理线性结构。如果数据像一个“S”形或环形分布,直线(主成分)就无法很好地描述它。
📌 使用场景:
-
高维数据降维:例如在基因芯片数据中,将几万个基因维度降至 2-3 个主成分,以便在二维图上观察样本聚类情况。
-
数据去噪:保留前几个主成分(代表信号),丢弃后面的主成分(代表随机噪声)。
-
图像压缩:通过保留主要特征向量来重构图像。
2. 主曲线 (Principal Curves)
主曲线是主成分的非线性推广。
-
几何本质:它是穿过数据分布“中间”的一条光滑曲线。数学上定义为:对于曲线上的每一个点,它都是所有投影到该点的数据点的平均值(自相容性)。
-
核心逻辑:如果说主成分是一根刚性的钢丝,主曲线就是一根可以根据数据分布弯曲的橡皮筋。
-
意义:它能够捕捉数据中的非线性趋势。
📌 使用场景:
-
轨迹分析:在单细胞测序(scRNA-seq)中,细胞的状态转换通常是连续的。研究者使用主曲线来拟合“伪时间轨迹”,模拟细胞从干细胞分化到成熟细胞的路径。
-
地理路径重建:根据大量杂乱的 GPS 坐标点(受误差影响),提取出道路的中心线。
-
特征提取:在手写识别中,提取笔画的核心骨架曲线。
3. 主曲面 (Principal Surfaces)
主曲面是主曲线在二维或更高维度的扩展。
-
几何本质:一个嵌入在高维空间中的低维薄膜。它同样满足自相容性:曲面上的点是投影到其上的所有观测点的质心。
-
算法联系:自组织映射(SOM)在收敛后,本质上就可以看作是一个离散化的主曲面。
-
意义:它认为高维数据实际上分布在一个卷曲的低维“流形”上。
📌 使用场景:
-
地质建模:在石油勘探或矿业中,根据离散的采样点拟合地层矿脉的走向曲面。
-
复杂系统监控:例如核电站的各种参数(压力、温度、流量等)虽然有几十个维度,但它们通常受少数几个物理规律制约,数据会分布在一个隐形的主曲面上。一旦数据偏离这个曲面,就预示着系统出现异常。
-
心理学/社会科学:将复杂的调查问卷结果投影到二维主曲面上,观察不同人群的分布模式。
总结对比
| 概念 | 几何形式 | 线性/非线性 | 拟合目标 |
|---|---|---|---|
| 主成分 | 直线 (Line) | 线性 | 方差最大化 / 线性重构误差最小 |
| 主曲线 | 曲线 (Curve) | 非线性 | 穿过数据中心的非线性骨架 |
| 主曲面 | 曲面 (Surface) | 非线性 | 覆盖数据分布的非线性薄膜 |
通俗理解:
想象一团像“香蕉”形状的散点图:
-
主成分会穿过香蕉中心画一根直棍子(拟合得很差)。
-
主曲线会画一根弯曲的香蕉芯(完美描述趋势)。
-
主曲面如果这是一堆分布在香蕉皮上的点,它会还原出整张香蕉皮。
非负矩阵分解(Non-negative Matrix Factorization, NMF) 是线性代数和机器学习中一种非常强大的分解技术。它的核心约束在于:原始矩阵及分解后的所有矩阵中的元素都必须是非负的($\ge 0$)。
这一约束看似简单,却产生了一个神奇的特性:“部分构成整体” (Parts-based representation)。
1. 数学定义与公式
假设我们有一个原始数据矩阵 $V$,维度为 $m \times n$(例如 m 个特征,n 个样本)。NMF 的目标是找到两个非负矩阵 W 和 $H$,使得它们的乘积近似等于 $V$:
V \approx W \times H
-
$V_{m \times n}$:原始观测矩阵。
-
$W_{m \times k}$:基矩阵(Basis Matrix)。它包含了数据的“特征”或“基石”。
-
$H_{k \times n}$:系数矩阵(Coefficient Matrix),也叫权重矩阵。它表示每个样本由哪些基石组合而成。
-
$k$:分解的秩(Rank),通常由用户指定,满足 $k \ll \min(m, n)$,从而达到降维的目的。
核心约束:
W_{ik} \ge 0, \quad H_{kj} \ge 0
求解目标(损失函数):
通常通过最小化 欧氏距离 或 KL 散度 来寻找最优的 W 和 $H$:
\min_{W,H} \|V - WH\|^2 \quad \text{s.t. } W,H \ge 0
2. 为什么一定要“非负”?(NMF 的哲学)
在 PCA(主成分分析)中,特征向量里存在正负号,这意味着模型通过“相加”和“相减”来重构数据。但在物理世界中,很多东西只有“加”的意义。
NMF 强制只许相加,不许相减。这意味着:
-
无法抵消:你不能用一个负的特征去抵消另一个特征。
-
局部特性:为了组合成整体,基矩阵
W必须学习到数据的局部特征。
3. 详细举例说明
A. 图像处理:人脸识别(最经典的例子)
想象 V 矩阵的每一列是一张人脸照片的像素数据。
-
PCA 分解:得到的基向量看起来像是一张张完整的、模糊的、甚至带有负影的“鬼脸”(特征脸)。
-
NMF 分解:
-
基矩阵 $W$:学习到的是人脸的局部器官。第一列可能是一只鼻子,第二列是一对眼睛,第三列是嘴巴。
-
系数矩阵 $H$:记录了某张特定脸是如何由这些器官“拼装”出来的(比如:1份鼻子 + 1份眼睛 + 0.5份嘴巴)。
-
-
结果:这种分解更符合人类直觉——脸是由器官组成的。
B. 文本挖掘:主题模型(Topic Modeling)
假设 V 矩阵的行是单词,列是文档。V_{ij} 代表单词 i 在文档 j 中出现的频率。
-
基矩阵 $W$:每一列代表一个主题。例如,主题 1 包含“芯片、算法、算力”等高权重词;主题 2 包含“法律、诉讼、条款”。
-
系数矩阵 $H$:每一列代表一篇文档。如果文档 A 的第一行数值很高,说明文档 A 主要是关于“技术主题”的。
-
优点:因为非负,所以结果非常容易解释(文档是多个主题的加权和)。
C. 语音处理:音源分离
一段包含吉他、鼓声和人声的混合音频信号。
-
$V$:音频的频谱图。
-
$W$:可以学习到不同乐器的特征频谱模式。
-
$H$:代表这些乐器在不同时间点出现的强度。
-
通过 NMF,我们可以把混合在一起的声音拆解成独立的声轨。
4. NMF 的算法实现过程
NMF 是一个非凸优化问题,通常使用 乘性更新规则 (Multiplicative Update Rules):
-
随机初始化
W和H为非负值。 -
固定
W更新 $H$:通过 $H \leftarrow H \cdot \frac{W^T V}{W^T W H}$(点乘和点除)。 -
固定
H更新 $W$:通过 $W \leftarrow W \cdot \frac{V H^T}{W H H^T}$。 -
重复迭代,直到结果收敛。
总结
| 特性 | 描述 |
|---|---|
| 核心约束 | 所有元素 \ge 0 |
| 物理意义 | 部分构成整体(无抵消效应) |
| 主要功能 | 降维、特征提取、聚类(H 矩阵可视为软聚类结果) |
| 弱点 | 只有局部最优解;对 k 的选择敏感 |
别担心,这部分内容确实是机器学习中最“玄学”也最数学化的领域,因为它们都在试图解决一个终极问题:如何从一堆乱七八糟的高维数据中,把最本质、最干净的信息“抠”出来。
我们不需要钻进复杂的公式,先用直观的逻辑把它们梳理通。
1. 独立成分分析 (ICA, Independent Component Analysis)
直观理解:鸡尾酒会效应。
想象你在一个嘈杂的酒会上,有三个人同时说话,现场放了三个麦克风录音。每个麦克风录到的都是三个声音的混合。ICA 的目标就是通过这三段混合音频,把三个独立的声源完全还原出来。
-
核心逻辑:它寻找的是比“正交”(PCA 的要求)更强的条件——统计独立。它假设原始信号是非高斯的,通过最大化非高斯性来分离信号。
-
应用:脑电图(EEG)信号去噪(分离脑电和眼动伪迹)、金融市场独立因素挖掘。
2. 探索投影寻踪 (EPP, Exploratory Projection Pursuit)
直观理解:寻找“最有意思”的观察视角。
如果你从正面看一个球,它是个圆;从侧面看一个圆柱,它是个矩形。有些视角看到的数据分布很平庸(像正态分布),有些视角能看到明显的聚类或结构。
-
核心逻辑:它不是盲目降维,而是定义一个“投影指数”(Index),用来衡量某种分布有多“有趣”。算法会自动旋转坐标系,直到找到那个能让你一眼看出数据内部结构的“神仙视角”。
-
应用:高维数据的探索性空间分析。
3. 多维缩放 (MDS, Multidimensional Scaling)
直观理解:根据“距离表”还原“地图”。
假设我只给你一张表格,上面写着中国各个城市之间的飞行距离(比如北京到上海 1000km),但我没给你地图。MDS 的任务就是根据这些距离,在二维平面上把这些点画出来,使得点与点之间的图面距离尽可能等于你给我的实际距离。
-
核心逻辑:保持距离不变。它认为只要点与点之间的相对距离保住了,数据的整体结构就保住了。
-
应用:市场调研(分析消费者心中不同品牌的相似度)、社交网络分析。
4. 非线性降维 (Nonlinear Dimensionality Reduction)
这是一个大类,主要解决“瑞士卷”(Swiss Roll)问题。
想象一张卷起来的草席,在三维空间看,卷心和卷皮离得很近;但如果你把草席铺平,它们其实离得很远。
- 核心逻辑:传统的 PCA 是直来直去的线性投影,会把卷在一起的数据“压扁”。非线性降维(如 Isomap 或 LLE)会顺着草席的纹理去测量距离(测地线距离),然后把它平展开。
- 应用:图像流形学习、复杂物理系统建模。
5. 局部多维缩放 (Local MDS)
直观理解:只管邻居,不管远亲。
它是对普通 MDS 的优化。传统的 MDS 试图让所有点对之间的距离都精确,这在处理弯曲的数据(流形)时很痛苦。
- 核心逻辑:它只要求局部距离(离得近的点)保持一致。只要每个小局部都对齐了,整体的非线性形状(比如那个“卷儿”)就能在降维后被拉平,而不会发生严重的畸变。
- 关系:它其实是连接 MDS 与非线性降维(如 Isomap)的桥梁。
💡 快速总结对比表
| 算法 | 核心目标 | 绝活 |
|---|---|---|
| ICA | 独立性 | 盲源分离(把混合的声音拆开) |
| EPP | 有趣性 | 自动找最能看出规律的投影角度 |
| MDS | 距离保持 | 只有距离数据也能画出分布图 |
| 非线性降维 | 拓扑保持 | 把卷曲的数据“拉平”而不损坏结构 |
| Local MDS | 局部距离 | 专注于保持近邻关系,应对弯曲分布 |