Kurtis Pykes 2024-01-12
无监督学习作为机器学习的一种基本类型,正在不断发展。这种方法专注于输入向量,而无需对应的标签值(目标值),其在根据相似性、模式和差异对信息进行分组和解释方面的能力取得了显著进展。最新的深度无监督学习模型进一步增强了这种能力,使我们能够更细致地理解复杂数据集。
到2024年,无监督学习算法(传统上不依赖于输入到输出的映射)在发现未标注数据潜在结构方面变得更加自主和高效。由于不再依赖“教师”(即人工标注的数据),这一特性通过先进的自监督学习技术得到了加强,从而大幅减少了对标注数据的依赖。
此外,该领域还在将无监督学习与其他人工智能学科(如强化学习)融合方面取得了进展,催生出更加自适应且智能的系统。这些系统在识别数据中的模式和异常方面表现出色,为各行业的创新应用铺平了道路。本文将深入探讨无监督学习,详细介绍其不同类型及其用途。
监督学习 vs. 无监督学习
下表对比了无监督学习与监督学习之间的一些关键区别:
| 监督学习 | 无监督学习 | |
|---|---|---|
| 目标 | 基于示例的输入-输出对,近似一个将输入映射到输出的函数。 | 构建数据的简洁表示,并从中生成富有想象力的内容。 |
| 准确性 | 高度准确且可靠。 | 准确性和可靠性较低。 |
| 复杂性 | 方法较为简单。 | 计算上更为复杂。 |
| 类别数量 | 类别数量已知。 | 类别数量未知。 |
| 输出 | 期望的输出值(也称为监督信号)。 | 没有对应的输出值。 |
无监督学习的类型
在引言中,我们提到无监督学习是一种在没有标签的情况下对数据进行分组的方法。由于不存在标签,无监督学习方法通常用于构建数据的简洁表示,以便从中推导出富有创意的内容。
例如,如果我们计划推出一款新产品,可以使用无监督学习方法来识别该新产品的目标市场:这是因为目前尚无关于目标客户及其人口统计特征的历史信息。
但无监督学习可细分为三大主要任务:
- 聚类(Clustering)
- 关联规则挖掘(Association Rule Mining)
- 降维(Dimensionality Reduction)
接下来,我们将深入探讨每一种类型:
聚类(Clustering)
从理论角度看,同一组内的实例往往具有相似的属性。你可以在元素周期表中观察到这一现象:同一族(由18列分隔)的元素原子最外层电子数相同,并形成相同类型的化学键。
聚类算法正是基于这一思想;聚类方法根据数据之间的相似性和差异性,对未标记的数据进行分组。当两个实例出现在不同组中时,我们可以推断它们具有不同的属性。
聚类是一种流行的无监督学习方法。你甚至可以进一步将其细分为不同类型的聚类,例如:
- 互斥聚类(Exclusive clustering):数据被分组,使得每个数据点仅属于一个聚类。
- 重叠聚类(Overlapping clustering):一种软聚类,其中单个数据点可能以不同程度的隶属度属于多个聚类。
- 层次聚类(Hierarchical clustering):创建聚类的方式是使相似的实例位于同一组内,而不同的对象则位于其他组中。
- 概率聚类(Probabilistic clustering):利用概率分布创建聚类。
关联规则挖掘(Association Rule Mining)
这种无监督机器学习采用基于规则的方法,用于发现给定数据集中特征之间的有趣关系。它通过使用某种“兴趣度”度量来识别数据集中存在的强规则。
我们通常在市场篮子分析(Market Basket Analysis)中看到关联规则挖掘的应用:这是一种零售商使用的数据挖掘技术,旨在通过分析各种产品之间的关系,更好地理解客户的购买模式。
关联规则学习中最广泛使用的算法是Apriori算法。然而,还有其他算法也用于此类无监督学习,例如Eclat算法和FP-growth算法。
降维(Dimensionality Reduction)
常用的降维算法包括主成分分析(PCA)和奇异值分解(SVD)。这些算法试图将高维空间中的数据转换为低维空间,同时不损害原始数据中有意义的属性。这些技术通常在探索性数据分析(EDA)或数据预处理阶段使用,以为建模做准备。
在EDA过程中降低数据维度有助于可视化数据:这是因为可视化超过三维的数据非常困难。从数据处理的角度来看,降低数据维度可以简化建模问题。
当模型输入的特征越多时,模型就必须学习一个更复杂的近似函数。这种现象可以用一句俗语概括,即“维度灾难”(curse of dimensionality)。
无监督学习的应用
大多数高管都能轻松识别监督机器学习任务的用例;但对于无监督学习却未必如此。
造成这种情况的一个原因在于风险的本质。与监督学习相比,无监督学习引入了更大的风险,因为在离线环境中没有明确的方法将结果与真实标签(ground truth)进行比对,而在线评估又可能风险过高。
尽管如此,在企业层面仍存在若干有价值的无监督学习用例。除了使用无监督技术探索数据之外,一些现实世界中的常见用例包括:
- 自然语言处理(NLP):Google 新闻就利用无监督学习对来自不同新闻机构的报道进行分类。例如,所有关于足球转会窗口的报道都可以归类到“足球”类别下。
- 图像与视频分析:视觉感知任务(如物体识别)利用无监督学习。
- 异常检测(Anomaly detection):无监督学习用于识别偏离数据集正常行为的数据点、事件和/或观测值。
- 客户细分(Customer segmentation):通过无监督学习可以创建有趣的买家画像,帮助企业了解客户的共同特征和购买习惯,从而更精准地调整产品策略。
- 推荐引擎(Recommendation Engines):结合过去的购买行为与无监督学习,企业可以发现可用于制定有效交叉销售策略的数据趋势。
Python 中的无监督学习示例
主成分分析(PCA)是指计算主成分,然后利用这些主成分对数据执行基变换的过程。换句话说,PCA 是一种无监督学习的降维技术。
对数据集进行降维主要有两个原因:
- 当数据集维度太多而无法可视化时;
- 在构建预测模型时,识别最具预测性的 n 个维度用于特征选择。
在本节中,我们将在 Iris 数据集上使用 Python 实现 PCA 算法,并使用 Matplotlib 进行可视化。你可以通过这个 DataLab 工作簿跟随本教程中的代码操作。
首先导入必要的库和数据:
from sklearn.datasets import load_iris # 数据集
from sklearn.decomposition import PCA # 算法
import matplotlib.pyplot as plt # 可视化
# 加载数据
iris_data = load_iris(as_frame=True)
# 预览
iris_data.data.head()
| sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) |
|---|---|---|---|
| 5.1 | 3.5 | 1.4 | 0.2 |
| 4.9 | 3.0 | 1.4 | 0.2 |
| 4.7 | 3.2 | 1.3 | 0.2 |
| 4.6 | 3.1 | 1.5 | 0.2 |
| 5.0 | 3.6 | 1.4 | 0.2 |
Iris 数据集包含四个特征。试图在四维或更高维度中可视化数据是不可能的,因为我们根本无法想象高维空间中的事物会是什么样子。我们能做的次优选择是在三维中展示它,但这仍然具有挑战性。
例如:
plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
sepal_length = iris_data.data["sepal length (cm)"]
sepal_width = iris_data.data["sepal width (cm)"]
petal_length = iris_data.data["petal length (cm)"]
petal_width = iris_data.data["petal width (cm)"]
ax.scatter(sepal_length, sepal_width, petal_length, c=petal_width)
plt.show()

