第三章:无监督学习与预处理

  • 1. 无监督学习的类型
  • 1.1 无监督变换
  • 1.2 聚类算法
  • 2. 无监督学习的挑战
  • 3. 预处理与缩放
  • 4. 降维、特征提取与流形学习
  • 5. 聚类
  • 6. 小结与展望



我们要讨论的第二种机器学习算法是无监督学习算法。无监督学习包括没有已知输出、没有老师指导学习算法的各种机器学习。在无监督学习中,学习算法只有输入数据,并需要从这些数据中提取知识。

1. 无监督学习的类型

本章将研究两种类型的无监督学习:数据集变换与聚类。

1.1 无监督变换

数据集的无监督变换(unsupervised transformation)是创建数据新的表示的算法,与数据的原始表示相比,新的表示可能更容易被人或其他机器学习算法所理解。无监督变换的一个常见应用是降维(dimensionality reduction),它接受包含许多特征的数据的高维表示,并找到表示该数据的一种新方法,用较少的特征就可以概括其重要特性。降维的一个常见应用是为了可视化将数据降为二维。

无监督变换的另一个应用是找到“构成”数据的各个组成部分。这方面的一个例子就是对文本文档集合进行主题提取。这里的任务是找到每个文档中讨论的未知主题,并学习每个文档中出现了哪些主题。这可以用于追踪社交媒体上的话题讨论,比如选举、枪支管制或流行歌手等话题。

1.2 聚类算法

简单定义:与之相反,聚类算法将数据划分成不同的组,每组包含相似的物项。

例子:思考向社交媒体网站上传照片的例子。为了方便你整理照片,网站可能想要将同一个人的照片分在一组。但网站并不知道每张照片是谁,也不知道你的照片集中出现了多少个人。明智的做法是提取所有的人脸,并将看起来相似的人脸分在一组。但愿这些人脸对应同一个人,这样图片的分组也就完成了。

2. 无监督学习的挑战

无监督学习的一个主要挑战就是:评估算法是否学到了有用的东西。无监督学习算法一般用于不包含任何标签信息的数据,所以我们不知道正确的输出应该是什么。因此很难判断一个模型是否“表现很好”。例如,假设我们的聚类算法已经将所有的侧脸照片和所有的正面照片进行分组。这肯定是人脸照片集合的一种可能的划分方法,但并不是我们想要的那种方法。然而,我们没有办法“告诉”算法我们要的是什么,通常来说,评估无监督算法结果的唯一方法就是人工检查

因此,如果数据科学家想要更好地理解数据,那么无监督算法通常可用于探索性的目的,而不是作为大型自动化系统的一部分。无监督算法的另一个常见应用是作为监督算法的预处理步骤。学习数据的一种新表示,有时可以提高监督算法的精度,或者可以减少内存占用和时间开销。

在开始学习“真正的”无监督算法之前,我们先简要讨论几种简单又常用的预处理方法。虽然预处理和缩放通常与监督学习算法一起使用,但缩放方法并没有用到与“监督”有关的信息,所以它是无监督的。

3. 预处理与缩放

点击链接跳转:预处理与缩放

4. 降维、特征提取与流形学习

点击链接跳转:降维、特征提取与流形学习

5. 聚类

点击链接跳转:聚类

6. 小结与展望

本章介绍了一系列无监督学习算法,可用于探索性数据分析和预处理。找到数据的正确表示对于监督学习和无监督学习的成功通常都至关重要,预处理和分解方法在数据准备中具有重要作用。

分解、流形学习和聚类都是加深数据理解的重要工具,在没有监督信息的情况下,也是理解数据的仅有的方法。即使是在监督学习中,探索性工具对于更好地理解数据性质也很重要。通常来说,很难量化无监督算法的有用性,但这不应该妨碍你使用它们来深入理解数据。学完这些方法,你就已经掌握了机器学习从业者每天使用的所有必要的学习算法。

建议在 scikit-learn 中包含的二维玩具数据和现实世界数据集(比如 digits、iris和 cancer 数据集)上尝试聚类和分解方法。