# 零、前言 无监督学习是数据科学中一个越来越重要的分支,其目的是训练可以学习数据集结构并为用户提供有关新样本的有用信息的模型。 在许多不同的业务部门(例如市场营销,商业智能,战略等)中,无监督学习一直在帮助经理基于定性方法(尤其是定量方法)做出最佳决策方面发挥主要作用。 在数据变得越来越普遍且存储成本不断下降的世界中,分析真实,复杂的数据集的可能性正在帮助将老式的业务模型转换为新的,更准确,响应更快且更有效的模型。 这就是为什么数据科学家可能对所有可能性都不了解,而是专注于所有方法的利弊,并增加了对每个特定领域的最佳潜在策略的了解。 本书并非旨在作为详尽的资源(实际上是不可能找到的),而是更多的参考资料,可让您着手探索这个世界,并为您提供可以立即采用和评估的不同方法。 我希望不同背景的读者能学到有价值的东西,以改善他们的业务,并且希望您对这个有趣的主题有更多的研究! # 这本书是给谁的 本书的目标读者是数据科学家(有抱负的专业人员),机器学习从业人员和开发人员,他们想要学习如何实现最常见的无监督算法并调整其参数,从而为所有领域的不同利益相关者提供有价值的见解。 商业领域。 # 本书涵盖的内容 第 1 章,“无监督学习入门” 从非常务实的角度介绍了机器学习和数据科学。 讨论了主要概念,并显示了一些简单的示例,特别关注了无监督问题结构。 第 2 章,“聚类基础知识” 开始研究聚类算法。 分析了最常见的方法和评估指标,并给出了具体示例,这些示例演示了如何从不同的角度调整超参数和评估表现。 第 3 章,“高级聚类”讨论了一些更复杂的算法。 第 2 章,“聚类基础知识”中分析的许多问题都使用更强大,更灵活的方法进行了重新评估,只要基本算法的表现不符合要求,就可以轻松采用这些方法。 。 第 4 章,“实用的层次聚类”完全致力于可以根据特定标准计算完整聚类层次的一系列算法。 分析了最常见的策略,以及可以提高方法有效性的特定表现指标和算法变体。 第 5 章,“软聚类和高斯混合模型”着重介绍了几种著名的软聚类算法,特别着重于高斯混合,这允许在相当合理的假设下定义生成式模型。 第 6 章,“异常检测”讨论了无监督学习的一种特殊应用:新颖性和异常检测。 目的是分析一些可以有效使用的常用方法,以了解新样本是否可以被视为有效样本,还是需要特别注意的异常样本。 第 7 章,“降维和成分分析”涵盖了降维,成分分析和字典学习的最常用和最有效的方法。 这些示例说明了如何在不同的特定情况下有效地执行此类操作。 第 8 章,“无监督神经网络模型” 讨论了一些非常重要的无监督神经模型。 特别地,焦点既针对可以学习通用数据生成过程的结构的网络,又针对执行降维。 第 9 章,“生成对抗网络和 SOM”继续分析一些深层神经网络,这些神经网络可以学习数据生成过程的结构并输出从这些过程中提取的新样本。 此外,讨论了一种特殊的网络(SOM),并显示了一些实际示例。 # 充分利用这本书 本书要求具备机器学习和 Python 编码的基础知识。 此外,需要大学水平的概率论,微积分和线性代数知识,以全面理解所有理论讨论。 但是,不熟悉此类概念的读者可以跳过数学讨论,而只关注实际方面。 只要需要,就会提供对特定论文和书籍的引用,以使您能够更深入地了解最复杂的概念。 # 下载示例代码文件 您可以从 [www.packt.com](http://www.packt.com) 的帐户中下载本书的示例代码文件。 如果您在其他地方购买了此书,则可以访问 [www.packt.com/support](http://www.packt.com/support) 并注册以将文件直接通过电子邮件发送给您。 您可以按照以下步骤下载代码文件: 1. 登录或注册 [www.packt.com](http://www.packt.com) 。 2. 选择支持标签。 3. 单击代码下载&勘误表。 4. 在搜索框中输入书籍的名称,然后按照屏幕上的说明进行操作。 下载文件后,请确保使用以下最新版本解压缩或解压缩文件夹: * Windows 的 WinRAR/7-Zip * Mac 的 Zipeg/iZip/UnRarX * Linux 的 7-Zip/PeaZip 本书的代码包也托管在 [GitHub](https://github.com/PacktPublishing/HandsOn-Unsupervised-Learning-with-Python) 上。 如果代码有更新,它将在现有 GitHub 存储库上进行更新。 在[这个页面](https://github.com/PacktPublishing/)中,我们还提供了丰富的图书和视频目录中的其他代码包。去看一下! # 下载彩色图像 我们还提供了 PDF 文件,其中包含本书中使用的屏幕截图/图表的彩色图像。 [您可以在此处下载](http://www.packtpub.com/sites/default/files/downloads/Bookname_ColorImages.pdf)。 # 使用约定 本书中使用了许多文本约定。 `CodeInText`:表示文本中的词,数据库表名称,文件夹名称,文件名,文件扩展名,路径名,伪 URL,用户输入和 Twitter 句柄。 这里是一个示例:“将下载的`WebStorm-10*.dmg`磁盘映像文件安装为系统中的另一个磁盘。” 代码块设置如下: ```py X_train = faces['images'] X_train = (2.0 * X_train) - 1.0 width = X_train.shape[1] height = X_train.shape[2] ``` 当我们希望引起您对代码块特定部分的注意时,相关行或项目以粗体显示: ```py import tensorflow as tf session = tf.InteractiveSession(graph=graph) tf.global_variables_initializer().run() ``` **粗体**:表示您在屏幕上看到的新术语,重要单词或顺序。 例如,菜单或对话框中的单词会出现在这样的文本中。 这是一个示例:“从管理面板中选择系统信息。 ” 警告或重要提示显示如下,提示和技巧显示如下。