从这个可视化中很难获得洞察,因为所有实例都混杂在一起——在这种情况下,我们在三维可视化中只能获得一个视角。
通过 PCA,我们可以将数据维度降至二维,这样就能更容易地可视化数据并区分各类别。
# 使用2个主成分实例化PCA
pca = PCA(n_components=2)
# 训练模型
pca.fit(iris_data.data)
iris_data_reduced = pca.fit_transform(iris_data.data)
# 绘制数据
plt.scatter(
iris_data_reduced[:,0],
iris_data_reduced[:,1],
c=iris_data.target
)
plt.show()

在上述代码中,我们将 Iris 数据集的特征转换为仅保留两个主成分的形式,然后在二维平面上绘制降维后的数据。
现在,我们能更轻松地获取有关数据的信息,并观察各类别是如何分离的。如果我们要在这些数据上拟合一个机器学习模型,这些洞察可以帮助我们决定下一步该怎么做。
结语
无监督学习是指机器学习中一类问题,即使用模型来刻画数据或提取数据中的关系。
与监督学习不同,无监督学习算法仅使用输入特征来发现数据集的潜在结构。这意味着无监督学习模型不需要“教师”来纠正它们,而监督学习则需要。
在本文中,你学习了无监督学习的三种主要类型:关联规则挖掘、聚类和降维。你还了解了无监督学习的多种应用场景,以及如何在 Python 中使用 PCA 算法进行降维。