聚类算法与机器学习学习策略综述
1. 聚类算法概述
聚类算法在数据挖掘和机器学习领域中具有重要地位,能够将数据集中相似的数据点划分为不同的组或簇。以下将介绍几种常见的聚类算法及其特点。
1.1 K - 均值聚类算法
K - 均值聚类算法是一种经典的聚类方法,但它对离群点较为敏感,因为均值容易受到极端值的影响。不过,有一些技术可以避免度量属性的影响,适用于度量和非度量距离。例如,GT(Kaukoranta 等人,2000)利用点活动进行快速聚类,CGAUDC(Lai 等人,2008)是 GT 的扩展,在性能上有进一步提升,GAD(Jin 等人,2011)则提供了利用活动检测进行快速聚类的通用解决方案。
同时,有多种软件实现了 K - 均值聚类算法:
| 软件名称 | 语言 | 特点 | 链接 |
| — | — | — | — |
| Weka | Java | 开源数据挖掘软件 | http://www.cs.waikato.ac.nz/ml/weka/index.html |
| Apache Mahout | Java | 用于 Hadoop 的开源机器学习软件,支持 K - 均值、模糊 K - 均值和流式 K - 均值 | http://mahout.apache.org/users/clustering/k - means - clustering.html |
| LNKnet Software | C | 来自 MIT 林肯实验室的公共领域软件 | http://www.ll.mit.edu/mission/communications/cyber/softwaretools/lnknet/lnknet.html |
| R K - means | R 包 | 对数据矩阵执行 K - 均值聚类 | http://stat.ethz.ch/R - manual/R - patched/library/stats/html/kmeans.html |
| MLPack | C++ | 可扩展的机器学习库 | http://mlpack.org |
| Scikit - Learn | Python | 开源机器学习软件 | http://scikit - learn.org |
1.2 K - 中心点聚类算法
K - 中心点聚类算法是 K - 均值的一种变体,对噪声和离群点更具鲁棒性。它不使用均值点作为簇的中心,而是使用簇中的实际点(即中心点)来代表簇。中心点是簇中位置最中心的对象,与其他点的距离总和最小。
1.2.1 划分围绕中心点(PAM)算法
PAM 算法的基本思想是:选择 K 个代表点形成初始簇,然后反复移动到更好的簇代表。分析代表点和非代表点的所有可能组合,并为每对组合计算所得聚类的质量。用导致失真函数最大减少的新点替换原始代表点。在每次迭代中,每个簇的最佳点集形成新的相应中心点。
PAM 算法的步骤如下:
Require: K, 簇的数量; D, 包含 N 个点的数据集
Ensure: 一组 K 个簇
1: 任意选择 D 中的 K 个点作为初始代表点。
2: 重复
3: 对于 D 中的每个非代表点 p
4: 找到最近的代表点并将 p 分配到相应的簇。
5: 结束
6: 随机选择一个非代表点 prand;
7: 计算将代表点 pi 与 prand 交换的总成本 C;
8: 如果 C < 0
9: 交换 pj 与 prand 以形成一组新的 K 个代表点。
10: 结束
11: 直到满足停止迭代标准
12: 返回聚类结果。
PAM 算法的时间复杂度为 $O(K \cdot N \cdot (N - K) \cdot I)$。
1.2.2 大数据的快速计算算法
PAM 算法对于大数据集的可扩展性较差,为此提出了一些改进算法,如 CLARA 和 CLARANS。
-
CLARA
:采用采样策略,随机抽取一小部分实际数据作为整个数据的代表,对采样数据集执行 PAM 以找到 K 个中心点。如果样本能够紧密代表原始数据集,找到的代表中心点将是使用整个数据集找到的中心点的良好近似。为了提高聚类质量,CLARA 进行多次随机采样,对每个样本应用 PAM,并输出最佳聚类。假设样本大小为 M(远小于原始数据大小 N),CLARA 的时间复杂度为 $O((K \cdot M^2 + K \cdot (N - K)) \cdot I)$。
-
CLARANS
:能够提高 CLARA 的质量。它可以建模为在图中搜索,其中节点是一组 K 个中心点,相邻节点相差一个中心点,因此每个节点有 $K \cdot (N - K)$ 个邻居。通过失真函数评估节点的聚类质量。CLARANS 从随机选择的节点开始,随机选择其邻居;如果邻居的聚类质量更好,则移动到邻居节点并继续迭代。如果节点是局部最小值,即没有测试过的邻居具有更好的聚类效果,则用新的随机选择的节点重新开始并重复该过程。迭代在满足某些标准时停止,例如找到预定义数量的局部最小值。
以下是支持 K - 中心点聚类算法的软件:
| 软件名称 | 类型 | 特点 | 链接 |
| — | — | — | — |
| Flexclust | R 包 | 提供 k - 质心聚类分析的通用框架,支持任意距离度量和质心计算 | http://cran.r - project.org/web/packages/flexclust/index.html |
| Julia 聚类包 | - | - | https://github.com/JuliaStats/Clustering.jl |
| ELKI | Java 数据挖掘软件框架 | 用于开发由索引结构支持的 KDD 应用程序 | http://elki.dbs.ifi.lmu.de |
| Java - ML | Java 机器学习库 | - | http://java - ml.sourceforge.net |
1.3 K - 路谱聚类算法
K - 路谱聚类是利用谱聚类发现 k 个簇的技术。在谱聚类中,数据集表示为相似性图 $G = (V, E)$,顶点表示数据点,当两个对应数据点之间的相似度大于某个阈值时,两个顶点相连,边的权重为相似度值。通过选择图的合适划分来实现聚类,使得不同组之间的边的总权重较低,而组内的边的权重较高。
基本谱聚类算法的步骤如下:
1. 给定一组数据点 P 和相似度矩阵 S(其中 $S_{ij}$ 衡量点 $i$ 和 $j$ 之间的相似度),形成一个图。
2. 构建图的拉普拉斯矩阵 L:
- $L = I - D^{-\frac{1}{2}}SD^{-\frac{1}{2}}$
- 其中 D 是对角矩阵,$D_{ii} = \sum_{j}S_{ij}$
3. 找到矩阵 L 的特征值和特征向量,将顶点映射到相应的分量,并基于嵌入空间形成簇。
找到 K 个簇的方法包括递归二分法和聚类多个特征向量,后者更可取,因为它能够防止由于信息丢失导致的不稳定性。
2. 机器学习学习策略
2.1 懒学习
懒学习是一种机器学习策略,将学习延迟到咨询时间。学习系统的计算可以在训练时间和咨询或测试时间两个不同时间进行。咨询时间是将对象呈现给系统进行推理到推理完成的时间,训练时间是咨询时间之前系统从训练数据进行推理以准备咨询时间的时间。懒学习将大部分计算推迟到咨询时间,典型例子包括基于实例的学习和懒贝叶斯规则。
懒学习与急切学习形成对比,急切学习的大部分计算发生在训练时间。懒学习在以下情况下具有计算优势:
- 当使用单个训练集仅对少数对象进行预测时,因为只需要对要分类的对象所在的实例空间的直接区域进行建模,无需对与预测无关的实例空间区域进行计算。
- 当训练集频繁更新时,例如在线学习,在新的训练示例可用后进行预测时,无需创建完整的全局模型。
懒学习还可以通过允许系统专注于为要进行预测的实例空间的精确点得出最佳决策来提高预测准确性。然而,懒学习必须存储整个训练集用于分类,而急切学习只需要存储一个模型,该模型可能比原始数据更紧凑。
2.2 学习作为搜索
学习可以被视为在概念描述语言的所有句子空间中搜索最能描述数据的句子,或者在假设空间中搜索所有假设。通常,一般性关系决定了搜索空间的结构。
2.2.1 背景
学习程序的输入包括来自宇宙的对象描述(训练集),在监督学习的情况下,还包括与示例关联的输出值。程序能够学习的概念受到观察语言(用于描述训练示例的语言)和假设语言(用于描述概念的语言)的表示能力的限制。这些偏差统称为表示偏差。
表示能力是有代价的,语言越丰富,搜索空间越大。当搜索空间较小时,可以使用“暴力”搜索方法;当搜索空间非常大时,则需要额外的知识来减少搜索。一般性和特异性的概念对于搜索排序很重要。
2.2.2 表示
学习程序的输入可以采用多种形式,如数据库记录、文本页面、图像、音频和其他连续数据信号。通常,原始数据会转换为特征向量或属性/值列表,这种通过属性/值列表的表示就是观察语言。
概念的表示因学习方法而异。在基于实例的学习中,概念由概念的一组原型实例表示,不构建抽象表示,这种表示称为外延表示。基于实例的学习也称为懒学习,因为学习者在呈现训练实例时几乎不做工作,而是在分类时,系统必须找到与新示例最相似的实例。
当实例表示为特征向量时,监督学习问题可以表征为找到一个表面,将属于不同类别的对象分隔到不同区域;在无监督学习中,问题则是在多维空间中找到实例的簇。
学习方法在表示和创建判别表面的方式上有所不同。函数逼近方法搜索描述表面的函数,能够产生准确的分类器,但概念描述存储为一组系数,结果不易供人类读者检查。符号学习系统则找到等同于某种逻辑形式的句子的表达式,例如根据两个属性(大小和颜色)区分对象,这种描述用轴正交表面划分宇宙,与函数逼近方法找到的平滑表面不同。
2.2.3 版本空间和包含关系
Mitchell 定义学习算法的版本空间为与训练示例一致的假设子集。可以使用概念的一般性来帮助将搜索限制在版本空间中的假设。
假设 $h_1$ 比 $h_2$ 更一般或相等,当且仅当 $(\forall x)[h_1(x) \rightarrow h_2(x)]$。假设 $h_1$ 严格比 $h_2$ 更一般,当 $h_1 \geq h_2$ 且 $h_2 \ngeq h_1$。“更一般”的排序与包含关系密切相关,包含关系定义了假设语言中表达式的一般性排序。
学习算法可以使用“更一般”关系来排序搜索最佳假设。由于泛化和特化可能不唯一,这种关系在假设语言的句子上形成一个格。搜索可以从适合训练数据的最具体假设集开始进行从具体到一般的搜索,也可以从最一般假设集开始进行从一般到具体的搜索,搜索算法还可以是双向的。
例如,在单假设搜索中,从具体到一般的搜索可以从随机选择一个正训练示例并创建目标概念恰好是该示例的假设开始。每次看到未被假设覆盖的新正示例时,必须对假设进行泛化;如果看到被当前假设错误覆盖的负示例,则必须对假设进行特化。
也可以采用多假设搜索策略,例如广度优先搜索从假设 $h_2$ 泛化时会创建一个搜索前沿集 ${h_1, h_3}$。当假设可以有多种泛化或特化方式时,前沿集的大小可能很大,一些算法(如 Aq 和 CN2)使用束搜索,只保留 n 个最佳假设。
2.2.4 候选消除算法
Mitchell 的候选消除算法在假设空间中进行双向搜索,维护一组与训练数据一致的最具体假设 S 和一组最一般假设 G,这两组形成版本空间的两个边界。随着新训练示例的出现,边界会进行泛化或特化以保持一致性。
候选消除算法的步骤如下:
初始化 G 为假设空间中最大一般假设集
初始化 S 为最大具体假设集
对于每个训练示例 d
如果 d 是正示例
从 G 中移除与 d 不一致的任何假设
对于 S 中与 d 不一致的每个假设 s
从 S 中移除 s
添加 s 的所有最小泛化 h,使得
h 与 d 一致且 G 中的某个成员比 h 更一般
从 S 中移除比 S 中另一个假设更一般的任何假设
如果 d 是负示例
从 S 中移除与 d 不一致的任何假设
对于 G 中与 d 不一致的每个假设 g
从 G 中移除 g
添加 g 的所有最小特化 h,使得
h 与 d 一致且 S 中的某个成员比 h 更一般
从 G 中移除比 G 中另一个假设更不一般的任何假设
2.2.5 处理噪声数据
到目前为止,我们假设训练数据没有噪声,即所有示例都被正确分类,所有属性值都正确。一旦放松这个假设,上述算法必须修改为使用近似一致性度量。噪声数据带来的危险是学习算法会过度拟合训练数据,通过创建试图覆盖坏数据和好数据的概念描述。处理噪声数据的方法可以参考剪枝相关内容。
3. 相关概念补充
3.1 标签与标注数据
标签是与训练数据中的每个对象相关联的目标值。在分类学习中,标签是类别;在回归中,标签是数值。标注数据是指每个对象都有一个已确定的目标值(即标签)的数据,用于监督学习,与用于无监督学习的未标注数据形成对比。
3.2 语言偏差
学习者的语言偏差是指使用学习者所采用的假设语言能够表达的假设集合。这种语言偏差可以是隐式的,也可以使用偏差指定语言进行显式定义。
3.3 L1 - 距离
L1 - 距离也被称为曼哈顿距离。
3.4 潜在因子模型与矩阵分解
潜在因子模型是基于模型的协同过滤的一种先进方法。其基本假设是存在用户和物品的未知低维表示,在该表示下可以准确建模用户 - 物品亲和力。例如,用户对电影的评分可能取决于一些隐含因素,如用户对各种电影类型的喜好。矩阵分解技术是一类广泛成功的潜在因子模型,试图找到用户 - 物品矩阵的加权低秩近似,其中权重用于保留缺失条目。基于选择用于测量近似质量的损失函数、避免过拟合的正则化项以及其他特定领域的公式,存在大量的矩阵分解模型。
4. 总结与对比
4.1 聚类算法对比
| 算法名称 | 对离群点敏感性 | 适用数据规模 | 特点 |
|---|---|---|---|
| K - 均值聚类算法 | 敏感 | 无特殊限制,但大数据集可能效率低 | 经典算法,有多种软件实现,部分技术可加速 |
| K - 中心点聚类算法(PAM) | 不敏感 | 小数据集 | 更鲁棒,通过交换代表点优化聚类 |
| CLARA | 不敏感 | 大数据集 | 采用采样策略,提高效率但可能找不到最优解 |
| CLARANS | 不敏感 | 大数据集 | 改进 CLARA 质量,通过图搜索优化 |
| K - 路谱聚类算法 | 未提及 | 无特殊限制 | 基于图的聚类,通过拉普拉斯矩阵和特征向量聚类 |
4.2 学习策略对比
| 学习策略 | 计算时间 | 存储需求 | 优势 | 劣势 |
|---|---|---|---|---|
| 懒学习 | 咨询时间 | 整个训练集 | 对少数对象预测和训练集更新时计算优势,提高准确性 | 存储需求大 |
| 急切学习 | 训练时间 | 模型 | 存储紧凑 | 可能对特定区域预测不佳 |
4.3 学习作为搜索的不同方法对比
| 搜索方法 | 起始点 | 特点 | 适用情况 |
|---|---|---|---|
| 具体到一般搜索 | 最具体假设集 | 逐步泛化假设 | 初始假设较具体时 |
| 一般到具体搜索 | 最一般假设集 | 逐步特化假设 | 初始假设较宽泛时 |
| 双向搜索(候选消除算法) | 最具体和最一般假设集 | 同时维护两个边界并调整 | 更全面地搜索假设空间 |
5. 应用建议
5.1 聚类算法应用
- K - 均值聚类算法 :适用于数据分布较为均匀,离群点较少的数据集。可以用于图像分割、客户细分等领域。在选择软件时,根据自身的开发语言和使用场景进行选择,如 Java 开发者可以选择 Weka 或 Apache Mahout,Python 开发者可以选择 Scikit - Learn。
- K - 中心点聚类算法 :当数据集中存在离群点时,PAM 及其改进算法 CLARA 和 CLARANS 更为合适。对于大数据集,优先考虑 CLARA 和 CLARANS。
- K - 路谱聚类算法 :适用于数据具有复杂结构和非线性关系的情况,如图像、社交网络等领域。
5.2 学习策略应用
-
懒学习
:在以下场景中可以考虑使用懒学习:
- 预测对象较少,且训练集更新频繁,如实时数据监测和分析。
- 需要高精度预测,且有足够的存储资源来存储整个训练集。
- 急切学习 :当训练集稳定,且需要快速进行预测时,急切学习是更好的选择,因为它只需要存储一个紧凑的模型。
5.3 学习作为搜索的应用
- 根据数据的特点和初始假设的情况选择合适的搜索方法。如果对数据的初始了解较少,可以选择双向搜索(候选消除算法)以更全面地探索假设空间;如果有一定的先验知识,可以根据假设的宽泛或具体程度选择具体到一般搜索或一般到具体搜索。
6. 流程图总结
6.1 K - 均值聚类算法流程
graph TD;
A[开始] --> B[选择 K 个初始中心点];
B --> C[分配数据点到最近的中心点];
C --> D[更新中心点为簇内数据点的均值];
D --> E{是否满足停止条件};
E -- 否 --> C;
E -- 是 --> F[输出聚类结果];
F --> G[结束];
6.2 PAM 算法流程
graph TD;
A[开始] --> B[选择 K 个初始代表点];
B --> C[分配非代表点到最近的代表点];
C --> D[随机选择非代表点 prand];
D --> E[计算交换成本 C];
E --> F{C < 0?};
F -- 是 --> G[交换代表点];
F -- 否 --> H[不交换];
G --> I{是否满足停止条件};
H --> I;
I -- 否 --> C;
I -- 是 --> J[输出聚类结果];
J --> K[结束];
6.3 候选消除算法流程
graph TD;
A[开始] --> B[初始化 G 为最大一般假设集];
A --> C[初始化 S 为最大具体假设集];
B --> D[处理训练示例 d];
C --> D;
D --> E{d 是正示例?};
E -- 是 --> F[从 G 移除不一致假设];
E -- 否 --> G[从 S 移除不一致假设];
F --> H[更新 S 并移除更一般假设];
G --> I[更新 G 并移除更不一般假设];
H --> J{是否还有训练示例};
I --> J;
J -- 是 --> D;
J -- 否 --> K[输出假设集];
K --> L[结束];
综上所述,不同的聚类算法和学习策略适用于不同的场景和数据特点。在实际应用中,需要根据具体情况进行选择和调整,以达到最佳的效果。同时,对于复杂的问题,可以结合多种算法和策略来提高性能和准确性。
492



被折叠的 条评论
为什么被折叠?



