精通 Java 机器学习(一)

零、前言

有许多关于机器学习的著名书籍,从关于从数据中学习的理论的教学手册;该领域专业化的标准参考,如聚类和异常值检测或概率图建模;到提供使用特定语言的工具和库的实用建议的食谱。覆盖面较广的书籍通常缺乏理论细节,而那些专注于一个主题或工具的书籍可能没有太多关于流环境和批处理环境中的方法差异的内容。此外,对于那些偏爱 Java 工具的非新手来说,如果他们希望找到一本书来扩展他们的知识——同时,在基本方面——就没有多少选择了。

在一个地方寻找

  • 给定任何数据可用性场景下不同技术的利弊——当数据被标记或未标记、流或批处理、本地或分布式、结构化或非结构化时
  • 与这些技术相关的最重要的数学结果的现成参考,以便更好地理解基础理论
  • 据我们所知,目前还不可能介绍最成熟的基于 Java 的框架、库和可视化工具,以及如何将这些技术付诸实践的描述和说明

因此,这本书的核心思想是解决这一差距,同时保持理论和实践之间的平衡,借助概率、统计、基本线性代数和基本微积分为一方服务,并强调方法论、案例研究、工具和代码以支持另一方。

根据 KDnuggets 2016 年软件民意调查,Java 以 16.8%的份额在机器学习使用的语言中排名第二,仅次于 Python。更重要的是,这标志着比前一年增长了 19%!显然,Java 仍然是构建和部署涉及机器学习的系统的重要而有效的工具,尽管有人声称它在某些领域衰落了。通过这本书,我们的目标是接触具有 Java 经验和机器学习初级知识的专业人士和积极的爱好者。我们的目标是让掌握 Java 机器学习成为数据科学高级从业者的下一步。为了引导他们走上这条道路,这本书涵盖了机器学习中的一系列技术,其中一些他们可能已经熟悉,另一些可能不太熟悉,或者只是浅尝辄止,包括数据分析方法、学习算法、模型性能评估,以及更多监督和半监督学习、聚类和异常检测、半监督和主动学习。它还介绍了一些特殊的主题,如概率图建模、文本挖掘和深度学习。不要忘记当今企业级系统中日益重要的主题,这本书还涵盖了从不断发展的数据流中学习的独特挑战和适用于实时系统的工具和技术,以及大数据世界的必要性:

  • 机器学习在大规模分布式环境中是如何工作的?
  • 有哪些权衡?
  • 算法必须如何适应?
  • 这些系统如何与占主导地位的 Hadoop 生态系统中的其他技术进行互操作?

这本书解释了如何通过正确的方法、过程、应用和分析将机器学习应用于真实世界的数据和真实世界的领域。每章都附有案例研究和例子,说明如何使用 Java 编写的一些最好的开源工具来应用新学到的技术。本书涵盖了超过 15 种开源 Java 工具,支持它们之间的各种技术,并附有代码和实际用法。代码、数据和配置可供读者下载和试验。我们提供了十多个机器学习的真实案例研究,说明了数据科学家的过程。每个案例研究都详细说明了实验中采取的步骤:数据摄取、数据分析、数据清洗、特征减少/选择、映射到机器学习、模型训练、模型选择、模型评估和结果分析。这给了读者一个实用的指南,指导他们使用每章中介绍的工具和方法来解决手头的业务问题。

这本书涵盖了什么

第一章,机器学习评论,是对读者从 Packt 的Java 机器学习或类似文本中学到的基本概念和技术的复习。本章回顾了数据、数据转换、采样和偏差、特征及其重要性、监督学习、非监督学习、大数据学习、流和实时学习、概率图形模型和半监督学习等概念。

第二章,现实世界监督学习的实用方法,蜘蛛网撒粉,直入监督学习的广阔领域和相关技术的全部范围。我们涵盖的主题包括特征选择和减少,线性建模,逻辑模型,非线性模型,SVM 和内核,集成学习技术,如装袋和增压,验证技术和评估指标,以及模型选择。使用 WEKA 和 RapidMiner,我们进行了详细的案例研究,经历了从数据分析到模型性能分析的所有步骤。在其他每一章中,这个案例研究都是作为一个例子来帮助读者理解在这一章中介绍的技术是如何在现实生活中应用的。案例研究中使用的数据集是 UCI·霍索科利奇的。

第三章,无监督机器学习技术,介绍了聚类和离群点技术中的许多先进方法,以及应用。涵盖的主题包括无监督数据中的特征选择和简化、聚类算法、聚类中的评估方法,以及使用统计、距离和分布技术的异常检测。在本章的最后,我们使用真实世界的图像数据集 MNIST 进行了聚类和离群点检测的案例研究。我们使用 Smile API 进行特征约简,使用 ELKI 进行学习。

第四章、半监督学习和主动学习,给出了当只有少量标记数据时学习的算法和技术细节。涵盖的主题包括自我训练、生成模型、直推式支持向量机、协同训练、主动学习和多视角学习。该案例研究涉及两个学习系统,并在真实世界的 UCI 乳腺癌威斯康星州数据集上进行。介绍的工具有 JKernelMachines、KEEL 和 JCLAL。

第五章,实时流机器学习,涵盖了数据流在实时呈现的独特情况下从数据中学习的问题。本章广泛涵盖了流机器学习和应用的需求、监督流学习、非监督聚类流学习、非监督离群点学习、流学习中的评估技术以及用于评估的度量标准。本章最后给出了一个详细的案例研究来说明 MOA 框架的使用。使用的数据集是电力(ELEC)。

第六章,概率图建模表明,许多现实世界的问题可以通过对多维空间上的复杂联合概率分布进行编码来有效地表示。概率图模型提供了一个框架来表示,得出推论,并在这种情况下有效地学习。本章广泛涵盖概率概念,PGM,贝叶斯网络,马尔可夫网络,图结构学习,隐马尔可夫模型和推理。在本章的最后,对真实世界数据集进行了详细的案例研究。本案例研究中使用的工具是 OpenMarkov 和 WEKA 的贝叶斯网络。数据集是 UCI 成人(人口普查收入)。

第七章,深度学习,如果在今天的流行想象中有一个机器学习的超级明星,那就是深度学习,它已经在用于解决最复杂的人工智能问题的技术中占据了主导地位。广泛涵盖的主题有神经网络、神经网络中的问题、深度信念网络、受限玻尔兹曼机、卷积网络、长短期记忆单元、去噪自动编码器、递归网络等。我们提供了一个详细的案例研究,展示了如何实现深度学习网络,调整参数和执行学习。我们将 DeepLearning4J 用于 MNIST 图像数据集。

第八章、文本挖掘和自然语言处理,详细介绍了在文本挖掘领域进行各种分析的技术、算法和工具。广泛涵盖的主题包括文本挖掘领域、文本挖掘所需的组件、文本数据的表示、降维技术、主题建模、文本聚类、命名实体识别和深度学习。案例研究使用真实世界的非结构化文本数据(Reuters-21578 数据集),突出主题建模和文本分类;使用的工具是木槌和 KNIME。

第九章、大数据机器学习——最后的前沿,讨论了当今一些最重要的挑战。当数据量很大或速度非常快时,有哪些学习选择?如何处理可伸缩性?涵盖的主题包括大数据集群部署框架、大数据存储选项、批量数据处理、批量数据机器学习、实时机器学习框架和实时流学习。在大数据批处理和实时的详细案例研究中,我们选择了 UCI Covertype 数据集和机器学习库 H2O、Spark MLLib 和萨摩亚。

附录 A ,线性代数,涵盖了线性代数的概念,是一个简短的复习。它的覆盖范围绝不是完整的,但包含了与本书中的机器学习技术相关的一些重要概念的旋风之旅。它包括向量、矩阵和基本矩阵运算和性质、线性变换、矩阵求逆、特征分解、正定矩阵和奇异值分解。

附录 B 、概率,提供了概率的简要入门。它包括概率公理,贝叶斯定理,密度估计,均值,方差,标准差,高斯标准差,协方差,相关系数,二项式分布,泊松分布,高斯分布,中心极限定理和误差传播。

这本书你需要什么

这本书假设你有一些 Java 编程的经验,并且对机器学习概念有一个基本的理解。如果这并不适合你,但是你仍然很好奇并且有上进心,不要烦恼,继续读下去!对于那些有一些背景的人来说,这意味着你熟悉监督和非监督学习中涉及的数据和概念的简单统计分析。那些可能不具备必要的数学知识或者必须挖掘记忆深处才能摆脱古怪公式或有趣符号的人,不要灰心丧气。如果你是那种喜欢挑战的人,附录中的简短入门可能是你启动引擎所需要的一切——一点点毅力将帮助你完成剩下的部分!对于那些从未接触过机器学习的人来说,第一章同样是为你和那些需要复习的人写的——这是你的入门工具包,先跳起来,找出它是关于什么的。你可以用任意数量的在线资源来扩充你的基础知识。最后,对于那些不懂 Java 的人来说,这里有一个秘密:书中提到的许多工具都有强大的 GUI。有些包含类似向导的界面,使它们非常容易使用,并且不需要任何 Java 知识。因此,如果您是 Java 新手,就跳过需要编码的例子,学习使用基于 GUI 的工具吧!

这本书是给谁的

本书的主要读者是与数据打交道的专业人士,他们的职责可能包括数据分析、数据可视化或转换、机器学习模型的培训、验证、测试和评估,大概是使用 Java 或基于 Java 的工具执行预测性、描述性或规定性分析。对 Java 的选择可能意味着个人的偏好,因此需要一些 Java 编程的经验。另一方面,也许工作环境或公司政策的环境限制了第三方工具的使用,只能使用 Java 或其他语言编写的工具。在第二种情况下,潜在的读者可能没有 Java 编程经验。这本书直接针对这位读者,就像针对他们的同事,Java 专家(首先提出这个政策的人)一样。

次要受众可以由仅具有两个属性的简档来定义:对机器学习的求知欲,以及对概念、实用技术和工具的单一综合处理的渴望。这种类型的读者可以选择跳过数学和工具,专注于学习最常见的监督和非监督学习算法。另一个人可能会浏览第 1、2、3、和 *7、*章,完全跳过其他章节,一头扎进工具中——如果你想快速让自己在分析客户说随时会出现的数据集时有用,这是一个完全合理的策略。同样重要的是,通过重复书中的实验进行一些练习,它会让你向大师们提出正确的问题!或者,您可能希望使用这本书作为参考来快速查找相似性传播算法的详细信息(第三章、无监督机器学习技术),或者通过简要回顾示意图来提醒自己一个 LSTM 架构(第七章、深度学习),或者翻一翻在基于流的学习中用于离群点检测的基于距离的聚类方法的利弊列表(第五章、真实所有的标本都受欢迎,每个人都会找到足够的东西来啃。

习俗

在这本书里,你会发现许多区分不同种类信息的文本样式。下面是这些风格的一些例子和它们的含义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“算法在循环中调用消除函数,如下所示。”

代码块设置如下:

DataSource source = new DataSource(trainingFile);
Instances data = source.getDataSet();
if (data.classIndex() == -1)
  data.setClassIndex(data.numAttributes() - 1);

任何命令行输入或输出都按如下方式编写:

Correctly Classified Instances     53       77.9412 %
Incorrectly Classified Instances    15       22.0588 %

新术语重要词汇以粗体显示。

注意

警告或重要提示出现在这样的框中。

Tip

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者的反馈对我们来说很重要,因为它有助于我们开发出真正让你受益匪浅的图书。

要给我们发送总体反馈,只需发送电子邮件<feedback@packtpub.com>,并在邮件主题中提及书名。

如果有一个你擅长的主题,并且你有兴趣写一本书或者为一本书投稿,请查看我们在www.packtpub.com/authors的作者指南。

客户支持

既然您已经是 Packt book 的骄傲拥有者,我们有许多东西可以帮助您从购买中获得最大收益。

您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的支持选项卡上。
  3. 点击代码下载&勘误表
  4. 搜索框中输入书名。
  5. 选择您要下载代码文件的书。
  6. 从下拉菜单中选择您购买这本书的地方。
  7. 点击代码下载

您也可以通过点击 Packt Publishing 网站上该书网页上的代码文件按钮来下载代码文件。在搜索框中输入书名即可进入该页面。请注意,您需要登录到您的 Packt 帐户。

下载文件后,请确保使用最新版本的解压缩或解压文件夹:

  • WinRAR / 7-Zip for Windows
  • 适用于 Mac 的 Zipeg / iZip / UnRarX
  • 用于 Linux 的 7-Zip / PeaZip

这本书的代码包也在 https://github.com/mjmlbook/mastering-java-machine-learning 的 GitHub 上。我们在 https://github.com/PacktPublishing/的也有来自我们丰富的书籍和视频目录的其他代码包。看看他们!

勘误表

尽管我们已尽一切努力确保内容的准确性,但错误还是会发生。如果您在我们的某本书中发现了错误——可能是文本或代码中的错误——如果您能向我们报告,我们将不胜感激。这样做,你可以让其他读者免受挫折,并帮助我们改进本书的后续版本。如果您发现任何勘误表,请通过访问www.packtpub.com/submit-errata,选择您的图书,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,该勘误表将被上传到我们的网站或添加到该标题的勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材料的盗版是所有媒体都存在的问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上发现我们作品的任何形式的非法拷贝,请立即向我们提供地址或网站名称,以便我们采取补救措施。

请通过<copyright@packtpub.com>联系我们,并提供可疑盗版材料的链接。

我们感谢您帮助保护我们的作者,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以通过<questions@packtpub.com>联系我们,我们将尽最大努力解决问题。

一、机器学习回顾

近年来,人工智能 ( AI )尤其是机器学习在学术界和工业界都出现了复兴。在过去的十年里,人工智能已经取得了巨大的成功,但在这中间的几年里,这个领域的最初希望让位于相对衰落,直到最近几年重新出现。

在很大程度上,使这些成功成为可能的是处理数量惊人且不断增长的数据的需求所提供的动力,顽强的研究人员在深度学习方面取得的关键算法进步,以及摩尔定律推动的原始计算能力的不可阻挡的增长。在人工智能引领复兴的领域中,机器学习已经取得了惊人的发展,并继续在一系列领域中找到最广泛的适用性。使用机器学习来帮助最高级别的企业制定复杂的决策,同时,它在提高搜索、语音识别和移动电话个人助理等日常应用的准确性方面取得了巨大成功,这使得它在家庭房间和董事会会议室中的影响变得司空见惯。如今,不仅在大众科技媒体上,而且在主流媒体上,如纽约时报、?? 和赫芬顿邮报都可以找到令人屏息的文章。机器学习确实在相对较短的时间内变得无处不在。

一个普通的用户在日常活动中会以多种方式遇到机器学习。包括雅虎(Yahoo)和 Gmail 在内的大多数电子邮件提供商都让用户自动将电子邮件分类为垃圾邮件、垃圾邮件、促销邮件等标题,这是通过使用文本挖掘(机器学习的一个分支)实现的。当在电子商务网站上在线购买产品,如【https://www.amazon.com/】,或观看内容提供商的电影,如网飞,一个人会被所谓的推荐系统提供其他产品和内容的推荐,这是机器学习的另一个分支,作为留住客户的有效方法。

预测天气,估计房地产价格,预测选民投票率,甚至选举结果——所有这些都使用某种形式的机器学习来预见未来。

不断增长的数据可用性和通过学习这些数据丰富我们生活的系统的前景,对数据科学领域有限的专业人员的技能提出了越来越高的要求。对于训练有素的专家来说,这种需求尤其迫切,他们知道如何使用更流行的语言(如 Java、Python、R,以及越来越多的 Scala)来处理机器学习技术。幸运的是,由于开源社区中成千上万的贡献者,每种语言都有一套丰富且快速增长的库、框架和教程,使得大多数情况下,任何有互联网连接和计算机的人都可以使用最先进的技术。Java 是工具和技术传播的重要载体,特别是在大规模机器学习项目中,因为它在企业级部署和可移植 JVM 平台中的成熟性和稳定性,更不用说多年来已经有大量专业程序员采用了它。因此,掌握当今劳动力中如此缺乏的技能将使任何渴望进入该领域的有抱负的专业人士在市场上处于明显的优势。

也许你已经在你的专业工作中应用了机器学习技术,或者你只是对这个主题感兴趣。如果你正在读这篇文章,很可能你已经可以随心所欲地使用 Java 了,没问题,但是现在你觉得你已经准备好更深入地学习如何在你的下一个数据科学项目中使用最好的开源 ML Java 框架了。如果那真的是你,那么这本书的章节被设计来做所有这些甚至更多,这是多么的幸运啊!

掌握一门学科,尤其是像机器学习这样具有明显适用性的学科,需要的不仅仅是理解其核心概念和熟悉其数学基础。与该主题的介绍性处理不同,一本旨在帮助你掌握该主题的书,除了介绍会扩展介绍性材料范围的更高级的主题之外,还必须重点关注实践方面。为了在我们开始提高技能之前热身,我们将在本章快速回顾一下我们已经知道的东西。对于之前很少或没有接触过该主题的雄心勃勃的新手(尽管如此,他决心从本书中获得最大的益处),这里是我们的建议:确保你不跳过本章的其余部分;相反,把它作为一个跳板,更深入地探索不熟悉的概念。必要时寻求外部资源。维基百科。然后跳回去。

在本章的剩余部分,我们将回顾以下内容:

  • 历史和定义
  • 什么不是机器学习?
  • 概念和术语
  • 机器学习的重要分支
  • 机器学习中的不同数据类型
  • 机器学习的应用
  • 机器学习面临的问题
  • 大多数机器学习项目中使用的元过程
  • 关于我们将在本书中使用的一些著名工具、API 和资源的信息

机器学习——历史和定义

很难给出一个准确的历史,但是我们今天使用的机器学习的定义早在 19 世纪 60 年代就有了。在勒内·笛卡尔关于方法的论述中,他提到自动机并说:

因为我们可以很容易地理解一台机器的构成,使它能够说话,甚至对作用于它的有形的动作发出一些反应,从而使它的器官发生变化;例如,如果触摸某个特定部位,它可能会问我们想对它说什么;如果在另一个地方,它可能会惊叫说它受到了伤害,等等。

注意

www . earlymoderntexts . com/assets/pdf/Descartes 1637 . pdf

www . Marxists . org/reference/archive/Descartes/1635/discourse-method . htm

艾伦·图灵在他的著名出版物计算机械和智能中,通过提出“机器能思考吗?”这个问题,给出了对机器学习目标的基本见解。

注意

csmt.uchicago.edu/annotations/turing.htm

www.csee.umbc.edu/courses/471/papers/turing.pdf

亚瑟·塞缪尔在 1959 年写道,“机器学习是一个研究领域,它赋予计算机学习的能力,而不需要明确的编程。”。

Tom Mitchell 最近对机器学习给出了更准确的定义:“如果一个计算机程序在 T 上的性能(由 P 测量)随着经验 E 的增加而提高,则称该程序在某些任务 T 和某些性能测量 P 方面从经验 E 中学习。”

机器学习与几个领域有关系:

  • 统计:它使用数据采样、估计、假设检验、学习理论和基于统计的建模等元素
  • 算法和计算:它使用了基础计算机科学中的搜索、遍历、并行化、分布式计算等基本概念
  • 数据库和知识发现:以各种格式存储、检索和访问信息的能力
  • 模式识别:对于来说,它有能力从数据中发现有趣的模式,进行探索、可视化和预测
  • 人工智能:虽然它被认为是人工智能的一个分支,但是它也和其他分支有关系,比如启发式、最优化、进化计算等等

什么不是机器学习?

重要的是要认识到与机器学习有共同联系的领域,但它们本身不能被视为机器学习的一部分。一些学科可能会或多或少地重叠,但机器学习的基本原理是非常不同的:

  • 商业智能(BI)和报告:报告关键绩效指标 ( KPI 的),查询 OLAP 进行切片、切块和钻取数据,仪表板等等,这些构成了 BI 的中心组件,不是机器学习。
  • 存储和 ETL :数据存储和 ETL 是任何机器学习过程中的关键元素,但是,它们本身并不具备机器学习的资格。
  • 信息检索、搜索和查询:基于构成信息检索基础的搜索标准或索引来检索数据或文档的能力,并不是真正的机器学习。许多形式的机器学习,如半监督学习,可以依赖于搜索相似的数据进行建模,但这并不意味着搜索是机器学习。
  • 知识表示和推理:表示用于执行复杂任务的知识,如本体、专家系统和语义网,不符合机器学习的条件。

机器学习——概念和术语

在本节中,我们将描述机器学习中通常使用的不同概念和术语:

  • 数据或数据集:机器学习的基础依赖于对数据的理解。数据或数据集通常是指用于机器学习的结构化或非结构化格式的可用内容。结构化数据集有特定的格式,非结构化数据集通常是一些自由流动的文本形式。数据可以以各种存储类型或格式提供。在结构化数据中,每个称为实例、示例或行的元素都遵循预定义的结构。数据也可以按大小分类:小型或中型数据有数百到数千个实例,而大型数据指的是大量数据,大多为数百万或数十亿,无法使用普通设备存储或访问,也无法放入此类设备的内存中。

  • 特性、属性、变量或维度:如前所述,在结构化数据集中,有预定义的元素,它们有自己的语义和数据类型,这些元素被称为特性、属性、度量、指示器、变量或维度。

  • 数据类型:早先定义的特征在很多机器学习算法或技术中需要某种形式的键入。最常用的数据类型如下:

    • 分类或名义:这表示数据集中存在定义明确的类别或值。比如眼睛颜色——黑色、蓝色、棕色、绿色、灰色;文档内容类型—文本、图像、视频。
    • 连续或数值:表示数据字段的数值性质。例如,通过浴室秤测量的一个人的体重,从传感器读取的温度,或者信用卡账户上每月的美元余额。
    • 序数:表示可以按某种方式排序的数据。比如服装尺码——小号、中号、大号;拳击重量级:重量级、次重量级、中量级、轻量级和次重量级。
  • 目标或标签:数据集中的一个特征或一组特征,用于从训练数据中学习和在未知数据集中进行预测,称为目标或标签。术语“基本事实”也用于某些领域。标签可以具有前面指定的任何形式,即分类的、连续的或顺序的。

  • 机器学习模型:每一个机器学习算法,基于它从数据集学到的东西,保持它的学习状态,用于预测或洞察未来或看不见的数据。这被称为机器学习模型。

  • 采样:数据采样是机器学习中必不可少的一步。抽样意味着从人口中选择一个子集的例子,目的是将(较小)样本中的行为视为(较大)人口行为的代表。为了使样本能够代表总体,在选择样本时必须小心。通常,群体由共享问题域中感兴趣的属性的每个对象组成,例如,所有有资格在大选中投票的人,或未来四年中所有潜在的汽车拥有者。由于通常禁止(或不可能)收集群体中所有对象的数据,因此选择一个精心挑选的子集进行分析。抽样过程中的一个重要考虑因素是样本相对于总体是无偏的。以下是基于概率的抽样类型:

    • 均匀随机抽样:这是指对均匀分布的总体进行抽样,即每个对象被选中的概率相等。
    • 分层随机抽样:这是指当数据可以分为多个类别时使用的抽样方法。在这种情况下,为了确保所有类别都在样本中得到代表,根据这些分类将总体划分为不同的阶层,并按照该阶层在总体中所占的比例对每个阶层进行抽样。当不同类别的人口密度不同时,分层抽样是常见的,用相同的统计功效比较这些类别是很重要的。当已知不同的人口统计群体以显著不同的方式投票时,政治投票通常涉及分层抽样。随机样本中每个群体的不成比例的代表性可能会导致投票结果出现较大误差。当我们控制人口统计时,我们可以避免对其他群体中的大多数进行过采样。
      *** 整群抽样:在被研究的人群中有时会存在自然群体,每个群体都代表整个人群。一个例子是跨越许多地理区域的数据。在整群抽样中,您从这些组中随机抽取一个子集,然后从每个组中随机抽取一个样本来构建完整的数据样本。这种抽样可以降低数据收集的成本,而不损害总体分布的保真度。* 系统抽样:当抽样框架中存在某种顺序时,使用系统抽样或区间抽样(有限的一组对象被视为总体,并作为抽样的数据来源,例如维基百科文章的语料库,按标题按字典顺序排列)。如果从一个随机对象开始选择样本,在选择下一个对象之前跳过恒定数量的对象,这被称为系统抽样。 k 的值计算为总体与样本大小的比值。**
  • 模型评估指标:评估模型的性能一般基于不同类型学习的不同评估指标。在分类上,一般是基于准确度、接收器工作特性 ( ROC )曲线、训练速度、内存需求、假阳性率等等,举几个例子(见第二章、现实世界监督学习实用方法)。在聚类中,发现的聚类的数量、内聚性、分离性等等形成了通用的度量标准(参见第三章、无监督机器学习技术)。在基于流的学习中,除了前面提到的标准指标,适应性、学习速度和对突然变化的鲁棒性是评估学习者表现的一些常规指标(参见第五章、实时流机器学习)。

为了说明这些概念,我们给出了一个常用的样本天气数据集形式的具体示例。该数据给出了一组天气条件和一个标签,该标签指示受试者是否决定在当天打网球:

**@relation weather**

**@attribute outlook {sunny, overcast, rainy}**
**@attribute temperature numeric**
**@attribute humidity numeric**
**@attribute windy {TRUE, FALSE}**
**@attribute play {yes, no}**

**@data**
**sunny,85,85,FALSE,no**
**sunny,80,90,TRUE,no**
**overcast,83,86,FALSE,yes**
**rainy,70,96,FALSE,yes**
**rainy,68,80,FALSE,yes**
**rainy,65,70,TRUE,no**
**overcast,64,65,TRUE,yes**
**sunny,72,95,FALSE,no**
**sunny,69,70,FALSE,yes**
**rainy,75,80,FALSE,yes**
**sunny,75,70,TRUE,yes**
**overcast,72,90,TRUE,yes**
**overcast,81,75,FALSE,yes**
**rainy,71,91,TRUE,no** 

数据集的格式为 ARFF ( 属性关系文件格式)文件。它由一个标题和数据标签后的实际逗号分隔数据组成,标题给出了关于特征或属性的信息及其数据类型。数据集有五个特征,分别是outlooktemperaturehumiditywindyplay。特征outlookwindy是分类特征,而humiditytemperature是连续的。特征play是目标并且是明确的。

**

机器学习——类型和子类型

我们现在将探索机器学习的不同子类型或分支。尽管下面的列表并不全面,但它涵盖了最常见的类型:

  • Supervised learning: This is the most popular branch of machine learning, which is about learning from labeled data. If the data type of the label is categorical, it becomes a classification problem, and if numeric, it is known as a regression problem. For example, if the goal of using of the dataset is the detection of fraud, which has categorical values of either true or false, we are dealing with a classification problem. If, on the other hand, the target is to predict the best price to list the sale of a home, which is a numeric dollar value, the problem is one of regression. The following figure illustrates labeled data that warrants the use of classification techniques, such as logistic regression that is suitable for linearly separable data, that is, when there exists a line that can cleanly separate the two classes. For higher dimensional data that may be linearly separable, one speaks of a separating hyperplane:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    线性可分数据

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    不可线性分离的数据集示例。

    这类问题需要分类技术,如支持向量机。

  • Unsupervised learning: Understanding the data and exploring it for building machine learning models when the labels are not given is called unsupervised learning. Clustering, manifold learning, and outlier detection are techniques that are covered under this topic, which are dealt with in detail in Chapter 3, Unsupervised Machine Learning Techniques. Examples of problems that require unsupervised learning are many. Grouping customers according to their purchasing behavior is one example. In the case of biological data, tissues samples can be clustered based on similar gene expression values using unsupervised learning techniques.

    下图显示了具有固有结构的数据,使用无监督学习技术(如 k-means)可以将这些数据显示为不同的聚类:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    数据中的聚类

    使用不同的技术来检测全局异常值(相对于整个数据集异常的示例)和局部异常值(与其邻域不匹配的示例)。在下图中,针对双要素数据集说明了局部异常值和全局异常值的概念:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    局部和全局异常值

  • 半监督学习:当数据集只有一些已标记的数据和大量未标记的数据时,从这样的数据集学习称为半监督学习。例如,当以检测欺诈为目标处理金融数据时,可能有大量未标记的数据,而只有少量已知的欺诈和非欺诈交易。在这种情况下,可以应用半监督学习。

  • 图挖掘:挖掘以图结构表示的数据被称为图挖掘。它是不同生物信息学、web 挖掘和社区挖掘应用中的社会网络分析和结构分析的基础。

  • 概率图建模和推理:学习和利用特征之间存在的条件依赖结构,表示为基于图的模型,属于概率图建模的分支。贝叶斯网络和马尔可夫随机场就是两类这样的模型。

  • 时间序列预测:这是一种学习形式,其中数据具有独特的时间行为,并且与时间的关系被建模。一个常见的例子是在金融预测中,某个部门的股票表现可能是预测模型的目标。

  • 关联分析:这是的一种学习形式,其中数据以项目集或购物篮的形式存在,并且关联规则被建模以探索和预测项目之间的关系。关联分析中的一个常见示例是了解顾客在逛杂货店时购买的最常见商品之间的关系。

  • 强化学习:这是一种学习形式,机器根据从环境中收到的奖励或惩罚形式的反馈,学习最大化性能。最近一个著名的使用强化学习和其他技术的例子是 AlphaGo,由谷歌开发的机器在 2016 年 3 月决定性地击败了世界围棋冠军 Lee Sedol。使用奖励和惩罚方案,该模型首先在监督学习阶段对数百万个棋盘位置进行训练,然后在强化学习阶段自我发挥,最终变得足够好,以战胜最佳人类玩家。

    注意

    ??www。大西洋。com/technology/archive/2016/03/the-invisible-opposite/475611/

    gogameguru.com/i/2016/03/deepmind-mastering-go.pdf

  • 流学习或增量学习:实时或伪实时从流数据中以有监督、无监督或半监督的方式学习称为流或增量学习。从不同类型的工业系统中学习传感器的行为以便分类为正常和异常是需要实时反馈和实时检测的应用。

机器学习中使用的数据集

为了从数据中学习,我们必须能够理解并管理所有形式的数据。数据来自许多不同的来源,因此,数据集在结构上可能差异很大,或者几乎没有或根本没有结构。在这一节中,我们将介绍数据集的高级分类以及常见的示例。

根据数据集的结构或缺乏结构,数据集可分为以下几类:

  • 结构化数据:具有结构化数据的数据集更适合用作大多数机器学习算法的输入。数据是记录或行的形式,遵循众所周知的格式,其特征是表格中的列或由分隔符或标记分隔的字段。记录或实例之间没有明确的关系。数据集主要存在于平面文件或关系数据库中。下图所示的银行金融交易记录就是一个结构化数据的例子:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    带有欺诈标签的金融卡交易数据

  • 交易或市场数据:这是一种特殊形式的结构化数据,其中每个条目对应一组项目。市场数据集的例子是不同客户购买的杂货物品或客户观看的电影的列表,如下表所示:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    从杂货店购买的商品的市场数据集

  • Unstructured data : Unstructured data is normally not available in well-known formats, unlike structured data. Text data, image, and video data are different formats of unstructured data. Usually, a transformation of some form is needed to extract features from these forms of data into a structured dataset so that traditional machine learn Ing algorithms can be applied.外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    The sample text data has no recognizable structure, so it is unstructured. Separating spam from normal mail is a binary classification problem. Here, true affirmation (spam) and true negation (ham) are distinguished by their tags, which are the second tag in each data instance. Spam SMS collection data set (UCI machine learning library), source: Tiago A. Almeida, Federal University of San Carlos.

  • Sequential data: Sequential data have an explicit notion of “order” to them. The order can be some relationship between features and a time variable in time series data, or it can be symbols repeating in some form in genomic datasets. Two examples of sequential data are weather data and genomic sequence data. The following figure shows the relationship between time and the sensor level for weather:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    来自传感器数据的时间序列

    考虑三个基因组序列以显示序列CGGGTTTGAAAGTGGTG在所有三个基因组序列中的重复:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    作为符号序列的 DNA 基因组序列。

  • 图形数据:图形数据的特点是数据中实体之间存在关系形成图形结构。图表数据集可以是结构化记录格式或非结构化格式。通常,必须从数据集中挖掘图形关系。保险领域的索赔可以被认为是结构化的记录,其中包含与索赔人通过地址、电话号码等相关的相关索赔细节。这可以在图形结构中查看。以万维网为例,我们有包含链接的非结构化数据的可用网页,以及可以使用 Web 链接构建的网页之间的关系图,产生了当今最广泛挖掘的一些图数据集:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    保险索赔数据,转换成图形结构,显示车辆、司机、保单和地址之间的关系

机器学习应用

鉴于机器学习在人类努力的不同领域中的使用迅速增长,任何列出不同行业中使用某种形式的机器学习的典型应用的尝试必然是不完整的。然而,在本节中,我们按领域和所采用的学习类型列出了一组广泛的机器学习应用:

|

领域/行业

|

应用程序

|

机器学习类型

|
| — | — | — |
| 金融的 | 信用风险评分、欺诈检测和反洗钱 | 监督、非监督、图形模型、时间序列和流学习 |
| 网 | 在线活动、健康监测和广告定位 | 有监督的,无监督的,半监督的 |
| 卫生保健 | 循证医学、流行病学监测、药物事件预测和索赔欺诈检测 | 监督、非监督、图形模型、时间序列和流学习 |
| 物联网 ( 物联网) | 网络安全、智能道路和传感器健康监控 | 监督、非监督、半监督和流学习 |
| 环境 | 天气预报、污染建模和水质测量 | 时间序列、监督、非监督、半监督和流学习 |
| 零售 | 库存、客户管理和建议、布局和预测 | 时间序列、监督、非监督、半监督和流学习 |

机器学习的应用

机器学习中的实际问题

在处理需要机器学习的问题时,有必要了解约束的性质和潜在的次优条件。对这些问题的性质、其存在的影响以及处理它们的方法的理解将在接下来的章节中的讨论中进行。在此,我们简要介绍一下我们面临的实际问题:

  • 数据质量和噪声:缺失值、重复值、由于人为或仪器记录错误导致的不正确值以及不正确的格式是在建立机器学习模型时要考虑的一些重要问题。不解决数据质量问题会导致模型不正确或不完整。在下一章中,我们将强调其中的一些问题,以及通过数据清理来克服这些问题的一些策略。

  • 不平衡数据集:在许多真实世界的数据集中,训练数据中的标签之间存在不平衡。数据集中的这种不平衡影响了学习的选择、选择算法的过程、模型评估和验证。如果没有采用正确的技术,模型可能会出现很大的偏差,并且学习是无效的。在接下来的几章中,我们将详细介绍使用元学习过程的各种技术,例如成本敏感学习、集成学习、异常值检测等等,这些技术都可以在这些情况下使用。

  • 数据量、速度和可扩展性:通常,大量数据以原始形式或高速实时流数据的形式存在。从整个数据中学习变得不可行,这或者是由于算法固有的约束,或者是硬件限制,或者是它们的组合。为了减少数据集的大小以适应可用的资源,必须进行数据采样。采样有多种方式,每种采样方式都会引入偏差。针对样本偏差对模型进行验证必须采用各种技术,如分层抽样、改变样本大小和增加不同组的实验规模。使用大数据机器学习也可以克服体积和采样偏差。

  • 过拟合:预测模型的一个核心问题是模型不够一般化,过于适合给定的训练数据*。这导致模型在应用于看不见的数据时表现不佳。在后面的章节中描述了各种技术来克服这些问题。*

  • 维度的诅咒:当处理高维数据,即具有大量特征的数据集时,机器学习算法的可扩展性成为一个严重的问题。向数据添加更多特征的一个问题是它引入了稀疏性,也就是说,现在平均每单位特征空间体积的数据点更少,除非特征数量的增加伴随着训练样本数量的指数增加。这可能会影响许多方法的性能,例如基于距离的算法。添加更多的功能也会降低学习者的预测能力,如下图所示。在这种情况下,需要更合适的算法,或者必须降低数据的维数。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传分类学习中的维数灾难,增加更多的特征会降低分类器的性能

机器学习——角色和流程

任何将机器学习应用于大型问题的努力都需要许多角色的协作,每个角色都遵循一套为严谨、高效和稳健而设计的系统流程。以下角色和流程确保从一开始就明确定义了工作目标,并在数据分析、数据采样、模型选择、部署和性能评估中采用了正确的方法,所有这些都是以一致且可重复的方式进行分析的综合框架的一部分。

角色

参与者在每个步骤中扮演特定的角色。这些职责包含在以下四个角色中:

  • 业务领域专家:具有问题领域知识的主题事务专家
  • 数据工程师:参与数据的收集、转换和清理
  • 项目经理:过程顺利进行的监督者
  • 数据科学家或机器学习专家:负责应用描述性或预测性分析技术

流程

CRISP ( 跨行业标准流程)是一个众所周知的用于数据挖掘的高级流程模型,它定义了分析流程。在这一节中,我们为 CRISP 流程添加了一些我们自己的扩展,使其更加全面,更适合使用机器学习进行分析。下图展示了整个迭代过程。我们将在本节详细讨论该过程的每个步骤。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 识别业务问题:理解项目或流程的目标和最终目标是第一步。这通常由业务领域专家与项目经理和机器学习专家共同完成。在数据可用性、格式、规范、收集、ROI、商业价值、可交付成果方面的最终目标是什么?所有这些问题都将在流程的这个阶段进行讨论。清楚地确定目标,并在可能的情况下用可量化的术语确定*,例如节省的金额、发现预定义数量的异常或聚类,或者预测不超过一定数量的误报,等等,这是此阶段的一个重要目标。*
  • 机器学习映射:下一步是将业务问题映射到上一节讨论的一个或多个机器学习类型。这一步一般由机器学习专家来完成。在其中,我们决定我们是否应该只使用一种学习形式(例如,监督的、非监督的、半监督的),或者多种形式的混合是否更适合这个项目。
  • 数据收集:获取约定格式和规格的原始数据,然后进行处理。这一步通常由数据工程师执行,可能需要处理一些基本的 ETL 步骤。
  • 数据质量分析:在这一步中,我们对数据进行缺失值、重复值等分析,对分类和连续类型进行基本的统计分析,以及类似的任务来评估数据的质量。数据工程师和数据科学家可以一起执行任务。
  • 数据采样和转换:确定是否需要将数据划分成样本,并执行各种大小的数据采样,用于训练、验证或测试——这些是在该步骤中执行的任务。它包括采用不同的采样技术,例如训练数据集的过采样和随机采样,以便通过算法进行有效的学习,特别是当数据在标签中高度不平衡时。数据科学家参与了这项任务。
  • 特征分析和选择:这是一个迭代过程,在许多任务中与建模相结合,以确保对特征的鉴别值或有效性进行分析。它可能涉及在建模过程之前查找新要素、转换现有要素、处理前面提到的数据质量问题、选择要素子集等等。数据科学家通常会被分配这项任务。
  • 机器学习建模:这是一个基于数据特征和学习类型的不同算法的迭代过程。它涉及不同的步骤,例如生成假设、选择算法、调整参数,以及从评估中获得结果以找到满足标准的模型。数据科学家执行这项任务。
  • 模型评估:虽然这一步在某种程度上与前面的所有步骤相关,但它与业务理解阶段和机器学习映射阶段的联系更加紧密。评估标准必须以某种方式映射到业务问题或目标。每个问题/项目都有自己的目标,无论是提高真阳性、减少假阳性、发现异常集群或行为,还是分析不同集群的数据。基于学习技术,使用不同的技术来隐式或显式地测量这些目标。数据科学家和业务领域专家通常会参与这一步。
  • 模型选择和部署:根据评估标准,选择一个或多个模型——独立的或作为一个集合。模型的部署通常需要解决几个问题:运行时可伸缩性度量、环境的执行规范、审计信息等等。基于学习获取关键参数的审计信息是该流程的重要组成部分。它确保可以跟踪和比较模型性能,以检查模型的退化和老化。保存关键信息(如培训数据量、日期、数据质量分析等)与学习类型无关。监督学习可能涉及保存混淆矩阵、真阳性率、假阳性率、ROC 曲线下面积、精确度、召回率、错误率等等。无监督学习可能涉及聚类或离群值评估结果、聚类统计等。这是数据科学家和项目经理的领域。
  • 模型性能监控:这个任务包括定期跟踪模型的性能,按照标准进行评估,比如真阳性率、假阳性率、性能速度、内存分配等等。必须测量这些度量相对于训练模型性能的连续评估之间的度量的偏差。随着时间的推移,偏差和偏差中的容差将给出重复该过程或重新调整模型的见解。数据科学家负责这一阶段。

从上图可以看出,整个过程是一个迭代过程。在部署了一个模型或一组模型之后,业务和环境因素可能会以影响解决方案性能的方式发生变化,这需要重新评估业务目标和成功标准。这又把我们带回到循环中。

机器学习——工具和数据集

掌握成功完成机器学习中任何规模或复杂程度的项目所必需的技术的一个可靠方法是,通过对广泛使用的数据集进行实验来熟悉可用的工具和框架,如下一章所示。下面列出了对最流行的 Java 框架的简短调查。后面的章节将包括您将使用以下工具进行的实验:

  • RapidMiner :领先的分析平台,RapidMiner 提供多种产品,包括 Studio,一个用于流程的可视化设计框架,一个通过共享数据源、流程、和实践来促进协作环境的产品,以及 Radoop,一个支持在 Hadoop 生态系统上部署和执行的翻译系统。RapidMiner Cloud 提供了基于云的存储库和按需计算能力。

  • Weka :这是一个全面的开源 Java 工具集,用于数据挖掘和构建机器学习应用程序,拥有自己的公开可用数据集集合。

  • Knime : KNIME(我们被敦促用不发音的 k 来发音,如“naime”)分析平台是用 Java 编写的,并提供一个集成的工具集、一组丰富的算法和一个可视化的工作流来进行分析,而不需要标准的编程语言,如 Java、Python 和 r。然而,人们可以用 Java 和其他语言编写脚本来实现 Knime 中本地不可用的功能。

  • 这是一个用于 NLP 的 Java 库。它提供了文档分类、序列标记、主题建模和其他基于文本的机器学习应用,以及用于任务管道的 API。

  • Elki:这款是一款面向研究的 Java 软件,主要致力于使用无监督的算法进行数据挖掘。它使用提高多维数据访问性能的数据索引结构来实现高性能和可伸缩性。

  • JCLAL :这是一个用于主动学习的 Java 类库,是一个用于开发主动学习方法的开源框架,是处理从有标签和无标签数据混合中学习预测模型的领域之一(半监督学习是另一个领域)。

  • KEEL :这是一个用 Java 编写的开源软件,用于设计实验,主要是适合于实现基于进化学习和软计算的技术来解决数据挖掘问题。

  • DeepLearning4J :这个是一个针对 Java 和 Scala 的分布式深度学习库。DeepLearning4J 集成了 Spark 和 Hadoop。异常检测和推荐系统是非常适合通过深度学习技术生成的模型的用例。

  • Spark-MLlib :(包含在 Apache Spark 发行版中)MLlib 是 Spark 中包含的主要用 Scala 和 Java 编写的机器学习库。自从 Spark 中引入数据帧后,我们推荐使用写在数据帧之上的spark.ml包,而不是原来的spark.mllib包。MLlib 包括对分析过程所有阶段的支持,包括统计方法、分类和回归算法、聚类、降维、特征提取、模型评估和 PMML 支持等。MLlib 的另一个方面是支持使用管道或工作流。除了 Java 之外,还可以从 R、Scala 和 Python 访问 MLlib。

  • H2O : H2O 是一个基于 Java 的库,除了 Java 之外,还支持 R 和 Python 中的 API。H2O 也可以在 Spark 上运行自己的应用程序“苏打水”。H2O 流是一个基于网络的交互环境,在一个类似笔记本的文档中包含可执行单元和富媒体。

  • MOA/SAMOA :瞄准机器从数据流学习使用流处理平台的可插拔接口,在撰写本文时,SAMOA 是一个 Apache 孵化器项目。

  • Neo4j : Neo4j 是一个用 Java 和 Scala 实现的开源 NoSQL 图形数据库。正如我们将在后面的章节中看到的,图分析有各种各样的用例,包括配对、路由、社交网络、网络管理等等。Neo4j 支持完全 ACID 事务。

  • GraphX :这是包含在 Apache Spark 发行版中的。GraphX 是伴随 Spark 的图形库。该 API 广泛支持查看和操作图形结构,以及一些图形算法,如 PageRank、连接组件和三角形计数。

  • OpenMarkov:OpenMarkov 是编辑和评估概率图形模型 ( PGM )的工具。它包括一个用于交互式学习的 GUI。

  • Smile 是 JVM 的一个机器学习平台,拥有大量的算法库。它的功能包括 NLP、流形学习、关联规则、遗传算法和一套通用的可视化工具。

数据集

许多公开可用的数据集极大地帮助了数据科学的研究和学习。下一节中列出的几个方法是众所周知的,多年来被许多研究人员用来对他们的方法进行基准测试。新的数据集不断出现,为不同的建模者和用户群体提供服务。大多数是来自不同领域的真实世界数据集。本卷中的练习将使用该列表中的几个数据集。

  • 加州大学欧文分校(UCI)数据库:由加州大学欧文分校的机器学习和智能系统中心维护,UCI 数据库是大约 350 个不同大小的数据集的目录,从十几个到四千多万个记录和多达三百万个属性,混合了多元文本、时间序列和其他数据类型。(archive.ics.uci.edu/ml/index.html)
  • Tunedit😦【http://tunedit.org/】??)这为 Tunedit 提供了挑战和工具来进行可重复的数据挖掘实验。它还提供了一个举办数据竞赛的平台。
  • Mldata.org😦mldata.org/)由 PASCAL 2 组织支持,该组织汇集了欧洲和世界各地的研究人员和学生,mldata.org 主要是一个用户贡献数据集的存储库,鼓励研究人员群体之间共享数据和解决方案,以帮助实现创建可复制解决方案的目标。
  • KDD 挑战赛数据集😦www.kdnuggets.com/datasets/index.html)KD nuggets 聚集了多个数据集存储库,跨越了各种各样的领域。
  • ka ggle:ka ggle 号称数据科学的之家,是数据科学竞赛的领先平台,也是过去竞赛数据集和用户提交数据集的存储库。

总结

尽管机器学习是一个相对年轻的领域,但它已经取得了令人印象深刻的成功。随着 Java 资源的无处不在、Java 的平台独立性以及 Java 中 ML 框架的选择,使用 Java 进行机器学习的高超技能在当今市场上是非常受欢迎的资产。

机器学习已经以某种形式存在了很长时间——如果只是在思想家的想象中,在开始的时候。然而,最近的发展对我们日常生活的许多领域产生了根本性的影响。机器学习与统计学、人工智能和其他几个相关领域有许多共同之处。尽管一些数据管理、商业智能和知识表示系统也可能在它们中的每一个中与数据的中心角色相关,但是它们通常不与机器学习领域中体现的从数据学习的原则相关联。

任何关于机器学习的讨论都会假设理解什么是数据,以及我们关心的是什么数据类型。它们是绝对的、连续的还是有序的?有哪些数据特征?目标是什么,哪些是预测指标?可以使用哪种抽样方法——均匀随机、分层随机、整群或系统抽样?型号是什么?我们看到了一个包含 ARFF 格式的分类和连续要素的天气数据集示例。

机器学习的类型包括监督学习,当有标签数据时最常见,当没有标签数据时无监督,当两者混合时半监督。接下来的章节将详细介绍这些,以及图挖掘、概率图建模、深度学习、流学习和大数据学习。

数据有多种形式:结构化、非结构化、事务性、顺序性和图表。我们将在本书后面的练习中使用不同结构的数据。

领域和不同种类的机器学习应用程序的列表不断增长。这篇综述介绍了最活跃的领域和应用。

理解并有效处理实际问题,如噪音数据、倾斜数据集、过度拟合、数据量和维数灾难,是项目成功的关键,也是每个项目面临独特挑战的原因。

使用机器学习进行分析是一项协作工作,涉及多个角色和明确定义的流程。为了获得一致且可重复的结果,采用本文概述的增强型 CRISP 方法至关重要—从了解业务问题到数据质量分析、建模和模型评估,最后到模型性能监控。

数据科学的从业者有幸拥有丰富且不断增长的公众可用数据集目录,以及越来越多的 Java 和其他语言的 ML 框架和工具。在接下来的章节中,你将被介绍几个数据集、API 和框架,以及先进的概念和技术,使你具备掌握机器学习所需的一切。

准备好了吗?向前冲。***

二、现实世界监督学习的实用方法

从带有标记目标或标签的观察中学习的能力,通常是为了对未知数据做出预测,被称为监督机器学习。如果目标是类别,则问题是一个分类的,如果是数值,则称为回归。实际上,我们尝试的是推断将数据映射到目标的函数。有监督的机器学习被广泛用于各种各样的机器学习应用中,只要有标记的数据可用或者可以手动添加标记。

监督机器学习的核心假设是,从训练中使用的数据中学习到的模式将在尚未看到的数据中表现出来。

在本章中,我们将讨论在继续训练模型之前用于探索、分析和预处理数据的步骤。然后我们将介绍不同的建模技术,从简单的线性模型到复杂的集合模型。我们将展示不同的评估指标和验证标准,让我们能够比较模型的性能。一些讨论伴随着简短的数学解释,这将有助于更精确地表达概念,并激起更倾向于数学的读者的兴趣。在这一章中,我们将把重点放在作为监督学习的一种方法的分类上,但是这些原理适用于监督学习的两个广泛应用——分类和回归。

从本章开始,我们将介绍一些工具来帮助说明如何使用每章中介绍的概念来解决机器学习问题。没有什么比将新学到的知识直接应用到现实世界的问题中更能加深理解的了。在这个过程中,我们通常会获得比被动吸收理论更清晰、更相关的理解。如果学习新工具的机会是学习的一部分,那就更好了!为了实现这一目标,我们将引入大多数数据科学从业者熟悉的分类数据集,并使用它来解决分类问题,同时强调指导解决方案的流程和方法。

在本章中,我们将使用 RapidMiner 和 Weka 来构建我们从一个众所周知的数据集学习的过程。网站上提供了工作流和代码,供读者下载、执行和修改。

RapidMiner 是一个基于 GUI 的 Java 框架,它使得从工具内部进行端到端的数据科学项目变得非常容易。它有一个简单的拖放界面来构建流程工作流,以摄取和清理数据、探索和转换功能、使用各种机器学习算法执行培训、进行验证和模型评估、将您的最佳模型应用于测试数据等。这是一个很好的工具,可以学习如何使流程的各个部分协同工作并快速产生结果。Weka 是另一个基于 GUI 的框架,它有一个 Java API,我们将用它来说明执行分析所需的更多编码。

我们将在本章中讨论的主要话题是:

  • 数据质量分析
  • 描述性数据分析
  • 可视化分析
  • 数据转换和预处理
  • 数据采样
  • 特征相关性分析和降维
  • 模型结构
  • 模型评估、评价和比较
  • 详细案例研究——马绞痛分类

形式描述和符号

我们想为监督学习中使用的术语介绍一些符号和正式定义。如果没有特别说明,我们将在本书的其余部分遵循这一符号,并在遇到新概念时适当地扩展它。该符号将提供一种精确和一致的语言来描述艺术术语,并能够更快速和有效地理解主题。

  • 实例:每一个观察都是一个数据实例。通常变量 X 用于表示输入空间。每个数据实例有许多变量(也称为特征),被称为维度为 dx (粗体向量表示),其中 d 表示每个实例中变量或特征或属性的数量。这些特征表示为x=(x[1],x [2] ,…x[d])^T,其中每一个值都是与特征值相对应的数值时的标量。

  • 标签:标签(也叫目标)是感兴趣的因变量,一般用 y 表示。在分类中,标签的值是问题域中明确定义的类别;它们不必是数字或是可以订购的东西。在回归中,标签是实值的。

  • Binary classification, where the target takes only two values, it is mathematically represented as:

    y ∈ {1,–1 }

  • 回归,其中目标可以取实数域内的任意值,表示为:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 数据集:一般来说,数据集用 D 表示,由单个数据实例及其标签组成。实例通常表示为 set { x [1] ,x[2]…x[n]}。每个实例的标签表示为集合y= {y[1],y [2] ,…y [n] }。整个被标记的数据集被表示为集合中的成对元素,由D= {(x[1], y [1] ),( x [2] ,y[2])……(x[n],y

数据质量分析

从质量差的数据中学到的东西是有限的。质量问题可能包括噪音数据、缺失值和标签错误等因素。因此,第一步是了解我们面前的数据,以便我们可以确定如何解决任何数据质量问题。异常值仅仅是噪音还是群体中有趣异常的指示?对于所有要素,是否应该以相同的方式处理缺失数据?稀疏特征应该如何处理?这些和类似的问题一开始就出现了。

如果幸运的话,我们会收到一个干净的、准确标记的数据集,并附有描述数据元素、数据谱系以及数据是否已经进行了任何转换的文档。这样的数据集可以使用数据采样一节中描述的方法分成训练样本、验证样本和测试样本。但是,如果数据没有经过清理,不适合进行分区,那么在开始采样之前,我们必须首先对数据进行原则性的准备。(对数据进行分区的重要性将在本章后面专门讨论定型、验证和测试集的部分中解释)。

在以下部分中,我们将讨论在分析要素之前所需的数据质量分析和转换步骤。

描述性数据分析

应对完整的数据样本(包括训练、验证和测试)进行分析和总结,以获得以下特征。在数据还没有被划分为训练、验证和测试的情况下,数据转换的任务需要确保样本具有相似的特征和统计数据。这对于确保经过训练的模型能够对看不见的数据进行归纳至关重要,我们将在数据采样一节中了解到这一点。

基本标签分析

分析的第一步是了解标签在不同集合中的分布,以及在整个数据中的分布。这有助于确定,例如,目标变量的分布是否不平衡,如果是,是否在所有样本中是一致的。因此,第一步通常是找出每个类在训练和测试集中有多少个例子。

基本特征分析

下一步是计算每个特征的统计数据,例如

  • 唯一值的数量
  • 缺失值的数量:可能包括按不同缺失值替代项分组的计数(NA,null,?,以此类推)。
  • 对于分类:这跨特征类别计数,按标签类别跨特征类别计数,最常出现的类别(模式),按标签类别的模式,等等。
  • 对于数值型:最小值、最大值、中值、标准差、方差等。

特征分析提供了基本的见解,可以作为影响学习过程或算法选择的缺失值和噪声的有用指标。

可视化分析

数据的可视化是一个广泛的话题,它是机器学习和数据挖掘领域中一个不断发展的领域。我们将只讨论可视化的一些重要方面,这些方面有助于我们在实践中分析数据。

单变量特征分析

这里的目标是一次可视化一个与标签相关的特征。使用的技术如下:

分类特征

当问题是分类时,堆叠的条形图是显示标签中每个特征类别分布的简单方式。

连续特征

直方图和箱线图是连续特征的两种基本可视化技术。

直方图具有预定义的条柱,其宽度或者是固定的间隔,或者是基于用于分割全范围特征值的某种计算。然后,对落入每个容器中的数据实例的数量进行计数,并基于该计数调整容器的高度。存在直方图的变体,例如相对或基于频率的直方图、Pareto 直方图、二维直方图等等;每一个都是概念的细微变化,允许对特性有不同的理解。对于那些有兴趣了解这些变体的人来说,维基百科关于直方图的文章是一个很好的资源。

箱线图是数值特征的关键可视化技术,因为它们以百分点和异常值的形式显示分布。

多元特征分析

多元特征分析的理念是将多个特征可视化,以深入了解它们之间的关系。这里解释一些众所周知的情节。

  • 散点图:一种重要的技术,用于理解不同特征之间以及特征和标签之间的关系。通常,二维散点图在实践中使用,其中数字特征形成维度。数据点在某个假想轴上的排列显示出相关性,而数据点的分散显示出无相关性。在低维空间中识别聚类也是有用的。气泡图是散点图的变体,其中两个特征形成维度轴,第三个特征与数据点的大小成比例,该图呈现出“气泡”区域的外观。密度图表通过引入数据点颜色、背景颜色等来帮助可视化更多的特征,从而提供更多的见解。

  • 散点图矩阵:散点图矩阵是散点图的扩展,其中每个特征(和标签)的成对散点图被可视化。它提供了一种有效比较和执行高维数据多元分析的方法。

  • 平行图:在该可视化中,每个特征线性排列在 x 轴上,每个特征的值的范围形成了 y 轴。因此,每个数据元素都表示为一条线,每个特性的值位于平行轴上。类别标签(如果有)用于给线条着色。平行图有助于更好地理解有效分离数据的特征。离差图是平行图的变体,其中不是显示实际数据点,而是绘制平均值和标准偏差。安德鲁斯图是平行图的另一种变体,其中数据使用傅立叶级数进行转换,并且对应于每个的函数值被投影。

数据转换和预处理

在本节中,我们将讨论数据转换的广泛话题。数据转换的主要思想是获取输入数据,并以谨慎的方式对其进行转换,以便对其进行清理,从中提取最相关的信息,并将其转换为可用于进一步分析和学习的形式。在这些转换过程中,我们必须只使用设计好的方法,同时记住不要添加任何会影响数据完整性的偏见或工件。

特征构建

在某些数据集的情况下,我们需要从已经给定的特征中创建更多的特征。通常,某种形式的聚合是使用常见的聚合器(如平均值、总和、最小值或最大值)来创建附加要素。例如,在金融欺诈检测中,卡欺诈数据集通常包含账户在账户活跃的不同时间段内的交易行为。执行行为合成(例如通过捕获“一天内每个账户发生借记交易时的金额总和”)是向数据集添加新维度(基于现有要素构建)的要素构造示例。一般来说,设计增强数据预测能力的新功能需要领域知识和数据经验,使其成为一门艺术和科学。

处理缺失值

在真实世界的数据集中,许多要素通常会有缺失值。在某些情况下,它们因测量误差、记录失误或因各种情况无法获得而丢失;例如,个人可以选择不透露年龄或职业。为什么要关心缺失值呢?一种极端且不常见的处理方法是忽略那些缺少特征的记录,换句话说,只保留那些“完整”的例子。当丢失的要素在数据中普遍存在时,这种方法可能会大大减小数据集的大小。正如我们将在后面看到的,如果我们正在处理的系统是复杂的,数据集的大小可以为我们提供宝贵的优势。此外,即使在“不完整”的记录中,尽管存在缺失值,但只要我们使用适当的措施来处理问题,通常也有可以利用的预测值。另一方面,当数据本身的遗漏很严重时,一个可能会无意中丢弃关键信息,如在贷款申请中故意虚报或混淆信息,隐瞒可用于最终确定骨 fides 的信息。

可以说,学习过程中的一个重要步骤是采用一些系统化的方法来处理缺失值,并理解每个案例中决策的后果。有一些算法(如 nave Bayes)对缺失值不太敏感,但一般来说,在对数据进行任何形式的分析之前,最好将这些缺失值作为预处理步骤进行处理。以下是处理缺失值的一些方法。

  • 用均值和众数替换:当我们用连续值特征的均值替换该特征的缺失值时,新的均值显然保持不变。但是,如果平均值受到异常值的严重影响,更好的方法可能是在计算中剔除异常值后使用平均值,或者使用中位数或众数。同样,当某个要素在数据集中稀疏表示时,平均值可能没有意义。对于具有分类值的要素,用样本中出现频率最高的值替换缺失值是一种合理的选择。
  • 通过插补替换:当我们插补缺失值时,我们实际上是在构建特征的分类或回归模型,并根据记录中的其他特征进行预测,以便对缺失值进行分类或估计。
  • 最近邻插补:对于分类特征的缺失值,我们将所讨论的特征视为目标,并训练一个 KNN 模型,其中 k 为不同类别的已知数量。然后,该模型用于预测缺失值。(KNN 模型是非参数化的,它根据相邻数据实例的函数为“传入”数据实例赋值,该算法将在本章稍后讨论非线性模型时介绍)。
  • 基于回归的插补:在连续值变量的情况下,我们使用线性模型(如线性回归)来估计缺失数据,其原理与分类值相同。
  • 用户自定义插补:在许多情况下,最适合输入缺失值的值必须来自问题域。例如,7.0 的 pH 值是中性的,更高的是碱性的,更低的是酸性的。最有意义的可能是估算一个中性 pH 值,而不是平均值或中值,这种见解是用户定义估算的一个实例。同样,在用正常体温或静息心率替代的情况下——这些都是医学上的例子。

离群值

处理异常值需要大量的关注和分析。异常值可能是数据中的噪音或错误,也可能是特别感兴趣的异常行为。后一种情况在第三章、无监督机器学习技术中有深入的论述。这里,我们假设前一种情况,即领域专家确信这些值确实是第一种意义上的异常值,即需要适当处理的噪声或错误获取或记录的数据。

以下是检测数据异常值的不同技术

  • 四分位距(IQR) :四分位距是对数据可变性的度量,或者等同于统计离差。每个数字特征根据其在数据集中的值进行排序,然后有序集被分成四分位数。中值一般用来衡量集中趋势。IQR 用上下四分位数之间的差值 Q3-Q1 来衡量。异常值通常被认为是高于 Q3 + 1.5 * IQR 和低于 Q1 - 1.5 * IQR 的数据值。

  • 基于距离的方法:基于距离的方法的最基本形式使用k-最近邻 ( k-NN )和距离度量来给数据点评分。常用参数是 k-NN 中的值 k 和一个距离度量,例如欧几里德距离。距离最远的数据点被认为是异常值。有许多使用局部邻域、概率或其他因素的变体,这些都将在第三章、无监督机器学习技术中讨论。混合数据集既有分类特征又有数字特征,会扭曲基于距离的度量。

  • 基于密度的方法:基于密度的方法计算给定距离 D 内数据点的比例,如果比例小于指定阈值 p,则认为是离群点。参数 p 和 D 被认为是用户定义的值;适当选择这些值的挑战是在预处理阶段使用这些方法的主要障碍之一。

  • 特征的数学转换:对于非正态数据,比较的平均值会产生很大的误导,就像存在异常值的情况一样。非参数统计允许我们对高度倾斜的数据进行有意义的观察。在许多情况下,使用对数或平方根函数对这些值进行转换往往会使数据标准化,或者使它们更易于进行统计测试。这些变换极大地改变了要素分布的形状,例如,异常值越极端,对数变换的影响就越大。

  • 在机器学习模型中使用稳健的统计算法处理异常值:我们在下一节建模中讨论的许多分类算法都隐式或显式地处理异常值。作为元学习框架工作的 Bagging 和 Boosting 变体通常对异常值或噪声数据点具有弹性,并且可能不需要预处理步骤来处理它们。

  • 标准化:许多算法——基于距离的方法就是一个很好的例子——对特征的尺度非常敏感。预处理数字特征可确保所有数字特征都在正常范围内。这里给出了最著名的特征归一化技术:

    • 最小-最大归一化:在这种技术中,给定范围*【L,U】,通常为【0,1】*,每个具有值 x 的特征按照最小值和最大值 x [max] 和 x 进行归一化 使用公式:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
    • Z 分数归一化:在这种技术中,也称为标准化,特征值得到自动转换,使得平均值为 0,标准偏差为 1。 变换的技术如下:对于每个特征 f ,计算平均值( f )和标准差σ( f ),然后将值为 x 的特征变换为:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

离散化

许多算法只能处理类别值或名义值才有效,例如贝叶斯网络。在这种情况下,使用监督或非监督方法将数字特征离散化成类别就变得势在必行。讨论的一些技术有:

  • 宁滨离散化:这种技术也被称为等宽离散化。范围从值xmax 和xmin 的每个特征 f 的数据的整个范围被分成预定数量的等间隔的 k ,每个具有宽度外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。“分割点”或离散化间隔为:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 按频率离散化:这种技术也被称为等频率离散化。对特征进行排序,然后将整个数据离散成预定义的 k 区间,使得每个区间包含相同的比例。由于预定义的值 k ,通过宁滨离散化和通过频率离散化这两种技术都遭受信息损失。
  • 通过熵离散化:给定标签,在值以迭代方式变化的分裂点上计算熵,以便区间的箱尽可能纯净或有区别。参考特征评估技术章节,了解基于熵(信息增益)的理论和计算。

数据采样

接收到的数据集可能经常需要明智的采样,以便有效地从数据中学习。数据的特征以及建模练习的目标决定了是否需要采样,如果需要,如何进行采样。在我们开始从这些数据中学习之前,创建训练、验证和测试数据样本至关重要,如本节所述。

需要取样吗?

当数据集很大或有噪声,或偏向一种类型时,是否采样的问题就变得很重要。答案取决于各个方面,如数据集本身、用于选择模型的目标和评估标准,以及潜在的其他实际考虑因素。在某些情况下,算法在内存和空间方面存在可伸缩性问题,但在样本上却能有效地工作,这可以通过模型在回归或分类目标方面的表现来衡量。比如 SVM 在内存和训练次数上分别缩放为O(n2*)*和 O(n ³ ) 。在其他情况下,数据是如此不平衡,以至于许多算法不够健壮来处理这种倾斜。在文献中,旨在通过创建新的训练样本来重新平衡原始数据提取中的类别分布的步骤也被称为重采样

欠采样和过采样

数据集在类别分布中表现出明显的不平衡,可以说包含了一个明显的少数类别。通常,这个少数类是我们特别感兴趣的一组实例,正是因为它的成员出现在如此罕见的情况下。比如信用卡诈骗,只有不到 0.1%的数据属于诈骗。这种偏斜不利于学习;毕竟,当我们寻求最小化分类中的总误差时,我们给所有的类以同等的权重,而不管一个类与另一个类相比是否代表不足。在二元分类问题中,我们称少数类为正类,多数类为负类,这是我们在下面的讨论中将遵循的约定。

多数类欠采样是一种常用于解决数据偏斜的技术。以信用卡欺诈为例,我们可以从原始数据集中创建不同的训练样本,这样每个样本都有来自原始数据集中的所有欺诈案例,而非欺诈案例则以某种固定的比例分布在所有训练样本中。因此,在通过这种方法创建的给定训练集中,与原始倾斜数据集相比,多数类现在代表性不足,有效地平衡了类的分布。可以以这种方式创建具有比例为 1:20 到 1:50 的标记阳性和标记阴性实例的训练样本,但是必须注意所使用的阴性实例的样本应该具有与主数据集的数据统计和分布相似的特征。使用多个训练样本以及不同比例的正面和负面实例的原因是为了使任何可能存在的采样偏差变得明显。

或者,我们可以选择对少数类进行过采样。如前所述,我们创建多个样本,其中来自少数类的实例是通过从原始数据集中进行有替换或无替换的采样来选择的。在没有替换的情况下采样时,样本之间没有复制的实例。通过替换,可能会在多个样本中发现一些实例。在样本的这种初始播种之后,我们可以通过从每个样本中的少数类内进行替换的随机采样来产生更平衡的类分布,直到我们得到期望的正例与负例的比率。过采样可能易于过度拟合,因为由于重复值,分类决策边界往往变得更加具体。 SMOTE ( 合成少数过采样技术)是一种技术,通过在正类的相邻实例之间进行插值,在特征空间的空隙中创建合成数据点来缓解这个问题(引用【20】)。

分层抽样

创建样本,使得具有相似特征的数据在总体中以相同的比例出现,这被称为分层抽样。在多类分类中,如果有 N 个类,每个类都有一定的比例,则创建样本,使它们以与原始数据集中相同的比例代表每个类。一般来说,创建多个样本来训练和测试模型以验证抽样的偏差是一个很好的实践。

培训、验证和测试集

创建良好分类模型的圣杯是在一组高质量、有代表性的(训练数据)上进行训练,调整参数并找到有效的模型(验证数据),最后,通过模型在看不见的数据(测试数据)上的行为来评估模型的性能。

逻辑分组背后的中心思想是确保模型在训练期间没有见过的数据上得到验证或测试。否则,一个简单的“死记硬背的学习者”就能胜过算法。学习算法的泛化能力必须在不同于训练数据集但来自相同群体的数据集上进行评估(参考文献【11】)。在从训练中移除太多数据以增加验证和测试的预算之间的平衡可能导致模型遭受“拟合不足”,即没有足够的示例来构建有助于泛化的模式。另一方面,分配所有标记数据用于训练而不执行任何验证或测试的极端选择会导致“过度拟合”,即模型过于忠实地拟合示例,而不能足够好地概括。

通常,在大多数机器学习挑战和真实世界的客户问题中,预先给定一个训练集和测试集来评估模型的性能。在这些约定中,唯一的问题是如何验证和找到给定训练集的最有效的参数。在某些情况下,只给出带标签的数据集,您需要考虑训练集、验证集和测试集,以确保您的模型不会过拟合或欠拟合数据。

建模需要三个逻辑过程,因此需要三个逻辑数据集,即训练、验证和测试。训练数据集的目的是为学习算法提供带标签的数据以构建模型。验证集的目的是查看通过对验证集进行训练来评估的训练模型的参数的效果。最后,在训练集和验证集的组合上重新训练最佳参数或模型,以找到最佳模型,然后在盲测试集上测试该模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:培训、验证和测试数据以及如何使用它们

有两件事会影响学习或泛化能力:算法(及其参数)的选择和训练数据的数量。这种的概括能力可以通过包括预测误差在内的各种指标来评估。模型的未知误差或风险的总体估计由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,噪声是随机噪声, Var (G,n) 被称为方差误差,是对我们的假设或算法 (G) 在给定不同数据集的情况下易受影响程度的度量。外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传称为偏差误差,代表模型中的最佳算法(所有可能数据集的平均学习者)与最佳算法的距离。

如图图 2图 3 所示的学习曲线——其中绘制了训练和测试误差,保持算法及其参数不变或训练数据大小不变——给出了欠拟合或过拟合的指示。

在训练数据大小固定的情况下,不同的算法或者相同的算法选择不同的参数可以表现出不同的学习曲线。图 2 显示了基于偏差和方差给出两条不同学习曲线的相同数据量的两种算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:模型复杂度固定时的训练数据与错误率的关系,表示模型的不同选择。

算法或模型选择也会影响模型性能。需要调整更多参数的复杂算法可能会导致过度拟合,而参数较少的简单算法可能会拟合不足。当定型数据大小固定时,说明模型性能和复杂性的经典图如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 3:当训练数据大小固定时,在训练和测试数据上,模型复杂度与错误率的关系。

验证允许探索参数空间以找到最能概括的模型。正则化(将在线性模型中讨论)和验证是应该使用来防止过度拟合的两种机制。有时“k 倍交叉验证”过程用于验证,这涉及创建数据的 k 样本,并使用*(k–1)*进行训练,剩余的样本进行测试,重复 k 次以给出平均估计值。下图以五重交叉验证为例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 4:五重交叉验证。

之后的是一些常用的技术,用于执行数据采样、验证和学习:

  • 培训、验证和测试的随机分割 : 60,20,20。用 60%进行训练,用 20%进行验证,然后结合训练和验证数据集来训练一个最终模型,用于在剩余的 20%上进行测试。分割可以是随机进行的,基于时间,基于区域,等等。
  • 训练、交叉验证和测试:分成二对一的训练和测试,在训练集上使用交叉验证进行验证,三分之二的训练和三分之一的测试。可以随机地、基于时间、基于区域等等进行分割。
  • 训练和交叉验证:当训练集小时,不需要太多的参数调整,只进行模型选择。对整个数据集运行交叉验证,并通过对整个数据集的学习选择最佳模型。

特征相关性分析和降维

特征相关性和选择的目标是找到区别于目标变量的特征,并帮助降低数据的维度[1,2,3]。这主要通过改善维数灾难的影响和通过去除由不相关特征引起的噪声来提高模型性能。通过仔细评估删除和不删除特征的验证集上的模型,我们可以看到特征相关性的影响。由于对 k 特征的穷举搜索涉及 2 个^k–1 个集合(考虑 ^k 特征的所有组合,其中每个特征或者被保留或者被移除,不考虑不存在特征的退化情况),必须被评估的模型的相应数量可能变得令人望而却步,因此需要某种形式的启发式搜索技术。下面介绍这些技术中最常见的一些。

特征搜索技术

用于查找特征集的一些非常常见的搜索技术有:

  • 前进或爬坡:在此搜索中,一次添加一个功能,直到评估模块输出性能无进一步变化。
  • 向后搜索:从整个集合开始,一次删除一个特征,直到性能没有改善。一些应用程序交叉使用前向和后向技术来搜索特征。
  • 进化搜索:遗传算法等各种进化技术可用作搜索机制,基于过滤器或基于包装器的方法的评估指标可用作指导该过程的适合度标准。

特征评估技术

在高层次上,有三种基本方法来评估特性。

过滤方法

这种方法指的是使用技术而不使用机器学习算法进行评估。过滤方法的基本思想是使用一种搜索技术来选择一个特征(或特征子集),并使用一些统计测量来测量其重要性,直到达到停止标准。

单变量特征选择

这个搜索就像根据所采用的统计方法对每个特征进行排序一样简单。

信息论方法

所有的信息论方法都在核心使用熵机制的概念。其思想是,如果特征随机出现在数据集中,则存在最大熵,或者,等价地,压缩或编码的能力较低,并且该特征可能是不相关的。另一方面,如果特征值的分布是这样的,某个范围的值在一个类中相对于其他类更普遍,那么熵被最小化,并且该特征是有区别的。以这种方式用熵来描述问题需要某种形式的离散化,将数字特征转换成类别,以便计算概率。

考虑一个带有训练数据DX 的二元分类问题。如果 X [i] 是第 i ^(th) 个特征具有 v 个截然不同的分类值使得D[Xi]= { D[1],D[2]…D[v]}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, Info(D [j] ) 是分区的熵,计算如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, p [+] (D) 是集合 D 中的数据在正类中的概率, p_(D) 是在该样本中在负类中的概率。特征的信息增益是根据总体信息和特征的信息来计算的

Info gain(X[I])= Info(D)–Info(D[Xi])

对于数字特征,值按升序排序,相邻值之间的分割点被视为不同的值。

熵的减少越大,特征的相关性越高。当特征具有大量值时,信息增益存在问题;这就是增益比派上用场的时候。增益比通过引入分割信息来校正大分割的信息增益。特征X?? I 和增益比的分割信息由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

还有其他杂质测量,如基尼杂质指数(如关于决策树算法的章节所述)和基于不确定性的测量来计算特征相关性。

统计方法

卡方特征选择是最常用的特征选择方法之一,它以统计假设检验为基础。无效假设是特征和类变量相互独立。数值要素被离散化,因此所有要素都具有分类值。应急表的计算方法如下:

|

特征值

|

Class=P

|

类别=N

|

总纲年谱 + 年谱

|
| — | — | — | — |
| X?? 1 | (n[1P]|[1P] | (n[1N]|[1N] | n1 |
| …. | … | …. | … |
| Xm | (n[mP]|[mP] | (n[【Mn】]|[)] | nm |
|   | n* P | n* P | n |

列联表 1:显示二元类的特征值和类分布。

在前面的表中, n [ij] 是离散化后值等于xI 和类值 j 的特征的数量。

价值总和为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里 n 是数据实例的数量, j = P,N 是类值, i =1,2,… m 索引特征的不同离散化值,表具有m–1个自由度。

卡方统计由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

将卡方值与置信度阈值进行比较,以测试显著性。例如,对于 i = 2 ,阈值为 5%时的卡方值为 3.84;如果我们的值小于表中的值 3.83,那么我们知道该特征是有趣的,并且零假设被拒绝。

多元特征选择

大多数特征选择的多元方法有两个目标:

  • 减少特征和其他选定特征之间的冗余
  • 最大化特征与分类标签的相关性或关联性

寻找这种特征子集的任务不可能是穷尽的,因为该过程可能具有大的搜索空间。启发式搜索方法如向后搜索、向前搜索、爬山和遗传算法通常用于寻找特征的子集。接下来介绍两种非常著名的用于满足上述目标的评估技术。

最小冗余最大相关性(mRMR)

在这种技术中,数字特征通常被离散化——如单变量预处理中所做的那样——以获得不同类别的值。

对于的每个子集 S ,两个特征XI 和Xj 之间的冗余度可以度量为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, MI (X [i] ,X [j] ) =两个特征之间互信息的度量 X [i] 和 X [j] 。特征XI 与类别 C 之间的相关性可以度量为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

此外,可以将这两个目标结合起来,使用以下方法找到最佳特征子集:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基于相关性的特征选择(CFS)

的基本思路是类似于前面的例子;子集 S 的总体价值被测量为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, k 是特征的总数,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是平均特征类相关性,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是平均特征-特征间相关性。分子给出相关性因子,而分母给出冗余因子,因此搜索的目标是最大化总比率或价值

还有其他技术,例如基于快速相关性的特征选择,它基于相同的原则,但是在计算度量时有所不同。读者可以在 Weka 中试验这种技术和其他技术。

滤波器方法的优点是其方法独立于学习算法,因此无需选择算法和参数。它们也比基于包装的方法更快。

包装方法

搜索技术保持与特征搜索方法中讨论的相同;只是评估方法改变了。在包装方法中,使用机器学习算法来评估被发现基于各种度量进行区分的特征子集。用作包装方法的机器学习算法可以与用于建模的算法相同或不同。

最常见的是,在学习算法中使用交叉验证。性能指标,如曲线下面积或 F 值,作为交叉验证的平均值获得,指导搜索过程。由于训练和评估模型的成本非常高,我们选择训练速度快的算法,如线性回归、线性 SVM 或基于决策树的算法。

一些包装器方法已经非常成功地使用特定的算法,例如随机森林来测量特征相关性。

嵌入式方法

这种方法不需要特征搜索技术。不是将特征选择作为预处理来执行,而是在机器学习算法本身中完成。规则归纳、决策树、随机森林等执行特征选择作为训练算法的一部分。一些算法,如回归或基于 SVM 的方法,称为收缩方法,可以在模型中添加正则化项,以克服数据集中噪声特征的影响。基于脊和套索的正则化是回归中可用于隐式提供特征选择的众所周知的技术。

还有其他使用无监督算法的技术将在第三章、无监督机器学习技术中讨论,这些技术也可以在有监督的设置中有效使用,例如主成分分析 ( PCA )。

模型构建

在现实世界的问题中,有许多学习上的限制和许多方法来评估模型在看不见的数据上的表现。当应用于一个给定的问题或一类特定领域的问题时,每种建模算法都有其优点和缺点。这在著名的没有免费的午餐定理 ( NFLT )中得到了阐述,该定理称——对于监督学习的情况——平均所有数据分布,每种分类算法的表现都与任何其他算法一样好,包括总是选择相同类别的算法!在www.no-free-lunch.org/中可以找到 NFLT 在监督学习、搜索和优化中的应用。

在本节中,我们将讨论最常用的实用算法,给出必要的细节来回答诸如算法的输入和输出是什么之类的问题。它是如何工作的?选择算法时要考虑哪些优点和局限性?对于每个模型,我们将包括样本代码和在所选数据集上测试模型获得的输出。这将为读者提供对该过程的洞察。一些算法,如神经网络和深度学习,贝叶斯网络,基于流的收入,等等,将在他们自己的章节中单独讨论。

线性模型

当数据可线性分离时,线性模型工作良好。这个应该永远是首先要建立的。

线性回归

线性回归可用于分类和估计问题。这是实践中最广泛使用的方法之一。它包括通过数据点找到最佳拟合超平面。

算法输入和输出

特征必须是数字。使用各种预处理技术对分类特征进行转换,例如当分类值变成具有 1 和 0 值的特征时。线性回归模型在分类中输出分类类,在回归中输出数值。许多实现也给出了置信度值。

它是如何工作的?

模型试图在输入空间中学习一个“超平面”,使每类数据点之间的误差最小化(参考 [4])。

线性模型学习的 d 维输入中的超平面由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模型将输入空间划分成的两个区域(二元分类)是外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传。将值 1 关联到特征 0 的坐标,即 x 0=1,假设空间或模型的向量表示为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

权重矩阵可以使用各种方法导出,例如使用如下矩阵符号的普通最小二乘法或迭代法:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里 X 是输入矩阵, y 是标签。如果最小二乘问题中的矩阵XTX 不是满秩的,或者如果遇到各种数值稳定性问题,解决方案修改为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传被加到大小为( n + 1, n + 1)的单位矩阵In 的对角线上,其余的值被设置为 0。该解决方案被称为岭回归,参数λ理论上控制解决方案的平方损失和低范数之间的权衡。常数λ也称为正则化常数,有助于防止“过拟合”。

优点和局限性
  • 当有少于 100 个特征和几千个数据点时,这是一种尝试和获得洞察力的合适方法。
  • 在某种程度上是可以解释的,因为权重给出了对每个特性的影响的见解。
  • 假设线性关系、附加和不相关的要素,因此它不会对复杂的非线性真实世界数据建模。线性回归的一些实现允许移除共线要素来克服这一问题。
  • 对数据中的异常值非常敏感,如果存在巨大的异常值,则必须在执行线性回归之前对其进行处理。
  • 异方差,即不相等的训练点方差,会影响简单的最小二乘回归模型。诸如加权最小二乘法之类的技术被用来克服这种情况。

天真的贝叶斯

基于贝叶斯规则的,朴素贝叶斯分类器假设数据的特征相互独立(参考文献 9】)。它特别适合于大型数据集,并且通常比其他更复杂的技术性能更好,尽管它天真地假设了特征独立性。

算法输入和输出

朴素贝叶斯模型可以获取既分类又连续的特征。通常,如果连续要素以正确的格式离散化,朴素贝叶斯模型的性能会得到提高。朴素贝叶斯输出类和所有类值的概率分数,使其成为评分模型的良好分类器。

它是如何工作的?

它是一种基于概率的建模算法。基本思想是使用贝叶斯法则,并测量不同项的概率,如下所示。可以使用预处理(如离散化)来测量概率,假设某个分布,或者在给定足够数据的情况下,映射数字特征的分布。

应用贝叶斯法则获得后验概率作为预测值,并且 k 代表第k第类。:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

优点和局限性
  • 它对孤立的噪声数据点具有鲁棒性,因为在估计输入数据的概率时,这些点是平均的。
  • 来自贝叶斯分类的作为置信度值的概率分数可以用作评分模型。
  • 可以很好地处理缺失值,因为它们不用于估计概率。
  • 此外,它对不相关的属性也很健壮。如果这些特征是无用的,那么这些类别的概率分布将是均匀的,并且会自我抵消。
  • 在训练速度和内存方面非常好,它可以并行化,因为方程中概率的每个计算都是相互独立的。
  • 使用朴素贝叶斯时,相关特征可能是一个大问题,因为条件独立性假设不再有效。
  • 在大多数优化算法中,误差的正态分布是一种假设。

逻辑回归

如果我们使用线性回归模型,比如说使用最小二乘回归方法,输出必须转换成类,比如说 0 和 1。许多线性回归算法将类别和置信度输出为概率。根据经验,如果我们看到线性回归的概率大多超出 0.2 到 0.8 的范围,那么逻辑回归算法可能是更好的选择。

算法输入和输出

类似于线性回归的,所有特征必须是数字。分类特征必须转换成数字。与朴素贝叶斯一样,该算法输出类别和每个类别的概率,并可用作评分模型。

它是如何工作的?

逻辑回归使用输入要素中的线性函数对类的后验概率进行建模。

二元分类的逻辑回归模型如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模型是线性模型的 log-odds 或 logit 变换(参考 [6])。通常使用各种优化方法来计算权重向量,例如迭代重新加权最小二乘法 ( IRLS )或布罗伊登–弗莱彻–戈德法布–山诺 ( BFGS )方法,或这些方法的变体。

优点和局限性
  • 克服了输入和输出之间的异方差和某些非线性问题。
  • 误差估计中不需要正态分布假设。
  • 它是可以解释的,但不如线性回归模型,因为需要对统计数据有所了解。它给出了比值比、 p 值等信息,这些信息有助于理解特征对类的影响,以及基于 p 值的显著性进行隐式特征关联。
  • 在实践中,必须采用 L1 或 L2 正则化来克服逻辑回归模型中的过度拟合。
  • 许多优化算法可用于提高训练速度和鲁棒性。

非线性模型

接下来,我们将讨论一些众所周知的、实用的和最常用的非线性模型。

决策树

决策树又称为分类回归树 ( 大车 ) ( 引用【5】)。它们的表示是一个二进制树,通过在每个内部节点上根据单个属性评估一个不等式来构建,每个叶节点对应于由通向它的路径中的决策产生的输出值或类。当提供新的输入时,通过从根开始遍历树来预测输出。

算法输入和输出

特征可以是分类的,也可以是数字的。它生成类作为输出,大多数实现使用基于频率的估计给出分数或概率。决策树概率不像朴素贝叶斯和逻辑回归那样是平滑的函数,尽管有这样的扩展。

它是如何工作的?

通常,创建一个单独的树,从根处的单个特征开始,根据特征的值将决策分成多个分支,而在叶子处有一个类或多个特征。要做的选择有很多,比如有多少棵树,如何在根级或者后续的叶级选择特征,以及不分类时如何拆分特征值。这导致了许多不同的算法或对基本决策树的修改。许多分割特征值的技术与离散化章节中讨论的类似。通常,应用某种形式的修剪来减小树的大小,这有助于解决过度拟合问题。

基尼指数是另一种用于分割特征的流行技术。集合 S 中所有数据点的基尼指数为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,其中p1,p2…pk 为每一类的概率分布。

如果 p 是集合 S 中属于所述类正的所有数据点的数据的分数或概率,则 1–p是另一类的分数或二进制分类中的错误率。如果将数据集 S 拆分成 rS [1] ,S [2] ,…S [r] 那么每组的错误率可以量化为| S [i] |。一种 r 方式分割的基尼指数如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基尼系数最低的部分用于选择。CART 算法是一种流行的决策树算法,它使用基尼指数作为划分标准。

数据点组 S 的熵可以类似地计算为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

类似地,基于熵的分割计算如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

熵分裂的值越低,特征越好,这在 ID3 和 C4.5 决策树算法中使用(参考文献 [12])。

停止标准和修剪标准是相关的。早期停止树的生长或修剪的想法是为了减少“过度拟合”,它类似于线性和逻辑模型中的正则化。通常,训练集被分成树生长集和剪枝集,以便剪枝使用不同的数据来克服来自生长集的任何偏差。最小描述长度 ( MDL ),它根据节点的数量来惩罚树的复杂性,是许多决策树算法中使用的流行方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5:示出了二维二进制分类问题和分别在阈值 X [1t] 和 X [1t] 使用分裂导出的决策树

优点和局限性
  • 决策树的主要优势是它们非常容易解释。它们可以用外行人的术语来理解,并且特别适合业务领域专家容易理解的精确模型。
  • 如果有大量的特征,那么随着算法复杂性的增加,构建决策树会花费大量的训练时间。
  • 决策树存在过度拟合的固有问题。许多树算法都有修剪选项来减少这种影响。使用剪枝和验证技术可以在很大程度上缓解这个问题。
  • 当特征之间存在相关性时,决策树工作得很好。
  • 决策树建立跨类的轴平行边界,其偏差会引入错误,尤其是在复杂、平滑、非线性的边界中。

K-最近邻(KNN)

K-Nearest Neighbors 属于非参数和懒惰算法的分支。k-最近邻不会对底层数据做出任何假设,也不会从训练数据中构建和归纳模型(参考文献 10】)。

算法输入和输出

虽然 KNN 可以处理分类和数字特征,但是距离计算(查找邻居的核心)更适合处理数字特征。将相同范围内的数字要素归一化是必需的强制步骤之一。KNN 的输出通常是基于邻居距离计算的类。

它是如何工作的?

KNN 利用全部训练数据对看不见的测试数据进行预测。当看不见的测试数据出现时,KNN 使用一些距离计算找到 K 个“最近的邻居”,并基于邻居和决定类别的度量对新点进行分类。如果我们考虑由对应于两个数据点的x1 和x2 表示的两个向量,则距离计算如下:

  • 欧几里德距离:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用于对未知进行分类的度量可以简单地是 K 个邻居中的多数类。

训练时间很短,因为它所要做的只是构建数据结构来保存数据,以便在出现看不见的数据时最小化最近邻的计算。该算法依赖于选择如何存储来自训练数据点的数据以提高搜索邻居的效率、使用哪种距离计算来查找最近的邻居以及使用哪种度量来基于所有邻居的类别进行分类。由使用验证技术选择 KNN 中的 K 的值是至关重要的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 6:使用不同 K 选择的二维数据说明 K-最近邻。

优点和局限性
  • 没有对基础数据分布的假设和最少的训练时间使它成为一种非常有吸引力的学习方法。
  • KNN 使用本地信息来计算距离,在某些领域可以产生高度适应的行为。
  • 当有效地选择 K 时,它对有噪声的训练数据是鲁棒的。
  • 根据数据点的数量和硬件限制,保存用于分类的整个训练数据可能是有问题的
  • 特征的数量和维数灾难对该算法的影响更大,因此在 KNN 建模之前必须进行某种形式的维数缩减或特征选择。

支持向量机(SVM)

简单地说,支持向量机可以被视为线性分类器,通过解决一个受约束的优化问题来最大化分离超平面和数据之间的间隔。SVMs 甚至可以通过使用稍后描述的内核调用到更高维空间的变换来处理不可线性分离的数据。

算法输入和输出

SVM 只对数字特征有效,尽管大多数实现可以处理转换成数字或二进制的分类特征。标准化通常是一种选择,因为它有助于训练的优化部分。SVM 的输出是类预测。存在给出概率估计作为置信度的实现,但是这需要相当多的训练时间,因为它们使用 k 倍交叉验证来构建估计。

它是如何工作的?

在其线性形式中,SVM 的工作类似于线性回归分类器,其中在两个类之间绘制线性决策边界。两者之间的区别在于,使用 SVM 时,边界是以这样一种方式绘制的,即边界附近的点之间的“边距”或距离是最大的。边界上的点被称为“支持向量”(参考【13 和 8】)。

因此,SVM 试图在类似于线性回归模型的线性模型中找到权重向量,如下式所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

重量 w [0] 在这里用 b 表示。二元类 y ∈{1,-1}的 SVM 试图找到一个超平面:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

超平面试图分离数据点,使得具有该类的所有点都位于超平面的边上,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用基于约束的优化使模型的裕度最大化,该优化具有由 C 表示的惩罚函数,用于克服由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传表示的误差:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使得外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由于上述原因,它们也被称为大间隔分类器。基于核的 SVM 将输入数据转换到假设的特征空间,其中 SV 机器以线性方式工作,并且在特征空间中绘制边界。

变换表示上的核函数由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里φ是输入空间上的变换。可以看出,SVM 的整个优化和解决方案保持不变,唯一的例外是点积x[I]x[j]被核函数 k ( x [i] , x [j] 代替,这是一个涉及不同空间中的两个向量而没有实际变换到那个空间的函数。这就是所谓的内核技巧

通常使用的最广为人知的内核是:

  • 高斯径向基核 :外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 多项式内核 :外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 乙状结肠仁 :外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SVM 的性能对优化的一些参数以及内核参数和核心 SV 参数如代价函数 C 非常敏感。诸如网格搜索或进化搜索之类的搜索技术与诸如交叉验证之类的验证技术相结合,通常用于找到最佳参数值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7:从训练数据中学习的 SVM 线性超平面,其在两个类之间产生最大的间距。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8:内核变换,说明如何使用多项式变换将二维输入空间变换为数据可线性分离的三维特征空间。

优点和局限性
  • 如果参数选择得当,支持向量机在泛化能力、低过拟合方面是最好的,并且对于复杂的非线性数据具有良好的理论基础。
  • 即使有大量的特征和较少的训练数据,支持向量机也能很好地工作。
  • 支持向量机对噪声训练数据不太敏感。
  • 支持向量机最大的缺点是它们不可解释。
  • SVM 的另一个大问题是它的训练时间和记忆要求。它们是 O(n ² )O(n ³ ) ,当数据量较大或存在硬件限制时,会导致重大的可伸缩性问题。有一些修改有助于减少这两者。
  • SVM 通常对二分类问题工作良好,但是对于多类分类问题,尽管有诸如一对多和一对所有的技术,但是它不如诸如决策树的一些其他分类器那样健壮。

集成学习和元学习者

结合多种算法或模型进行分类,而不是仅仅依靠一种算法或模型进行分类,这被称为集成学习。它有助于组合各种模型,因为每个模型都可以被视为——在高层次上——在整个数据集中检测特定模式的专家。每个基础学习者也可以在稍微不同的数据集上学习。最后,将所有模型的结果结合起来进行预测。基于组合中使用的算法的相似程度,训练数据集如何呈现给每个算法,以及算法如何组合结果以最终对未知数据集进行分类,集成学习有许多分支:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 9:集成学习策略的图示

一些常见的集成学习类型有:

  • 不同的学习算法
  • 相同的学习算法,但参数选择不同
  • 不同特征集上的不同学习算法
  • 不同训练数据的不同学习算法

引导聚集或装袋

这是最常用的集成方法之一,用于划分不同样本中的数据,并在每个样本上建立分类器。

算法输入和输出

输入受到所使用的基础学习者的选择的限制——如果使用决策树,基本上没有限制。该方法输出类成员资格以及类的概率分布。

它是如何工作的?

bagging 的核心思想是将 bootstrapping 估计应用于具有高方差的不同学习者,如决策树。Bootstrapping 是任何依赖于随机抽样替换的统计方法。使用引导将整个数据分成不同的样本,并且对于每个样本,使用基础学习器来构建模型。最后,在预测时,平均预测是使用多数投票得出的——这是一种结合所有学习者的技术。

随机森林

随机森林是对基本袋装决策树的改进。即使有了 bagging,基本决策树在创建树的每个分割点都有一个所有特征的选择。正因为如此,即使是不同的样本,很多树也会形成高度相关的子模型,导致套袋的性能变差。除了随机数据集之外,通过为不同的模型提供随机特征,子模型之间的相关性降低,并且随机森林显示出比基本袋装树好得多的性能。随机森林中的每棵树在随机特征上生长其结构,从而最小化偏差;在决策时组合许多这样的树减少了方差(参考文献【15】)。随机森林也用于测量特征相关性,方法是对树中的杂质减少进行平均,并对所有特征进行排序,以给出每个特征的相对重要性。

优点和局限性
  • 比单一基础学习者更好的概括。克服基础学习者过度适应的问题。
  • bagging 的可解释性非常低,因为它作为元学习者工作,甚至结合了可解释的学习者。
  • 像大多数其他集成学习者一样,Bagging 对噪声和离群值具有弹性。
  • 给定训练数据为 iid,随机森林通常不会过度拟合。

助推

Boosting 是集成学习的另一种流行形式,基于使用弱学习器,迭代学习“错误分类”或难以学习的点。因此,这种想法是“提升”难以学习的实例,并使基础学习者更有效地学习决策边界。有各种各样的增强方式,如 AdaBoost、LogitBoost、ConfidenceBoost、梯度增强等等。我们在这里提出了 AdaBoost 的一个非常基本的形式(参考文献【14】)。

算法输入和输出

输入受到所使用的基础学习者的限制——如果使用决策树,基本上没有限制。输出类别成员资格以及类别的概率分布。

它是如何工作的?

boosting 背后的基本思想是对输入样本进行迭代重新加权,以创建新的数据分布,从而在每次迭代中从简单的基础学习者那里学习模型。

最初,用权重外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传对所有实例进行统一加权,并且在每次迭代 t 时,对群体进行重新采样或重新加权为外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,其中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Z t 是归一化常数。

最终模型是迭代中学习到的所有模型的线性组合:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每次迭代中数据的重新加权或重新采样基于“误差”;导致误差的数据点被更多地采样或具有更大的权重。

优点和局限性
  • 比基础学习者更好的泛化能力,非常有效地克服了过度拟合的问题。
  • AdaBoost 等一些升压算法容易受到均匀噪声的影响。有一些增强的变体,如“GentleBoost”和“BrownBoost ”,可以降低异常值的影响。
  • Boosting 在误差估计上有理论界限和保证,使其成为统计上鲁棒的算法。

模型评估、评价和比较

这里讨论的主要观点是:

  • 如何评估或估计分类器在未知数据集上的性能,它将在未来未知数据集上进行预测。
  • 我们应该使用哪些指标来评估模型的性能?
  • 如果必须在算法之间做出选择,我们如何比较算法?

模型评估

为了训练模型、调整模型参数、选择模型并最终评估模型对未知数据的预测行为,我们需要许多数据集。我们不能在一组数据上训练模型,并在同一组数据上估计其行为,因为它将具有明显的乐观偏差,并且估计不太可能与看不见的数据中的行为相匹配。因此,至少需要将可用数据划分为训练集和测试集。此外,在对测试集执行测试之前,我们需要调整模型的参数,并测试调整对单独数据集的影响。如果我们使用相同的数据集进行训练、参数调整和测试,乐观偏差和错误估计的相同论点也适用。因此,理论上和实践上都需要三个数据集,即训练、验证和测试。

在训练集上对模型进行训练,在验证集上验证不同参数对训练集的影响,并在测试集上运行具有所选参数的最终模型,以评估模型对未来未知数据的性能。当数据集不够大,或者很大但类之间的不平衡很大时,也就是说,一个类只存在于总人口的一小部分中,我们不能创建太多的样本。回想一下,我们的方法中描述的步骤之一是创建不同的数据样本和数据集。如果总的训练数据很大,并且具有很好的数据比例和类比率,那么使用随机分层划分来创建这三个集合是最常用的选择。在某些表现出季节性和时间相关行为的数据集中,基于时间界限创建数据集是一种常见的做法。在许多情况下,当数据集不够大时,可能只创建两个物理分区,即训练和测试分区。训练数据集的范围大致在 66%到 80%之间,而其余部分用于测试。然后,使用 k 倍交叉验证技术从训练数据集创建验证集。训练数据集被拆分 k 次,每次产生 k-1/k 个随机训练 1/k 个测试数据样本,生成所需性能的平均度量。这样,有限的训练数据被分割 k 次,并且训练/测试的不同分割的平均性能被用于测量参数的效果。使用 10 重交叉验证是交叉验证中最常见的做法。

模型评估指标

调整参数或选择模型时的下一个重要决策是根据某些性能指标做出决策。在分类学习中,根据业务需求,您可以根据不同的指标做出决策。例如,在某些领域,不遗漏单个真阳性是最重要的关注点,而在人类参与评判模型结果的其他领域,有太多的假阳性是更大的关注点。在某些情况下,拥有总体良好的准确性被认为是更重要的。在高度不平衡的数据集中,如欺诈或网络攻击,一个类只有少数实例,而其他类有数百万个实例。在这种情况下,精确度给出了模型性能的错误指示,一些其他指标,如精确度、真阳性比率或曲线下的面积被用作指标。

我们现在将讨论分类算法评估中最常用的指标(参考文献【16、17 和 19】)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 10:分类模型的模型评估度量

混淆矩阵和相关指标

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 11:混淆矩阵

混淆矩阵是定义个模型性能指标的核心。度量和同义术语的扩散是不同学科中矩阵元素的不同数量的效用的结果,每个强调模型行为的不同方面。

矩阵的四个元素是假阳性、假阴性、真阳性和真阴性的原始计数。通常更有趣的是这些量的不同比率,真阳性率(或灵敏度,或回忆),和假阳性率(FPR,或 1-特异性,或辐射)。准确性反映了正确预测的百分比,无论是第 1 类还是第 0 类。对于倾斜数据集,准确性不是特别有用,因为即使是常量预测也可能表现良好。

ROC 和 PRC 曲线

前面提到的指标,如准确度、精确度、召回率、灵敏度和特异性都是集合,也就是说,它们描述了整个数据集的行为。在许多复杂问题中,看到 TPs 和 FPs 等指标之间的权衡通常是有价值的。

许多分类器,大多是基于概率的分类器,除了给出分类之外,还给出预测的置信度或概率。获得 ROC 或 PRC 曲线的过程是在学习的模型上运行看不见的验证或测试集,然后获得预测和预测的概率。根据置信度按降序对预测进行排序。对于每个概率或置信度,计算两个度量,FP 的分数(FP 率)和 TP 的分数(TP 率)。

将 TP 率绘制在 y 轴上,将 FP 率绘制在 x 轴上,得到 ROC 曲线。随机分类器的 ROC 曲线接近对角线,而好分类器的 ROC 曲线倾向于图的左上。曲线 ( AUC )下的面积是利用 ROC 曲线从 0 到 1 的梯形面积在 ROC 曲线下测得的面积。例如,在运行交叉验证时,可能会有许多 ROC 曲线。有两种方法可以得到“平均”ROC 曲线:一是使用垂直平均法,即在不同 FP 率下绘制 TPR 平均值,二是使用水平平均法,即在不同 TP 率下绘制 FPR 平均值。根据经验,曲线下面积大于 0.8 的分类器被认为适合预测未知数据。

精确度召回曲线或 PRC 曲线类似于 ROC 曲线,但不是 TPR 对 FPR,而是精确度和召回指标分别绘制在 yx 轴上。当数据高度不平衡时,也就是说,ROC 曲线不能真正显示影响,而 PRC 曲线在判断绩效时更可靠。

增益图和升力曲线

升力和增益图更偏向于灵敏度或真阳性。这两个图表的全部目的是展示模型预测和置信度如何取代随机选择,在未知数据的样本中检测出更好的质量或真阳性。

这通常对用于检测金融犯罪欺诈或网络安全威胁的检测引擎非常有吸引力。增益图和提升曲线给出了将在总数据的不同四分位数或间隔检测到的真实真阳性的精确估计。这将为业务决策者提供关于需要多少调查人员或检测欺诈行为或网络攻击将花费多少时间的洞察力,从而可以提供模型的真实 ROI。

生成增益图或升力曲线的过程与通过模型运行看不见的验证或测试数据并获得预测以及置信度或概率的过程相似。它包括按降序排列概率,并保持数据集每个四分位数的 TPs 计数。最后,每四分位数计数的直方图给出了提升曲线,而四分位数上增加的 TPs 累积计数给出了增益图。在 RapidMiner 等许多工具中,使用固定的较大间隔(使用宁滨)来获取计数和累积计数,而不是四分位数等粗略间隔。

型号对比

当选择算法或给定算法的正确参数时,我们要么在不同的数据集上进行比较,要么在交叉验证的情况下,在同一数据集的不同分割上进行比较。在这些比较的决策中采用了统计检验的方法。使用经典统计学的假设检验的基本思想是比较来自算法的两个度量。零假设是基于度量的算法之间没有差异,因此进行测试以验证或拒绝基于度量的零假设(参考文献【16】)。统计测试回答的主要问题是——算法得到的结果或度量是其真实特征,还是偶然?

在本节中,我们将讨论比较实际场景中使用的分类算法的最常用方法。

比较两种算法

一般的流程是在相同的训练集上训练算法,并在多个验证集、不同的测试集或交叉验证上运行模型,测量之前讨论过的感兴趣的指标,如错误率或曲线下面积,然后获取每个算法的指标统计数据,以确定哪个效果更好。每种方法都有其优点和缺点。

麦克内马试验

这个是非参数测试,因此它没有对数据和分布做出假设。McNemar 的测试建立了一个性能指标的列联表,如“错误分类或错误”,其中包括:

两种算法的错误分类计数(c00

  • 被算法 G1 误分类计数,但被算法G2(c01 正确分类
  • 被算法 G2 错误分类,但被算法G1(c10 正确分类的计数
  • G1G2(c[11])外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传正确分类的计数

如果χ ² 超过外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传统计量,那么我们可以拒绝零假设,即算法 G1G2 的两个性能指标在 1–α的置信值下相等。

成对 t 检验

这是一个参数测试,正态分布计算指标的假设变得有效。通常情况下,它与交叉验证过程和指标结果(如曲线下面积或精确度或误差率)相结合,然后计算平均值和标准偏差。除了正态分布假设之外,两个指标来自相同方差总体的额外假设可能是该方法的一大缺点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是两种算法 G1G2 的性能指标的均值差异。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, d i 是两个算法 G1G2 在试验中的性能指标之差,有 n 次试验。

使用平均差异和标准偏差的标准误差计算出t-统计量,如下所示,并将其与右侧 alpha 值表进行比较,以检查显著性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Wilcoxon 符号秩检验

在数据集上测试两个指标的最流行的非参数方法是使用 Wilcoxon 符号秩测试。在相同的训练数据上训练算法,并且在不同的验证或测试集上计算诸如错误率或不准确区域之类的度量。设 d [i] 为两个分类器在It^(th)试验中对于 N 数据集的性能度量之差。然后根据其绝对值对差异进行排名,并对平局进行平均排名。设R+为第二种算法优于第一种算法的等级之和,R^–为第一种算法优于第二种算法的等级之和:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后将统计量外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传与α的阈值外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传进行比较,以拒绝假设。

比较多种算法

我们现在将讨论当涉及两个以上的算法,并且我们需要对许多算法进行评估指标的比较时,最常用的两种技术。

方差分析检验

这些是假设样本的正态分布的参数测试,也就是我们为评估而计算的指标。ANOVA 测试遵循与其他测试相同的过程,即在相似的训练集上训练模型/算法,并在不同的验证或测试集上运行它。ANOVA 中计算的主要数量是每个算法性能的度量平均值,然后计算所有算法的总体度量平均值。

p [ij] 为 k 试验和 l 分类器的 i = 1,2… kj = 1,2 …l 的性能度量。分类器 j 在所有试验中的平均性能和总体平均性能为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

评估两种类型的变化。第一个是组内变异,即每个算法与总体度量平均值的总偏差,第二个是组间变异,即每个算法度量平均值的偏差。组内变异和组间变异用于计算各自的组内和组间平方和,如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用两个平方和以及诸如 F-statistic(两者之比)的计算,可以在 alpha 值处进行显著性测试,以接受或拒绝零假设:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

方差分析检验与配对 t 检验在假设指标正态分布和假设方差相等方面具有相同的局限性。

弗里德曼试验

Friedman 的测试是一种用于多种算法比较的非参数测试,它不像 ANOVA 那样假设数据分布或度量的方差。它使用排名而不是性能指标的直接进行计算。在每个数据集或试验中,对算法进行排序,最好的算法排名为 1,对所有分类器依此类推。计算一个算法在 n 个数据集上的平均排名,比如说Rj。对 l 个分类器的弗里德曼统计量计算如下,并与阿尔法值进行比较,以接受或拒绝零假设:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

案例研究——马绞痛分类

为了说明第一章、机器学习综述中描述的不同步骤和方法,从数据分析到模型评估,具有真实世界特征的代表性数据集是必不可少的。

我们已经从以下链接可获得的 UCI 库中选择了“马绞痛数据集:archive.ics.uci.edu/ml/datasets/Horse+Colic

数据集有 23 个特征,并且很好地混合了分类特征和连续特征。它具有大量带有缺失值的特征和实例,因此理解如何替换这些缺失值并在建模中使用它在这种处理中变得更加实际。大量缺失数据(30%)实际上是该数据集的一个显著特征。数据由连续的属性以及名义类型的属性组成。此外,自我预测的存在使得从实践的角度来看,使用这个数据集是有益的。

这个练习的目标是应用到目前为止我们已经吸收的监督学习的技术。我们将使用一个真实的数据集和两个开源工具包——WEKA 和 rapid miner——来完成这项工作。在这些工具的帮助下,我们将构建一个管道,允许我们通过数据清理、学习过程和模型评估从数据文件的摄取开始。

Weka 是一个用于机器学习的 Java 框架——我们将看到如何使用这个框架在几行代码中从头到尾解决一个分类问题。除了 Java API,Weka 还有一个 GUI。

RapidMiner 是一个图形环境,具有拖放功能和一大套算法和可视化工具,使得使用数据和不同的建模技术快速运行实验变得极其容易。

商业问题

商业问题是确定数据集众所周知的变量的给定值——如果马的损伤是外科手术造成的。我们将使用测试集作为必须分类的看不见的数据。

机器学习映射

基于数据和标签,这是一个二元分类问题。数据已经分为训练数据和测试数据。这使得评估技术更简单,因为从特征选择到模型的所有方法都可以在相同的测试数据上进行评估。

该数据集包含 300 个训练和 68 个测试示例。有 28 个属性,目标对应于病变是否是外科的。

数据分析

在查看标签类别在训练和测试样本上的分布之后,我们在特征分析之前组合 300 个训练样本和 68 个测试样本。

标签分析

无类别与有类别的比率在训练集中是 109/191 = 0.57,在测试集中是 0.66:

|

训练数据集

|
| — |
| 手术损伤? | 1(是) | 2(否) |
| 示例数量 | One hundred and ninety-one | One hundred and nine |
| 测试数据集 |
| 手术损伤? | 1(是) | 2(否) |
| 示例数量 | Forty-one | Twenty-seven |

表 2:标签分析

特性分析

下面的是主要特征的屏幕截图,包括按缺失值排序的类型、缺失值、最小值、最大值、模式和标准偏差的基本统计数据。观察结果如下:

  • 不存在具有非缺失值的分类或连续特征;最少的是 368 个中有 74 个缺失的特征“脉冲”,即 20%的值缺失,高于一般的噪声阈值!
  • 大多数数字特征都有缺失值,例如,“鼻饲反流 PH”的 368 个值中有 247 个缺失,即 67%的值缺失!
  • 许多分类特征都有缺失值,例如,“abidominocentesis appearance”有 368 个缺失值中的 165 个,即 45%的值缺失!
  • 缺失值必须以某种方式处理,以克服如此大的数字所产生的噪音!外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传图 12:数据集中要素的基本统计数据.

监督学习实验

在本节的中,我们将介绍使用两种不同工具的监督学习实验——在一个工具中强调编码和分析,在另一个工具中强调 GUI 框架。这给了开发人员探索他们最喜欢的路线的机会。

Weka 实验

在本节的中,我们已经向提供了完整的代码,并将介绍从加载数据、转换数据、选择特性、构建样本模型、根据测试数据对其进行评估,甚至比较算法的统计显著性的整个过程。

Java 端到端流程示例

在每个算法中,使用相同的训练/测试数据,并对所有指标进行评估,如下所示。训练和测试文件按如下方式加载到内存中:

DataSource source = new DataSource(trainingFile);
Instances data = source.getDataSet();
if (data.classIndex() == -1)
  data.setClassIndex(data.numAttributes() - 1);

这里显示了使用 WEKA 的通用代码,其中每个分类器都由一个过滤的分类器包装,用于替换丢失的值:

//replacing the nominal and numeric with modes and means
Filter missingValuesFilter= new ReplaceMissingValues();
//create a filtered classifier to use filter and classifier
FilteredClassifier filteredClassifier = new FilteredClassifier();
filteredClassifier.setFilter(f);
// create a bayesian classifier
NaiveBayes naiveBayes = new NaiveBayes();
// use supervised discretization
naiveBayes.setUseSupervisedDiscretization(true);
//set the base classifier e.g naïvebayes, linear //regression etc.
fc.setClassifier(filteredClassifier)

当分类器需要执行特征选择时,在 Weka 中,AttributeSelectedClassifier进一步包装FilteredClassifier,如下所示:

AttributeSelectedClassifier attributeSelectionClassifier = new AttributeSelectedClassifier();
//wrap the classifier
attributeSelectionClassifier.setClassifier(filteredClassifier);
//univariate information gain based feature evaluation
    InfoGainAttributeEval evaluator = new InfoGainAttributeEval();
//rank the features
Ranker ranker = new Ranker();
//set the threshold to be 0, less than that is rejected
ranker.setThreshold(0.0);
attributeSelectionClassifier.setEvaluator(evaluator);
attributeSelectionClassifier.setSearch(ranker);
//build on training data
attributeSelectionClassifier.buildClassifier(trainingData);
// evaluate classifier giving same training data
Evaluation eval = new Evaluation(trainingData);
//evaluate the model on test data
eval.evaluateModel(attributeSelectionClassifier,testingData);

这里给出了评估的样本输出:

=== Summary ===

Correctly Classified Instances     53       77.9412 %
Incorrectly Classified Instances    15       22.0588 %
Kappa statistic             0.5115
Mean absolute error           0.3422
Root mean squared error         0.413
Relative absolute error        72.4875 %
Root relative squared error      84.2167 %
Total Number of Instances       68 

=== Detailed Accuracy By Class ===

 TP Rate FP Rate Precision Recall F-Measure MCC   ROC Area PRC Area Class
 0.927  0.444  0.760   0.927  0.835   0.535  0.823  0.875  1
 0.556  0.073  0.833   0.556  0.667   0.535  0.823  0.714  2
Weighted Avg.  0.779  0.297  0.789   0.779  0.768   0.535  0.823  0.812 

=== Confusion Matrix ===

 a b <-- classified as
 38 3 | a = 1
 12 15 | b = 2

Weka 实验者和模型选择

正如在模型评估指标部分中所解释的,为了选择模型,我们需要验证哪一个将在看不见的数据集上工作良好。交叉验证必须在训练集上完成,选择的性能指标需要使用标准统计测试指标进行分析。这里,我们展示了一个使用相同训练数据的示例,10 重交叉验证,对两个模型执行 30 次实验,并使用配对 t 检验比较结果。

一种是使用朴素贝叶斯进行预处理,包括替换缺失值和通过移除任何得分低于 0.0 的特征来执行特征选择。

另一个使用相同的预处理和 AdaBoostM1 和朴素贝叶斯。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 13: WEKA 实验人员展示了使用两种算法重复 30 次交叉验证运行的过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 14: WEKA 实验者的结果,显示了使用配对 t 检验比较两种算法的正确率或准确度。

RapidMiner 实验

现在让我们使用 RapidMiner 中的马疝气数据集进行一些实验。我们将再次遵循本章第一部分提出的方法。

注意

本节不是 RapidMiner 工具的教程。实验者应该阅读优秀的文档和用户指南,以熟悉该工具的使用。软件中有专门针对每个操作员的教程,我们建议您在想要了解如何使用特定操作员时使用这些教程。

一旦我们使用数据访问工具导入了测试和训练数据文件,我们将希望直观地探索数据集,以熟悉情况。特别重要的是识别 28 个属性中的每一个是连续的(RapidMiner 中的数值、整数或实数)还是分类的(RapidMiner 中的名义、二项式或多项式)。

可视化分析

从工具的结果面板,我们执行数据的单变量、双变量和多变量分析。统计工具给出了每个特征的简短摘要,包括连续类型的最小值、最大值、平均值和标准差,以及标称类型的最小、最大值和频率。

当我们进行双变量分析时,数据的有趣特征开始显现出来。在四分位数颜色矩阵中,颜色代表两个可能的目标值。正如在方框图中看到的,我们立即注意到一些属性比其他属性更清楚地区分了两个目标值。让我们检查几个:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 15:四分位数颜色矩阵

蠕动:该特征显示了按目标值分开时分布的显著差异。两者之间的四分位数区域几乎没有重叠。这表明了该特征相对于目标的辨别能力。

另一方面,直肠温度的曲线显示分布中没有可察觉的差异。这表明该特征与目标的相关性低。从特征脉冲中可以得出类似的推论。当我们评估这些特征相对于目标的辨别能力时,我们期望这些特征排名相当低。

最后,痛苦的情节有一个非常不同的特点。它也能识别目标,但方式与蠕动截然不同。就疼痛而言,类别 2 的数据差异比类别 1 大得多。除了第 2 组与第 1 组相比差异较大之外,不同组间的腹胀差异也明显不同。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 16:散点图矩阵

探索数据的一个重要部分是理解不同的属性如何相互关联以及如何与目标关联。这里我们考虑成对的特征,看看值在组合中的出现是否能告诉我们一些关于目标的信息。在这些图中,数据点的颜色是目标。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 17:气泡图

在气泡图中,我们可以通过使用绘图工具指定 xy 轴以及表示为代表特性的气泡大小的第三维度,来一次可视化四个特性。目标类由颜色表示。

在总蛋白的低端,我们在直肠温度值的中间范围内看到较高的 pH 值。在这一组中,高 pH 值似乎显示出与外科手术损伤更强的相关性。对于总蛋白大于 50 的值,还发现了总蛋白差异更大的另一个聚类。在这个集群中,pH 值的变化也很小。

功能选择

对数据有了一些了解后,我们准备使用理论中的一些技术来评估特征相关性。

这里我们使用两种技术:一种是基于目标属性的卡方统计计算特征的权重,另一种是基于基尼系数。结果如表所示。请注意,正如我们在通过可视化进行特征分析时所推断的,脉搏和直肠温度都被证明具有低相关性,如两种技术所示。

|

卡方检验

|

基尼指数

|
| — | — |
|

属性

|

重量

|

属性

|

重量

|
| — | — | — | — |
| 疼痛 | 54.20626 | 疼痛 | 0.083594 |
| 腹部 | 53.93882 | 腹部 | 0.083182 |
| 蠕动 | 38.73474 | 蠕动 | 0.059735 |
| 腹部扩张 | 35.11441 | 腹部扩张 | 0.054152 |
| 外围脉冲 | 23.65301 | 外围脉冲 | 0.036476 |
| 腹腔穿刺外观 | 20.00392 | 腹腔穿刺外观 | 0.030849 |
| 温度极端值 | 17.07852 | 温度极端值 | 0.026338 |
| 粘膜 | 15.0938 | 粘膜 | 0.023277 |
| 鼻饲回流 | 14.95926 | 鼻饲回流 | 0.023069 |
| PackedCellVolume | 13.5733 | PackedCellVolume | 0.020932 |
| 直肠粘膜检查-粪便 | 11.88078 | 直肠粘膜检查-粪便 | 0.018322 |
| 毛细血管再充盈时间 | 8.078319 | 毛细血管再充盈时间 | 0.012458 |
| 呼吸速率 | 7.616813 | 呼吸速率 | 0.011746 |
| 总蛋白质 | 5.616841 | 总蛋白质 | 0.008662 |
| 鼻饲回流 | 2.047565 | 鼻饲回流 | 0.003158 |
| 脉搏 | 1.931511 | 脉搏 | 0.002979 |
| 年龄 | 0.579216 | 年龄 | 8.93E-04 |
| 鼻胃管 | 0.237519 |   |   |
| 腹腔中心总蛋白 | 0.181868 |   |   |
| 直肠温度 | 0.139387 |   |   |

表 3:通过卡方检验和基尼指数这两种不同技术确定的相关特征。

模型流程

在 RapidMiner 中,您可以使用输入和输出可以链接在一起的操作符来定义计算管道。以下过程表示用于执行整组操作的流程,从加载训练和测试数据开始,处理缺失值,通过相关性对特征进行加权,过滤出低得分特征,训练使用随机森林装袋作为算法的集成模型,最后将学习到的模型应用于测试数据并输出性能指标。请注意,应用于训练数据集的所有预处理步骤也必须通过组模型操作符以相同的顺序应用于测试集:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 18: RapidMiner 流程图

在该过程的顶部之后,在最左侧的操作者中摄取训练集,随后排除非预测因素(医院编号、CP 数据)和自我预测因素(病变 1)。接下来是运算符,分别用连续属性和分类属性的平均值和众数替换缺失值。接下来,Feature Weights 操作符基于卡方统计评估每个特征的权重,然后是忽略低权重特征的过滤器。然后,使用随机森林分类器,使用 Bagging 将该预处理数据集用于训练模型。

通过 Group Models 操作符,对训练数据使用的预处理步骤按适当的顺序组合在一起,并在倒数第二个步骤中应用于测试数据。最后,在最后一步中,评估并呈现伴随混淆矩阵和其他性能度量的测试实例上的目标变量的预测。

模型评估指标

我们现在准备比较各种模型的结果。如果你一直坚持下去,你可能会发现你的结果与这里呈现的不同——这可能是由于一些学习算法的随机性质,或者模型中使用的一些超参数值的差异。

我们考虑了三种不同的训练数据集:

  • 缺少值的原始训练数据
  • 处理缺失值后转换的训练数据
  • 处理缺失值并应用特征选择(卡方检验)以选择高区分度特征的训练数据。

我们在每个数据集上考虑了三组不同的算法:

  • 线性算法(朴素贝叶斯和逻辑回归)
  • 非线性算法(决策树和 KNN)
  • 集成算法(Bagging、Ada Boost 和随机森林)。
混淆度量的评估

|

模型

|

pulse

|

定期用量法(Fixed Period Requirements)

|

精确

|

特征

|

准确(性)

|

罗马纪元

|
| — | — | — | — | — | — | — |
| 朴素贝叶斯 | 68.29% | 14.81% | 87.50% | 85.19% | 75.00% | Zero point eight three six |
| 逻辑回归 | 78.05% | 14.81% | 88.89% | 85.19% | 80.88% | Zero point eight five six |
| 决策图表 | 68.29% | 33.33% | 75.68% | 66.67% | 67.65% | Zero point six nine six |
| k-神经网络 | 90.24% | 85.19% | 61.67% | 14.81% | 60.29% | Zero point five five six |
| 装袋(GBT) | 90.24% | 74.07% | 64.91% | 25.93% | 64.71% | Zero point seven three seven |
| Ada Boost(朴素贝叶斯) | 63.41% | 48.15% | 66.67% | 51.85% | 58.82% | Zero point six one three |

表 4:根据缺失值的马结肠数据训练的模型的不可见(测试)数据的结果

|

模型

|

pulse

|

定期用量法(Fixed Period Requirements)

|

精确

|

特征

|

准确(性)

|

罗马纪元

|
| — | — | — | — | — | — | — |
| 朴素贝叶斯 | 68.29% | 66.67% | 60.87% | 33.33% | 54.41% | Zero point five five nine |
| 逻辑回归 | 78.05% | 62.96% | 65.31% | 37.04% | 61.76% | Zero point six eight nine |
| 决策图表 | 97.56% | 96.30% | 60.61% | 3.70% | 60.29% | Zero point eight one two |
| k-神经网络 | 75.61% | 48.15% | 70.45% | 51.85% | 66.18% | Zero point six four eight |
| 装袋(随机森林) | 97.56% | 74.07% | 66.67% | 25.93% | 69.12% | Zero point eight nine two |
| 装袋(GBT) | 82.93% | 18.52% | 87.18% | 81.48% | 82.35% | Zero point eight seven |
| Ada Boost(朴素贝叶斯) | 68.29% | 7.41% | 93.33% | 92.59% | 77.94% | Zero point eight nine five |

表 5:根据马结肠数据训练的模型的不可见(测试)数据的结果,其中缺失值被替换

|

模型

|

pulse

|

定期用量法(Fixed Period Requirements)

|

精确

|

特征

|

准确(性)

|

罗马纪元

|
| — | — | — | — | — | — | — |
| 朴素贝叶斯 | 75.61% | 77.78% | 59.62% | 29.63% | 54.41% | Zero point five five one |
| 逻辑回归 | 82.93% | 62.96% | 66.67% | 37.04% | 64.71% | Zero point six nine two |
| 决策图表 | 95.12% | 92.59% | 60.94% | 7.41% | 60.29% | Zero point eight two four |
| k-神经网络 | 75.61% | 48.15% | 70.45% | 51.85% | 66.18% | Zero point six six nine |
| 装袋(随机森林) | 92.68% | 33.33% | 80.85% | 66.67% | 82.35% | Zero point nine one five |
| 装袋(GBT) | 78.05% | 22.22% | 84.21% | 77.78% | 77.94% | Zero point eight seven two |
| Ada Boost(朴素贝叶斯) | 68.29% | 18.52% | 84.85% | 81.48% | 73.53% | Zero point eight four eight |

表 6:使用卡方统计技术选择的特征对马结肠数据进行训练的模型的看不见的(测试)数据的结果

ROC 曲线、升力曲线和增益图

性能图使我们能够直观地评估在三个实验中的两个实验中使用的模型——没有任何缺失数据替换,并且在替换缺失数据后使用卡方加权的特征——并将它们相互比较。成对的图显示了我们在本章前面了解的每种线性(逻辑回归)、非线性(决策树)和集成(Bagging,使用梯度推进树)技术的性能曲线,这些曲线来自两个实验的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 19:使用缺失数据的实验的 ROC 性能曲线

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 20:使用缺失数据的实验累积增益性能曲线

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 21:使用缺失数据的试验的举升性能曲线

结果、观察和分析

处理缺失值的影响是巨大的。在七个分类器中,除了朴素贝叶斯和逻辑回归,当缺失值按照各种指标(包括 AUC、精度、准确度和特异性)的指示进行处理时,所有分类器都显示出显著的改进。这告诉我们,处理可能“有噪声”的缺失值是数据转换的一个重要方面。朴素贝叶斯有它自己管理缺失值的内部方法,我们的实验结果表明,它在空值处理方面比我们的外部转换做得更好。但是一般来说,当您考虑所有分类器时,转换缺失值的想法似乎是有益的。

正如建模一节中所讨论的,一些算法需要正确处理缺失值和特征选择,以获得最佳性能。从结果中,我们可以看到,例如,决策树的性能从缺失数据时的 0.696、管理缺失数据时的 0.812 以及缺失数据与特征选择一起处理时的最佳性能 0.824 逐渐提高。当执行这两个步骤时,七个分类器中的六个提高了 AUC(和其他度量)的性能;比较 AUC 的表 5表 6 可以让我们快速了解这些情况。这证明了在执行建模之前进行预处理(如缺失值处理和特征选择)的重要性。

从结果得出的主要结论是,该问题是高度非线性的,因此从最简单的决策树到集成随机森林的大多数非线性分类器表现非常好。最佳性能来自元学习算法随机森林,丢失的值得到适当处理,最相关的特征用于训练。通过 AUC 测量的最佳线性模型性能是 0.856,用于具有数据原样(即,具有缺失值)的逻辑回归,而随机森林通过伴随特征选择的缺失数据的适当处理实现了 0.915 的 AUC 性能。一般来说,从表 3 中可以明显看出,非线性分类器或元学习器在大多数性能指标上比线性分类器表现得更好。

以适当的方式处理丢失的值可以被认为是“噪声”,从而显著提高 AdaBoost 的性能。AUC 从 0.613 提高到 0.895,FPR 从 48.15 降低到 7.41%。这确实符合该技术的预期理论行为。

与其他常见技术相比,元学习技术使用 boosting 和 bagging 的概念,在处理真实世界的数据时相对更有效。结果似乎证明了这一点,因为 AdaBoost 使用朴素贝叶斯作为基础学习器,对经过适当噪声处理的数据进行训练,在大部分指标中表现优于朴素贝叶斯,如表 5表 6 所示。在表 6 中,与基本分类器相比,随机森林和 GBTs 以及 AdaBoost 也表现出最佳性能,再次证实了正确的过程和集成学习可以在真实世界的噪声数据集中产生最佳结果。

注意

本章中 WEKA 和 RapidMiner 过程文件的所有数据、模型和结果可在以下位置获得:github . com/mjmlbook/mastering-Java-machine-learning/tree/master/chapter 2

总结

监督学习是机器学习应用中使用的主要技术。该方法由一系列步骤组成,从数据探索、数据转换和数据采样开始,经过特征缩减、模型构建,最后是模型评估和比较。这个过程的每一步都涉及到一些必须回答关键问题的决策:我们应该如何估算缺失值?我们应该使用什么样的数据采样策略?给定数据集中的噪声量和规定的可解释性目标,最合适的算法是什么?本章演示了这些过程和技术在现实世界问题中的应用——使用 UCI 马结肠数据集的分类问题。

无论问题是分类(当目标是分类值时)还是回归(当目标是实值连续变量时),用于监督学习的方法都是相似的。在这一章中,我们用分类来说明。

第一步是数据质量分析,包括特征的描述性统计、使用单变量的可视化分析和多变量特征分析。在各种绘图类型的帮助下,我们可以发现数据中的不同趋势,并检查某些要素可能与标注值相关,也可能不相关。数据分析之后是数据预处理,其中的技术包括处理噪声的方法,如在缺失数据和异常值的情况下,以及通过标准化和离散化为建模技术准备数据。

在预处理之后,我们必须适当地将数据分成训练、验证和测试样本。根据数据的特征和手头的问题,可以使用不同的采样策略,例如,当数据有偏差时,或者当我们有多类分类问题时。根据数据大小,交叉验证是创建单独验证集的常见替代方法。

下一步是剔除不相关的特征。在过滤方法中,使用单变量分析的技术要么是基于熵的(信息增益、增益率),要么是基于统计假设检验的(卡方检验)。对于主要的多变量方法,目标是在一起考虑时减少冗余特征,或者使用与目标标记最密切相关的特征。在包装器方法中,我们使用机器学习算法来告诉我们更多有区别的特征。最后,一些学习技术以正则项的形式将特征选择嵌入到算法中,通常使用脊或套索技术。这些代表了嵌入式方法。

建模技术大致分为线性、非线性和集成方法。在线性算法中,要素的类型可以决定要使用的算法-线性回归(仅数字要素)、朴素贝叶斯(数字或分类)和逻辑回归(仅数字要素,或分类转换为数字)是可行的。在选择每种方法或使用这些模型解释学习结果时,必须了解每种方法的优缺点。

决策树、k-NN 和 SVM 都是非线性技术,它们都有自己的优势和局限性。例如,可解释性是决策树的主要优势。k-NN 在面对噪声数据时是稳健的,但在处理高维数据时表现不佳。SVM 的可解释性较差,但即使在数据集有限且要素数量较多的情况下也能大放异彩。

随着许多不同模型的合作,集成方法可以利用最好的。Bagging 和 boosting 都是在集成中比它们使用的基础学习器更好地概括的技术,并且在许多应用中很受欢迎。

最后,在评估模型性能和相互比较模型时,可以使用哪些策略和方法?验证集或交叉验证的作用对于归纳未知数据的能力至关重要。从混淆矩阵得到的性能评估度量被普遍用于评估分类器;有些在某些领域和学科中比其他领域和学科更常用。当分类阈值变化时,ROC、增益和升力曲线是模型性能范围的很好的视觉表示。当成对比较模型时,使用基于统计假设检验的几个指标。Wilcoxon 和 McNemar 的是两个非参数检验;配对 t 检验是参数方法的一个例子。同样,在比较多种算法时,一种常见的不对数据分布做出假设的非参数检验是 Friedman 检验。ANOVA 是参数测试,假设指标的正态分布和方差相等。

本章的最后部分介绍了使用 RapidMiner 工具开发和评估模型的过程,这些模型用于对 UCI 马结肠数据集的测试数据进行分类。设计了三个实验来比较和对比不同数据预处理条件下模型的性能,即,不处理缺失数据,使用标准技术替换缺失数据,以及最后,在零替换之后进行特征选择。在每个实验中,我们选择多种线性、非线性和集合方法。作为整个过程的一部分,我们说明如何使用建模环境。我们可以从结果中得出启示性的结论,这使我们能够深入了解数据,并展示不同情况下各类技术的相对优势和劣势。我们的结论是,数据是高度非线性的,集成学习显示出明显优于其他技术的优势。

参考文献

  1. D.贝尔和 h .王(2000 年)。一种关联形式及其在特征子集选择中的应用。机器学习,41(2):175–195。
  2. J.多克(1992 年)。评估特征选择方法及其在计算机安全中的应用。技术报告 CSE–92–18,Davis,CA:加州大学计算机科学系。
  3. 米(meter 的缩写))本·巴萨特(1982 年)。在特征评估中使用距离测量、信息测量和误差界限。载于 P. R. Krishnaiah 和 L. N. Kanal 编辑的《统计手册》,第 2 卷,第 773-791 页,北荷兰。
  4. Littlestone N,Warmuth M (1994) 加权多数算法。信息计算 108(2):212–261
  5. Breiman L .、Friedman J.H .、Olshen R.A .、Stone C.J. (1984) 分类和回归树,沃兹福思国际集团。
  6. B.Ripley(1996),模式识别和神经网络。剑桥大学出版社,剑桥。
  7. 布雷曼(1996 年)。 Bagging 预测器,机器学习,24 123-140。
  8. Burges,C. (1998 年)。模式识别支持向量机教程。数据挖掘和知识发现。2(2):1-47.
  9. Bouckaert,R. (2004),对连续变量表现良好的朴素贝叶斯分类器,计算机科学讲义,第 3339 卷,第 1089–1094 页。
  10. Aha D (1997)。懒学,Kluwer 学术出版社,多德雷赫特
  11. Nadeau,c .和 Bengio,Y. (2003 年),泛化误差的推论。机器学习 52:239–281。
  12. 昆兰博士(1993 年)。C4.5: 机器学习的程序,摩根·考夫曼,旧金山。
  13. Vapnik,V. (1995),统计学习理论的本质。斯普林格出版社。
  14. 沙皮尔热,歌手 Y,辛格哈尔 A (1998)。应用于文本过滤的 Boosting 和 Rocchio】。在 SIGIR '98:第 21 届信息检索研究与发展国际年会论文集,第 215-223 页
  15. 布雷曼 L.(2001 年)。随机森林。机器学习,45 卷 1 期,第 5-32 页。
  16. Nathalie Japkowicz 和 Mohak Shah (2011 年)。评估学习算法:分类观点。剑桥大学出版社。
  17. 汉利 j .和麦克尼尔 B. (1982)。受试者工作特性(ROC)曲线下面积的含义和用途。放射学 143,29–36。
  18. 玺恩,李伟银,李玉山(2000)。三十三种新旧分类算法的预测精度、复杂度和训练时间的比较。机器学习 40:203–228。
  19. A.摩尔和李明善(1994 年)。最小化交叉验证误差的高效算法。进行中。第 11 国际机场。糖膏剂《论机器学习》,第 190-198 页,新泽西州新不伦瑞克。摩根·考夫曼。
  20. Nitesh 诉 Chawla 等人。艾尔。(2002).合成少数过采样技术。人工智能研究杂志。16:321-357.*

三、无监督机器学习技术

在上一章中,我们重点介绍了监督学习,即从已标记的训练数据集进行学习。在现实世界中,获取带有标签的数据通常很困难。在许多领域中,实际上不可能标记数据,要么是因为标记的成本,要么是因为数据生成的巨大数量或速度而难以标记。在这些情况下,各种形式的无监督学习提供了探索、可视化和执行描述性和预测性建模的正确方法。在许多应用中,无监督学习通常与监督学习相结合,作为分离感兴趣的数据元素以进行标注的第一步。

在这一章中,我们将关注各种实用的、非常适合无监督学习的方法、技术和算法。我们首先注意到在处理数据和转换时,监督学习和非监督学习之间的共同问题。然后,我们将简要介绍在无监督学习中面临的特殊挑战,由于缺乏“基础真理”和在这些条件下学习的性质。

然后,我们将讨论应用于未标记数据集的特征分析和降维技术。接下来是对广泛的聚类方法的介绍和对实际使用中各种算法的讨论,就像我们在第二章中对监督学习所做的那样,展示了每种算法如何工作,何时使用,以及它的优点和局限性。我们将通过介绍不同的集群评估技术来结束集群部分。

在聚类处理之后,我们将探讨离群点检测这一主题。我们将对比各种不同的技术和算法,这些技术和算法说明了在给定的数据集中是什么使得一些对象成为离群值——也称为异常。

本章将以聚类和异常值检测实验结束,这些实验是用真实世界的数据集进行的,并对获得的结果进行了分析。在本案例研究中,我们将使用 ELKI 和 SMILE Java 库来完成机器学习任务,并将展示代码和实验结果。我们希望这能让读者感受到这些工具的强大功能和易用性。

监督学习的共同问题

我们讨论的许多与监督学习相关的问题在无监督学习中也很常见。下面列出了其中一些:

  • 算法处理的特征类型:大多数聚类和离群点算法需要数字表示才能有效工作。转换分类或顺序数据必须小心进行
  • 维数灾难:拥有大量特征会导致空间稀疏,影响聚类算法的性能。必须选择一些选项来适当地降低维度——或者是仅保留最相关特征的子集的特征选择,或者是将特征空间转换成较低维度空间的一组新的主要变量的特征提取
  • 内存和训练时间的可扩展性:由于内存或训练时间的限制,许多无监督学习算法无法扩展到几千个以上的实例
  • 数据中的异常值和噪声:许多算法受到特征中的噪声、异常数据的存在或缺失值的影响。它们需要被适当地转换和处理

无监督学习特有的问题

以下是关于无监督学习技术的一些问题:

  • 参数设置:决定特征的数量、特征的有用性、聚类的数量、聚类的形状等等,对某些无监督的方法提出了巨大的挑战
  • 评估方法:由于缺乏基本事实,无监督学习方法是不适定的,因此对算法的评估变得非常主观。
  • 硬标签或软标签:许多无监督学习问题需要以排他或概率的方式给数据加上标签。这给许多算法带来了问题
  • 结果和模型的可解释性:与监督学习不同,基础事实的缺乏和一些算法的性质使得解释来自模型和标签的结果更加困难

特征分析和降维

在中,首先要掌握的工具是不同的特征分析和维度缩减技术。如同在监督学习中一样,降维的需要源于许多类似于前面讨论的特征选择和降维的原因。

较少的区分维度使得数据和聚类的可视化更加容易。在许多应用中,无监督的降维技术用于压缩,然后可以用于数据的传输或存储。当较大的数据有开销时,这尤其有用。此外,应用降维技术可以提高许多算法在内存和计算速度方面的可伸缩性。

符号

我们将使用类似于章节中关于监督学习的符号。这些示例以维表示,并表示为矢量:

x=(x1,x [2] ,…x*[d])^T*

包含 n 个示例的整个数据集可以表示为一个观察矩阵:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

降维的思想是通过输入特征的变换、投影或组合来找到 k ≤ d 特征,使得较低维度的 k 捕获或保留原始数据集的有趣属性。

线性方法

线性维度方法是一些最古老的统计技术,用于减少特征或将数据转换到更低的维度,保留有趣的区分属性。

在数学上,我们使用线性方法执行转换,从而使用原始数据元素的线性转换创建新的数据元素:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

s = Wx

这里, W [k × d] 是线性变换矩阵。变量 s 也被称为潜变量或隐藏变量。

在本主题中,我们将讨论两种最实用和最常用的方法。我们将列出这些技术的一些变体,以便读者可以使用这些工具进行实验。这里的主要假设——通常形成限制——是转换之间的线性关系。

主成分分析

PCA 是一种广泛使用的降维技术(参考文献 1】)。将原始坐标系旋转到新的坐标系,该坐标系利用数据中最大方差的方向,从而在低维子空间中产生不相关的变量,而这些变量在原始特征空间中是相关的。PCA 对特征的缩放很敏感。

输入和输出

PCA 通常对数值数据集有效。许多工具为名义特征提供了分类到连续的转换,但这会影响性能。主成分的数量,或 k ,也是由用户提供的输入。

它是如何工作的?

PCA 最基本的形式是试图找到数据在新轴上的投影,这被称为主成分 ??。主组件是从原始空间捕捉最大方差方向的投影。简而言之,PCA 通过在最大方差的方向上旋转数据的原始轴来找到第一主分量。该技术通过再次确定与第一个轴正交的下一个最佳轴,通过寻找第二高的方差等等,直到捕捉到大多数方差,来找到下一个主分量。一般来说,大多数工具要么选择主成分的数量,要么选择继续寻找成分,直到捕获到原始数据集中的某个百分比(例如 99%)的方差。

数学上,寻找最大方差的目标可以写成

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

λv=Cv是本征分解

这相当于:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, W 是主成分, S 是输入数据的新变换。通常,在计算部分使用特征值分解或奇异值分解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 1:主成分分析

优点和局限性
  • PCA 的一个优点是它是最优的,因为它最小化了数据的重构误差。
  • 主成分分析假设正态分布。
  • 对于具有高维度的大型数据集,方差-协方差矩阵的计算会变得很密集。或者,可以使用奇异值分解 ( SVD ),因为它迭代地工作,并且不需要显式协方差矩阵。
  • 当数据中有噪声时,PCA 有问题。
  • 当数据位于复杂流形中时,PCA 失败,这是我们将在非线性降维部分讨论的主题。
  • PCA 假设特征之间的相关性,并且在没有这些相关性的情况下,它不能进行任何变换;相反,它只是对它们进行排名。
  • 通过将原始特征空间转换成一组新的变量,PCA 导致数据可解释性的损失。
  • 主成分分析还有许多其他受欢迎的变体,它们克服了主成分分析的一些偏见和假设。

独立成分分析 ( ICA )假设源中存在非高斯的混合物,并使用生成技术,试图在更小的混合物或成分中找到原始数据的分解(参考文献【2】)。主成分分析和独立成分分析的主要区别在于,主成分分析创建的是不相关的成分,而独立成分分析创建的是独立的成分。

数学上,它假设外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是独立源∈ 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传的混合,这样每个数据元素y=y¹,y²,…。y*k***T而独立性是由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传被转换到低维空间外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,其中k<p使用:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, k x d 矩阵 R 中的列是独立同分布的零均值正态变量,并且被缩放到单位长度。使用概率抽样构建随机矩阵 R 有多种方式。RP 的计算复杂度为 O(knd) ,比 PCA 的伸缩性好很多。在许多实际的数据集中,RP 给出了与 PCA 相当的结果,并且可以扩展到大的维度和数据集。

优点和局限性
  • 它将扩展到数据集大小和维度的非常大的值。在大规模的文本和图像学习问题中,这种技术已经被成功地用作预处理技术。
  • 使用 RP 时,有时会发生大量信息丢失。

多维标度(MDS)

MDS 有很多种形式——古典的、公制的和非公制的。MDS 的主要思想是保持成对的相似性/距离值。它通常包括将高维数据转换成二维或三维数据(参考文献 [5])。

输入和输出

MDS 可以根据用户选择的距离函数对数字和分类数据进行处理。要转换的维数, k ,是用户定义的输入。

它是如何工作的?

给定 n 数据元素,计算 n x n 相似度或距离矩阵。可以选择使用距离,如欧几里德距离、马氏距离,或相似性概念,如余弦相似性、Jaccard 系数等。MDS 在其非常基本的形式中试图找到距离矩阵在低维空间中的映射,其中变换点之间的欧几里得距离类似于亲和矩阵。

数学上:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传输入空间和外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传映射空间。

如果使用核来变换输入亲和空间,那么 MDS 就成为降维的非线性方法。当输入空间中的点之间的距离是欧几里德距离时,经典 MDS 等价于 PCA。

优点和局限性
  • 关键的缺点是解释高维数据所需的较低维度的主观选择,通常人类只限于两个或三个维度。一些数据在这个低维空间中可能不能有效地映射。
  • 优点是您可以使用框架对最低维度执行线性和非线性映射。

非线性方法

一般而言,非线性维度缩减涉及对 KPCA 等线性方法中的计算执行非线性变换,或者在流形学习中寻找较低维度中的非线性关系。在一些领域和数据集中,低维数据的结构是非线性的——这就是 KPCA 等技术有效的地方——而在一些领域,数据在低维中不会展开,你需要多方面的学习。

核主成分分析(KPCA)

内核 PCA 使用在第二章、现实世界监督学习的实用方法中描述的内核技巧,使用 PCA 算法在高维空间中转换数据以找到有效的映射(参考文献【6】)。

输入和输出

类似于 PCA,但增加了对内核和内核参数的选择。例如,如果选择了径向基函数 ( RBF )或高斯核,那么核连同伽马参数成为用户选择的值。

它是如何工作的?

与前一章讨论的支持向量机 ( SVM )的方式相同,KPCA 使用“核技巧”将输入空间转换到高维特征空间。寻找最大方差的整个 PCA 机制然后在变换的空间中执行。

如五氯苯甲醚:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代替线性协方差矩阵,通过构造 N x N 矩阵,使用核方法将非线性变换应用于输入空间,而不是使用 ϕ (x) 进行实际变换。

k(x,y)=((x),(y)=**

由于核变换实际上并没有将特征变换到显式特征空间,因此找到的主成分可以被解释为数据在成分上的投影。在下图中,使用圆上的 scikit-learn 示例生成的二元非线性数据集(参考文献 [27])展示了使用 RBF 核进行 KPCA 后的线性分离,并通过逆变换返回到几乎相似的输入空间:

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 2:圆形数据集上的 KPCA 和逆变换。**

优点和局限性
  • KPCA 克服了 PCA 提出的非线性映射。
  • KPCA 有与标准 PCA 相似的异常值、噪声和缺失值问题。有强大的方法和变化来克服这一点。
  • 由于核矩阵的增加,KPCA 在空间上存在可扩展性问题,这可能成为高维大数据集的瓶颈。在这些情况下,可以使用 SVD 作为替代方案。

流形学习

当高维数据嵌入到较低的维中,这些维是非线性的,但是具有复杂的结构,流形学习是非常有效的。

输入和输出

流形学习算法需要两个用户提供的参数: k ,代表初始搜索的邻居数量, n ,流形坐标的数量。

它是如何工作的?

如下图所示,使用 scikit-learn 实用程序绘制的三维 S 曲线(参考文献 [27])在 2D PCA 中表示,在 2D 流形中使用 LLE 表示。有趣的是,当使用 LLE 的流形学习表示清楚地分离颜色时,观察蓝色、绿色和红色点如何在 PCA 表示中混合。还可以观察到,欧几里德距离的等级排序在流形表示中没有保持:

**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 PCA 和流形学习后的数据表示**

为了保留结构,将保留测地线距离而不是欧几里德距离。一般的方法是构建一个图结构,如邻接矩阵,然后使用不同的假设计算测地线距离。在 Isomap 算法中,全局成对距离被保留(引用 [7])。在局部线性嵌入** ( LLE )算法中,进行映射是为了照顾局部邻域,即附近的点映射到变换中的附近点(引用【9】)。拉普拉斯特征映射类似于 LLE,除了它试图通过使用图拉普拉斯来保持 LLE 的“局部性”而不是“局部线性”(参考文献【8】)。**

优点和局限性
  • Isomap 是非参数的;它保留了全局结构,没有局部最优,但受到速度的阻碍。
  • LLE 和拉普拉斯特征映射是非参数的,没有局部最优,速度很快,但是不能保持全局结构。

**

聚类

聚类算法可以根据技术、输出、过程和其他考虑因素以不同的方式分类。在本主题中,我们将介绍一些最广泛使用的聚类算法。

聚类算法

现在有一套丰富的集群技术被广泛应用。本节介绍了其中的一些,解释了它们是如何工作的,它们可以用于什么类型的数据,以及它们的优缺点。这些算法包括基于原型、基于密度、基于概率划分、基于层次、基于图论和基于神经网络的算法。

k-Means

k-means 是一种基于质心或原型的迭代算法,采用分区和重定位方法(参考文献 [10])。k-means 根据使用的距离度量来查找球形聚类,就像欧几里德距离的情况一样。

输入和输出

k-means 可以处理大多数数字特征。许多工具为数值转换提供了分类,但是在计算中使用大量的分类会导致非最优的聚类。用户定义的 k 、待发现的聚类数量以及用于计算接近度的距离度量是两个基本输入。k-means 生成聚类,将数据关联到每个聚类,并将聚类的质心作为输出。

它是如何工作的?

最常见的变体称为劳埃德算法,通过从数据集中随机选取数据元素来初始化给定数据集的 k 质心。它使用某种距离度量(如欧几里德距离)将每个数据元素分配给它最接近的质心。然后,它计算每个聚类的数据点的平均值以形成新的质心,并且重复该过程,直到达到最大迭代次数或者质心没有变化。

从数学上讲,聚类的每一步都可以看作是一个优化步骤,其中要优化的等式由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里,ci 是属于簇 i 的所有点。最小化问题被归类为 NP-hard,因此 k-Means 有陷入局部最优的趋势。

优点和局限性
  • 集群的数量、 k 的选择很难,但是通常搜索技术,例如针对不同的值改变 k ,以及测量度量,例如误差平方和,可以用来找到一个好的阈值。对于较小的数据集,可以尝试分层 k-Means。
  • k-means 可以比大多数算法更快地收敛于更小的值 k ,并且可以找到有效的全局聚类。
  • k-means 收敛会受到质心初始化的影响,因此有许多变体可以用不同的种子等执行随机重启。
  • 当存在异常值和噪声数据点时,k-means 可能表现不佳。使用稳健的技术,如中位数而不是均值,k-Medoids,在一定程度上克服了这一点。
  • 当它们具有任意形状或具有不同密度时,k-means 不会找到有效的聚类。

数据库扫描

基于密度的带噪声的应用空间聚类(DBSCAN)是一种基于密度的分区算法。它将空间中的密集区域与稀疏区域分开(参考【14】)。

输入和输出

DBSCAN 中仅使用数字特征。用户自定义的参数是 MinPtsϵ 给出的邻域因子。

它是如何工作的?

算法首先求出每个点 p 的ϵ-neighborhood,由外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出。高密度区域被识别为ϵ-neighborhood 中的点数大于或等于给定的 MinPts 的区域;这种ϵ-neighborhood 被定义的点被称为核心点。一个核心点的ϵ-neighborhood 内的点被称为可直接到达。通过从一个可直接到达的核心点跳跃到从第二个点可直接到达的另一个点而实际上可到达的所有核心点被认为是在同一个集群中。此外,在其ϵ*-邻域中具有少于 MinPts 的任意点,但是从核心点可直接到达的,属于与核心点相同的聚类。这些在群集边缘的点被称为边界点噪声点是既不是核心点也不是边界点的任何点。*

优点和局限性
  • DBSCAN 算法不需要指定簇的数量,可以从数据中自动找到。
  • DBSCAN 可以找到各种形状和大小的星团。
  • DBSCAN 对噪声具有内在的鲁棒性,可以从数据集中发现异常值。
  • DBSCAN 在识别点方面不是完全确定的,其边界或核心分类取决于处理数据的顺序。
  • 由于维度的诅咒,选择的距离度量(如欧几里德距离)通常会影响性能。
  • 当存在密度变化很大的簇时, {MinPts,**}的静态选择会造成很大的限制。

均值漂移

均值偏移是许多基于图像、视频和运动检测的数据集中非常有效的聚类算法(参考文献【11】)。

输入和输出

在均值偏移算法中,仅接受数字特征作为数据输入。内核的选择和内核的带宽是影响性能的用户驱动的选择。均值漂移生成数据点的模式,并围绕这些模式对数据进行聚类。

它是如何工作的?

均值偏移基于核密度估计 ( KDE )的统计概念,其中是一种从样本中估计底层数据分布的概率方法。

给定带宽 h 的内核 K ( x )的内核密度估计由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于维度为 dn 个点。均值漂移算法通过在局部增加密度的方向上移动每个数据点来工作。为了估计该方向,将梯度应用于 KDE,并且梯度采用以下形式:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里 g(x)=–K’(x)是核的导数。向量 m( x )被称为均值偏移向量,用于在方向上移动点

x((t+1))=**x**t+m(x

同样,当密度函数的梯度为零时,保证收敛。结束于相似位置的点被标记为属于同一区域的聚类。

优点和局限性
  • 均值漂移是非参数的,并且对数据分布不做任何潜在假设。
  • 它可以发现不同形状和大小的不复杂的星团。
  • 不需要明确给出集群的数量;在估计中使用的带宽参数的选择隐含地控制了聚类。
  • 均值漂移对于给定的带宽参数没有局部最优,因此它是确定性的。
  • 由于 KDE 效应,均值漂移对异常值和噪声点具有很强的鲁棒性。
  • 均值漂移算法计算速度慢,并且不能很好地适应大型数据集。
  • 带宽选择应该是明智的;否则,它会导致合并模式,或额外的,浅模式的出现。

期望最大化(EM)或高斯混合建模(GMM)

GMM 或 EM 是一种基于概率划分的方法,它使用基于概率分布的技术将数据划分为 k 簇(引用【13】)。

输入和输出

在新兴市场/GMM 中只允许使用数字特征。模型参数是混合物组分的数量,由 k 给出。

它是如何工作的?

GMM 是一种生成方法,假设有 k 个高斯分量,每个高斯分量有一个均值[i] 和协方差ʃ[I]。以下表达式表示给定 k 高斯分量的数据集的概率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为每个 k 高斯分量寻找平均值{ [1] 、[2] 、… [k] }使得分配给每个分量的数据点最大化该分量的概率的两步任务是使用期望最大化 ( EM )过程完成的。

迭代过程可以被定义为 E-step,它在迭代 i 中为该聚类的所有数据点计算预期聚类:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

给定属于聚类的数据点,M 步最大化计算 t+1:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

EM 过程可以导致 GMM 收敛到局部最优。

优点和局限性
  • 适用于任何功能;对于分类数据,计算离散概率,而对于数值,估计连续概率函数。
  • 它有计算的可扩展性问题。这会导致局部最优。
  • 类似于 k-Means,k 高斯的值必须先验地给定。**

层次聚类

分层聚类是一种基于连通性的聚类方法,它被广泛用于分析和探索数据,而不是用作聚类技术(参考文献 12】)。想法是从顶部或底部迭代地构建二叉树,使得相似的点被分组在一起。树的每一层都提供了有趣的数据摘要。

输入和输出

分层聚类通常基于相似性- 进行转换,因此分类数据和连续数据均可接受。层次聚类只需要相似性或距离度量来计算相似性,而不需要像 k-means 或 GMM 那样需要聚类的数目。

它是如何工作的?

层次聚类有许多变体,但是我们将讨论聚集聚类。聚集聚类的工作原理是首先将所有数据元素放入它们自己的组中。然后,它基于所使用的相似性度量迭代地合并这些组,直到存在单个组。树或分组的每一层都提供了数据的独特分割,由分析师选择适合问题域的正确层。凝聚聚类通常使用树状图来可视化,树状图显示了相似数据点的合并。常用的相似性方法有:

  • 单联动:相似度是各组点之间的最小距离:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 平均连锁度:各组点之间的平均相似度:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
优点和局限性
  • 分层聚类将分层结构强加到数据上,即使可能不存在这样的结构。
  • 相似性度量的选择会导致一组非常不同的合并和树状图,因此它对用户输入有很大的依赖性。
  • 随着数据点的增加,分层聚类的可扩展性受到影响。根据使用的距离度量,它可能对噪声和异常值很敏感。

自组织地图(SOM)

SOM 是一种基于神经网络的方法,可以被视为降维、流形学习或聚类技术(参考文献【17】)。神经生物学研究表明,我们的大脑将不同的功能映射到不同的区域,称为地形图,这构成了这项技术的基础。

输入和输出

SOM 中仅使用数字特征。模型参数由距离函数(通常使用欧几里德距离)和以宽度和高度或网格中单元数量表示的网格参数组成。

它是如何工作的?

SOM,也称为 Kohonen 网络,可以被认为是一个双层神经网络,其中每个输出层是一个二维网格,以行和列的形式排列,每个神经元都完全连接到输入层。

像神经网络一样,权重最初是使用随机值生成的。该流程有三个不同的培训阶段:

  • 竞争阶段:该阶段的神经元基于判别值进行竞争,一般基于神经元权重与输入向量之间的距离;使得两者之间的最小距离决定了输入被分配给哪个神经元。使用欧几里德距离,输入 x i 和网格位置(j,I)】中的神经元之间的距离由w[Ji]:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出**

  • **Cooperation phase: In this phase, the winning neurons find the best spatial location in the topological neighborhood. The topological neighborhood for the winning neuron I(x) for a given neuron (j, i), at a distance S[ij], neighborhood of size σ, is defined by:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    使用一些众所周知的衰减函数,例如指数函数,以随时间减小的方式定义邻域大小,定义如下:

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**

  • **Adaptive phase: In this phase, the weights of the winning neuron and its neighborhood neurons are updated. The update to weights is generally done using:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    这里,学习率 n(t) 再次被定义为像邻域大小一样的指数衰减。**

使用统一距离矩阵(U-Matrix)的 SOM 可视化创建了神经元与其邻居的权重之间的平均距离的单一度量,然后可以用不同的颜色强度来可视化。这有助于识别邻近的相似的神经元。

优点和局限性
  • SOM 最大的优势是易于理解,使用 U 矩阵可视化对二维数据进行聚类能够非常有效地理解模式。
  • 相似性/距离函数的选择对聚类有很大影响,用户必须仔细选择。
  • SOM 的计算复杂性使得它不可能用于大于几千大小的数据集。

谱聚类

谱聚类是一种基于划分的聚类技术,使用图论作为其基础(参考文献【15】)。它将数据集转换成一个连通图,并进行图划分以找到聚类。这是图像处理、运动检测和一些基于非结构化数据的领域中的一种流行方法。

输入和输出

谱聚类中仅使用数字特征。为了获得最佳性能,必须正确定义模型参数,如选择内核、内核参数、要选择的特征值数量以及 k-Means 等分区算法。

它是如何工作的?

以下步骤描述了如何在实践中使用该技术:

  1. 给定数据点,使用诸如高斯核的平滑核函数计算相似性(或邻接性)矩阵:对于较近的点,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传和较远的点,外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. **The next step is to compute the graph Laplacian matrix using various methods of normalizations. All Laplacian matrix methods use the diagonal degree matrix D, which measures degree at each node in the graph:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    一个简单的拉普拉斯矩阵是 L = D(度矩阵)–A(亲和矩阵)。**

  3. 从特征值问题或广义特征值问题计算前 k 个特征值。

  4. 使用诸如 k-Means 之类的划分算法来进一步分离 k 维子空间中的聚类。

优点和局限性
  • 当簇形状或大小不规则且不凸时,谱聚类非常有效。谱聚类有太多的参数选择,调整以获得好的结果是一项相当复杂的任务。
  • 理论上,谱聚类已经被证明在存在噪声数据的情况下更加稳定。当聚类没有很好地分开时,谱聚类具有良好的性能。

亲和繁殖

相似性传播可以被视为 K-medoids 方法的扩展,因为它与从数据中挑选样本的相似性(参考文献【16】)。相似性传播使用具有距离或相似性矩阵的图,并挑选训练数据中的所有示例作为样本。作为数据点之间的相似性的迭代消息传递自动检测集群、样本,甚至数量的集群。

输入和输出

通常,除了最大迭代次数之外,不需要输入参数,这对于大多数算法来说是常见的。

它是如何工作的?

两种类型的消息在数据点之间交换,我们将首先解释:

  • **Responsibility r(i,k): This is a message from the data point to the candidate exemplar. This gives a metric of how well the exemplar is suited for that data point compared to other exemplars. The rules for updating the responsibility are as follows: 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 where s(i, k) = similarity between two data points i and k.

    a(i,k) =样本 k 对于 i 的可用性。**

  • **可用性 a(i,k) :这是从候选样本到数据点的消息。考虑到计算中的其他数据点,这给出了指示样本对数据点的支持有多好的度量。这可以被视为软集群分配。可用性更新规则如下:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    图 4:相似性传播中使用的消息类型**

该算法可以总结如下:

  1. 初始化外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. 对于所有增量 in:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  3. 结束。

  4. **对于所有的 x [i] 使得 (r(i,i) + a(i,I)>0)

    1. x[I]为典范。
    2. 使用相似性度量 s(i,j) 将所有非样本 x [j] 分配给最接近的样本。**
  5. 结束。

优点和局限性
  • 亲和度传播是一种确定性算法。k-means 或 K-medoids 对初始点的选择都很敏感,通过将每个点视为样本来克服这个问题。
  • 不必指定聚类的数量,而是通过该过程自动确定。
  • 它在非度量空间中工作,甚至不需要距离/相似性来具有约束性的属性,如三角形不等式或对称性。这使得该算法可用于各种具有分类和文本数据等的数据集:
  • 该算法由于其更新方式易于并行化,且训练时间快。

聚类验证和评估

聚类验证和评估是确定算法有效性的最重要机制之一(参考文献 [18】)。这些主题可以大致分为两类:

  • 内部评估措施:在这种情况下,这些措施使用某种形式的聚类数据本身的质量,而不涉及任何基础事实。
  • 外部评估措施:在这种情况下,这些措施使用一些外部信息,如已知的基本事实或类别标签。

内部评估措施

内部评估仅使用集群和数据信息来收集关于集群结果好坏的指标。应用程序可能会对度量的选择产生一些影响。一些算法偏向于特定的评估指标。因此,在选择正确的指标、算法和参数时,必须基于这些考虑因素。内部评估措施基于不同的质量,如下所述:

  • 紧密度:使用不同策略测量的聚类的方差用于给出紧密度值;方差越低,聚类越紧密。
  • 分离:星团之间的分离程度如何?
符号

下面是对下面使用的符号的简明解释:具有所有数据元素的数据集= D ,数据元素的数量= n ,每个数据元素的维度或特征=D,整个数据的中心 D = c ,聚类的数量= NCIthcluster =CI 数据个数在第I第簇=nI 中,I第簇=CI,方差在第I第簇=σ(CC[I],两点间距离

R 平方

目标是使用聚类之间的平方和与整个数据的平方和之比来测量聚类之间的差异程度。公式如下所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

邓恩指数

目标是识别密集且分离良好的星团。该度量由从以下公式获得的最大值给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

戴维斯-波尔丁指数

目标是识别具有低簇内距离和高簇间距离的簇:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

剪影索引

目标是测量集群间和集群内距离的成对差异。它还用于通过最大化索引来寻找最佳聚类数。公式由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里有外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外部评估措施

聚类的外部评估度量与使用来自混淆矩阵的元素或使用来自数据和标签的信息理论度量的分类度量具有相似性。一些最常用的措施如下。

兰德指数

Rand index 使用以下公式衡量聚类算法做出的正确决策:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

F 值

F-Measure 结合了应用于聚类的精度和召回度量,如下式所示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, n [ij] 是簇 j 中类 i 的数据元素的个数,nj 是簇 j 中的个数,nI 是类 i 中的数据个数。F 值越高,聚类质量越好。

归一化互信息指数

NMI 是应用于聚类的众多基于熵的度量之一。与聚类 C 相关联的熵是关于聚类随机选取数据元素的不确定性的度量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传其中外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是元素在集群 C i 中被选取的概率

两个集群之间的互信息由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传,是该元素被两个集群 CC ^( ’ ) 选中的概率。

归一化互信息 ( NMI )有多种形式;一个由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传**

异常值或异常检测

Grubbs 在 1969 年给出了的定义,“异常值,或异常值,是指明显偏离样本中其他成员的值”。

Hawkins 在 1980 年将异常值或异常定义为“一个与其他观测值偏离如此之大的观测值,以至于让人怀疑它是由不同的机制产生的”。

Barnett 和 Lewis,1994 年将其定义为“与该组数据的其余部分不一致的观察值(或观察值的子集)”。

离群算法

异常值检测技术基于不同的异常值定义方法进行分类。每种方法都根据将数据集中的一些对象与其他对象区分开来的一些属性来定义离群值:

  • 基于统计的:根据选择的分布,这是不可能的
  • 基于距离的:这是根据选择的距离度量和阈值距离内的邻居分数从邻居中隔离出的
  • 基于密度的:这是与其邻居更加孤立,而不是反过来与邻居更加孤立
  • 基于聚类的:这个在相对于其他聚类的孤立的聚类中,或者不是任何聚类的成员
  • 基于高维度的:这是在数据被投影到较低维度之后,或者通过为高维度选择适当的度量标准之后,通过通常的技术得到的异常值

基于统计

使用参数方法进行异常值检测的基于统计的技术假设了一些关于数据分布的知识(参考文献【19】)。根据观察值,估算模型参数。模型中概率低于阈值的数据点被视为异常值。当分布未知或不适合假设时,使用非参数方法。

输入和输出

离群点检测的统计方法适用于实值数据集。在假设多元分布的参数方法的情况下,距离度量的选择可以是用户选择的输入。在使用基于频率的直方图的非参数方法的情况下,使用用户定义的阈值频率。在核密度估计技术中,核方法和带宽的选择也是由用户决定的。基于统计的方法的输出是一个表示异常的分数。

它是如何工作的?

大多数基于统计的异常值检测要么假设一个分布,要么使数据符合一个分布,以概率方式检测从该分布生成的最不可能的数据。这些方法有两个不同的步骤:

  1. 训练步骤:在这里,对模型进行估计以拟合数据
  2. 测试步骤:在每个实例上,基于模型和特定实例执行拟合优度,产生分数和离群值

基于参数的方法假设一个分布模型,如多元高斯模型,训练通常涉及使用诸如最大似然估计 ( MLE 等技术来估计均值和方差。测试通常包括技术,如均值方差或箱线图测试,伴随着假设,如“如果超出三个标准差,则异常值”。

正态多元分布可以估计为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用平均值和协方差ʃ.

Mahalanobis 距离可以是由等式外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传给出的分布中的数据点的估计值。当马氏距离受到异常值影响时,还会使用一些变量,如最小协变行列式 ( MCD )。

非参数方法包括使用基于频率或宽度的方法为每个特征构建直方图等技术。当柱中的数据与直方图上的平均值的比率低于用户定义的阈值时,这样的柱被称为稀疏的。特征概率越低,异常值得分越高。总异常值分数可以计算为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, w [f] 是赋予特征 fp [f] 是该特征在测试数据点的值的概率, F 是特征集的权重之和。内核密度估计也用于使用用户定义内核和带宽的非参数方法。

优点和局限性
  • 当模型拟合或数据分布已知时,这些方法非常有效,因为您不必存储整个数据,只需存储进行测试的关键统计数据。
  • 然而,分布的假设在参数方法中会引起一个大问题。大多数使用核密度估计的非参数方法不能很好地适应大型数据集。

基于距离的方法

基于距离的算法在一般的假设下工作,即正常数据有其他更接近它的数据点,而异常数据与其邻居很好地隔离开(参考文献【20】)。

输入和输出

基于距离的技术要求将原生数字或分类特征转换为数值。基于距离的方法的输入是所使用的距离度量(距离阈值ϵ)和π(阈值分数),它们共同确定一个点是否为异常值。对于 KNN 方法,选择 k 是一个输入。

它是如何工作的?

基于距离的异常值有许多变体,我们将在较高层次上讨论每种变体的工作原理:

  • DB ( ϵ ,π )算法:给定半径 ϵ 和阈值π,如果π百分比的点到该点的距离小于 ϵ ,则该数据点被认为是离群点。关于如何完成计算,还有使用嵌套循环结构、基于网格的结构和基于索引的结构的进一步变体。
  • 基于 KNN 的方法也很常见,通过 KNN 点到点的距离或 {1NN,2NN,3NN…KNN} 点到点的平均距离来计算异常值。
优点和局限性
  • 基于距离的算法的主要优势在于它们是非参数化的,并且不对分布以及如何拟合模型做出假设。
  • 距离计算非常简单,并且是并行计算的,有助于算法在大型数据集上扩展。
  • 基于距离的方法的主要问题是第一章中讨论的维数灾难;对于高维数据,稀疏性会导致噪声异常。

基于密度的方法

基于密度的方法扩展了基于距离的方法,不仅测量给定点的局部密度,还测量其邻域点的局部密度。因此,添加的相对因子使其在寻找更复杂的局部或全局异常值时具有优势,但增加了计算成本。

输入和输出

必须向基于密度的算法提供输入半径 ϵ 附近的最小点数 MinPts ,该输入半径以确定其为集群中核心对象的对象为中心。

它是如何工作的?

我们将首先讨论Loca离群因子 ( LOF )方法然后讨论 LOF【21】的一些变种。

给定参数 MinPts ,数据点的 LOF 为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里|N*[min pts]*§*|是点 p 邻域内的数据点个数,lrd[min pts]*是该点的局部可达性密度,定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传是点的可达性,定义为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LOF 的缺点之一是可能会遗漏邻域密度接近其邻域密度的异常值。使用基于集合的最近路径和源自数据点的基于集合的最近轨迹的基于连通性的离群点 ( COF )用于改进 LOF。COF 将低密度区域与孤立区域区别对待,克服了 LOF 的缺点:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LOF 的另一个缺点是,当集群处于不同的密度并且没有被分离时,LOF 将产生与直觉相反的分数。克服这一点的一个方法是使用 KNNs 及其反向 KNNs 或 RNNs 来使用点的影响空间 ( )。rnn 将给定的点作为它们的 K 个最近邻居之一。点的异常值称为受影响的异常值或流入值,由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, den ( p )是 p 的局部密度:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 5:基于密度的异常值检测方法特别适合于发现局部和全局异常值

优点和局限性
  • 已经证明基于密度的方法比基于距离的方法更有效。
  • 基于密度的离群点检测具有高计算成本,并且通常可解释性差。

基于聚类的方法

有些人认为,聚类技术的目标是找到位于一起的数据点组,在某种意义上,这与异常或离群点检测问题是对立的。然而,作为一种高级的无监督学习技术,聚类分析提供了几种方法来发现感兴趣的聚类组,这些聚类组要么远离其他聚类,要么根本不在任何聚类中。

输入和输出

如前所述,聚类技术可以很好地处理实值数据,尽管一些分类值被转换为数值是可以接受的。在 k-均值和 k-中面的情况下,输入值包括聚类数量 k 和距离度量。变体可能需要阈值分数来识别异常组。对于使用 EM 的高斯混合模型,混合成分的数量必须由用户提供。使用 CBLOF 时,需要两个用户定义的参数:小集群的大小和大集群的大小。根据所使用的算法,单个或多组对象被输出为异常值。

它是如何工作的?

正如我们在聚类一节中所讨论的,聚类方法有多种类型,我们将给出几个例子来说明聚类算法是如何扩展到离群点检测的。

k-Means 或 k-Medoids 及其变体通常将数据元素聚集在一起,并受到异常值或噪声的影响。不是通过移除或转换来预处理这些数据点,而是将削弱聚类“紧密度”的这些点视为异常值。通常,异常值是通过两步过程发现的,首先运行聚类算法,然后评估某种形式的异常值分数,该分数用于测量点到质心的距离。此外,许多变体将小于阈值的聚类视为异常组。

使用期望最大化** ( EM )的高斯混合建模** ( GMM )是另一种众所周知的基于聚类的离群点检测技术,其中具有属于聚类的低概率的数据点成为离群点,离群点分数成为 EM 概率输出分数的倒数。

基于聚类的局部异常值因子 ( CBLOF )使用两阶段过程来发现异常值。首先,一个聚类算法将数据划分成不同大小的簇。使用两个用户定义的参数,大簇的大小和小簇的大小,形成两组簇:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

优点和局限性
  • 鉴于基于聚类的技术已经被很好地理解,结果更容易解释,并且有更多的工具可用于这些技术。
  • 许多聚类算法仅检测聚类,并且与给出分数或等级或以其他方式识别离群值的离群值算法相比,在无监督技术中效率较低。

基于高维度的方法

基于距离、密度甚至聚类的方法的一个关键问题是维数灾难。随着维度的增加,距离之间的对比变小,邻域的概念变得不那么有意义。在这种情况下,正常点看起来像异常值,假阳性会大量增加。我们将讨论解决这个问题的一些最新方法。

输入和输出

将数据投影到低维子空间的算法可以很好地处理缺失数据。在这些技术中,比如 SOD、 ϕ ,每个维度中的范围数成为一个输入(引用 25】)。当使用进化算法时,具有最低稀疏系数的单元的数量是算法的另一个输入参数。

它是如何工作的?

解决高维离群值问题的总体思路是:

  • 或者将稳健的距离度量与所有先前的技术相结合,以便可以在整个维度上识别异常值
  • 或者将数据投影到更小的子空间上,并在更小的子空间中找到离群值

基于角度的离群度 ( ABOD )方法使用的基本假设是,如果高维度中的数据点是离群点,那么从该点出发朝向最接近它的数据点的所有向量将处于或多或少相同的方向。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用作 ABOD 分数的方差度量由下式给出:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ABOD 值越小,角度谱中的方差度量就越小,该点成为异常值的几率就越大。

另一种在高维数据中非常有用的方法是使用子空间离群点检测 ( SOD )方法(参考文献【23】)。想法是划分高维度空间,使得在每个 d 维度中有相等数量的范围,比如说 ϕ 。然后,通过在每个 d 维度中选取一个范围而形成的单元 C 的稀疏系数被测量如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里, n 是数据点的总数, 是单元格 C 中的数据点数。通常,位于具有负稀疏系数的单元中的数据点被认为是异常值。

优点和局限性
  • ABOD 方法对于数据点的数量是O(n3T5),对于较大的数据集变得不切实际。
  • 子空间中的稀疏系数方法需要在低维中进行有效的搜索,并且该问题变得 NP 困难,并且采用了某种形式的基于进化或启发式的搜索。
  • 稀疏系数法是 NP 难的,会导致局部最优。

一等 SVM

在许多领域中,有一个特定的感兴趣的类或类别,其他的并不重要。围绕这个兴趣类别找到一个边界是一类 SVM 背后的基本思想(参考文献【26】)。基本假设是正类(感兴趣的类)的所有点聚集在一起,而其他类元素分散在周围,并且我们可以在聚集的实例周围找到紧密的超球体。SVM 在二元分类中有很好的理论基础和应用,它被转化为求解一类 SVM。下图说明了如何通过使用具有松弛度的一类 SVM 来简化非线性边界,从而避免过度拟合复杂函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 7:非线性边界的一类 SVM

输入和输出

数据输入通常是数字特征。许多支持向量机可以采用名义特征,并对其应用二进制变换。还需要:标记感兴趣的类别、SVM 超参数,例如核选择、核参数和成本参数等。输出是一个 SVM 模型,可以预测实例是否属于感兴趣的类。这不同于我们之前看到的评分模型。

它是如何工作的?

输入是训练实例{ x [1] ,x[2]…x[n]}其中某些实例标记为在+1 班,其余为-1 班。

SVM 的输入还需要一个内核,该内核使用以下公式进行从输入空间到特征空间的变换 ϕ :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 SVM 公式创建一个限制类的超球体:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使得外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 + 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

R 是具有中心 c的超球体的半径,ν ∈ (0,1)表示离群数据部分的上界。

正如在正常 SVM 中,我们使用二次规划进行优化,以获得作为决策边界的解。

优点和局限性
  • 使用一类 SVM 的关键优势是在误差和泛化能力上有许多理论保证,二进制 SVM 也是如此。
  • 高维数据可以很容易地映射到一类 SVM 中。
  • 带核的非线性 SVM 甚至可以找到非球形形状来限制数据簇。
  • 随着数据量的增加,空间和内存方面的训练成本也会增加。
  • 参数调整,尤其是核参数和带有未标记数据的代价参数调整是一个很大的挑战。

离群值评估技术

根据标签、排名和得分来衡量异常值是一个活跃的研究领域。当标签或基本事实已知时,评估的想法变得容易得多,因为离群值类是已知的,并且可以采用标准度量。但是,当地面真相未知时,评估和验证方法是非常主观的,没有明确定义的,严格的统计过程。

监督评估

在已知基本事实的情况下,离群值算法的评估基本上是为离群值得分(基于得分的离群值)寻找最佳阈值的任务。

减少假阳性和提高真阳性之间的平衡是关键概念,精确召回曲线(在第二章、现实世界监督学习实用方法中描述)用于找到最佳阈值。在监督学习中使用置信度得分、预测和实际标签来绘制 pr 曲线,并且在这里对异常值得分进行排序并使用,而不是置信度得分。ROC 曲线和曲线下面积也在许多应用中用于评估阈值。当已知基本事实时,也可以使用曲线下面积度量来比较两种或更多种算法并选择最佳算法。

无监督评估

在大多数真实世界的案例中,了解基本事实是非常困难的,至少在建模任务中是如此。Hawkins 在很高的层次上描述了这种情况下的评估方法,即“包含异常值的样本将显示出这样的特征,如‘外围’和‘内部’观察值之间的巨大差距,以及异常值和内部组之间的偏差,如在一些适当的标准化尺度上测量的那样”。

当基本事实未知时,用于评估异常值的一般技术是:

  • 异常值得分直方图:一种基于可视化的方法,其中异常值得分被分组到预定义的箱中,用户可以根据异常值计数、得分和阈值来选择阈值。
  • 分数归一化和距离函数:在这种技术中,进行某种形式的归一化,以确保所有产生分数的异常值算法具有相同的范围。使用某种形式的基于距离或相似性或相关性的方法来发现不同算法中异常值的共性。这里的一般直觉是:将数据点加权为异常值的算法越多,该点实际上是异常值的概率就越高。

真实案例研究

在这里,我们展示了一个案例研究,说明了如何在现实世界中使用开源 Java 框架和一个众所周知的图像数据集来应用本章中描述的聚类和离群点技术。

工具和软件

我们将介绍两个在本章的实验中使用的新工具:SMILE 和 Elki。SMILE 有一个 Java API,用于说明使用 PCA、随机投影和 IsoMap 的特征约简。随后,Elki 的图形界面被用来执行无监督学习——具体来说,就是聚类和离群点检测。Elki 提供了一套丰富的聚类分析和离群点检测算法,包括大量模型评估器供选择。

注意

点击haifengl.github.io/smile/了解更多关于 SMILE 的信息,并访问elki.dbs.ifi.lmu.de/了解更多关于 Elki 的信息。

商业问题

字符识别是许多业务领域都会遇到的问题,例如,医疗报告和医院图表的翻译、邮政服务中的邮政编码识别、零售银行中的支票存款服务等等。人的笔迹可能因人而异。这里,我们只看手写数字,0 到 9。这个问题变得有趣是因为在某些数字组中的逼真度,例如 1/2/7 和 6/9/0。在本章的实验中,我们使用聚类和异常值分析,使用几种不同的算法来说明这些方法的相对优势和劣势。鉴于这些技术在数据挖掘应用中的广泛使用,我们的主要焦点是获得对数据、算法和评估方法的洞察;我们不应用模型来预测测试数据。

机器学习映射

正如本章标题所暗示的,我们的实验旨在通过忽略识别数据集中数字的标签来演示无监督学习。从数据集学习后,聚类和异常值分析可以产生描述数据模式的宝贵信息,并且通常用于探索这些模式和数据中的相互关系,而不仅仅是预测看不见的数据的类别。在这里描述的实验中,我们关心的是描述和探索,而不是预测。当外部评估措施可用时,使用标签,正如在这些实验中一样。

数据收集

这是已经为我们做好的。关于如何收集数据的细节,见:http://yann.lecun.com/exdb/mnist/MNIST 数据库。

数据质量分析

数据点中的每个特征是 784 个像素之一的灰度值。因此,所有特征的类型都是数字的;除了 class 属性之外,没有其他的分类类型,class 属性是一个范围在 0-9 之间的数字。此外,数据集中没有缺失的数据元素。下面是一个表格,其中包含一些像素的基本统计数据。图像在 28 x 28 框中预先居中,因此在大多数示例中,沿着框边界的数据为零:

|

特征

|

平均的

|

标准发展

|

福建话

|

最大

|
| — | — | — | — | — |
| 像素 300 | 94.25883 | One hundred and nine point one one seven | Zero | Two hundred and fifty-five |
| 像素 301 | Seventy-two point seven seven eight | 103.0266 | Zero | Two hundred and fifty-five |
| 像素 302 | 49.06167 | 90.68359 | Zero | Two hundred and fifty-five |
| pixel303 | 28.0685 | 70.38963 | Zero | Two hundred and fifty-five |
| 像素 304 | 12.84683 | 49.01016 | Zero | Two hundred and fifty-five |
| 像素 305 | 4.0885 | 27.21033 | Zero | Two hundred and fifty-five |
| 像素 306 | One point one four seven | 14.44462 | Zero | Two hundred and fifty-four |
| 像素 307 | 0.201667 | 6.225763 | Zero | Two hundred and fifty-four |
| 像素 308 | Zero | Zero | Zero | Zero |
| 像素 309 | 0.009167 | 0.710047 | Zero | Fifty-five |
| 像素 310 | 0.102667 | 4.060198 | Zero | Two hundred and thirty-seven |

表 1:预处理前原始数据集中的特征汇总

混合国家标准与技术研究所 ( MNIST )数据集是一个广泛用于评估无监督学习方法的数据集。选择 MNIST 数据集主要是因为高维数据中的聚类没有很好地分离。

原始 MNIST 数据集包含来自 NIST 的黑白影像。它们被标准化以适合 20×20 像素的盒子,同时保持纵横比。通过计算质心并将其平移到 28×28 维网格的中心,图像在 28×28 图像中居中。

基于强度,每个像素在 0 到 255 的范围内。784 个像素值变平,成为每个图像的高维特征集。下图描绘了数据中的样本数字 3,它映射到网格,其中每个像素都有一个从 0 到 255 的整数值。

本节描述的实验旨在展示无监督学习技术在众所周知的数据集上的应用。正如在第二章、中所做的那样,现实世界监督学习的实用方法使用监督学习技术,使用几种聚类和异常值方法进行了多次实验。对于每种选择的方法,给出了具有和不具有特征减少的实验结果,随后是结果的分析。

数据采样和转换

由于我们的重点是使用各种无监督技术探索数据集,而不是预测方面,所以我们在这里不关心训练、验证和测试样本。相反,我们使用整个数据集来训练模型以执行聚类分析。

在异常值检测的情况下,我们只创建两类数据的缩减样本,即 1 和 7。选择具有两个相似形状数字的数据集是为了建立一个问题空间,在这个空间中,各种异常检测技术的辨别能力将更加突出。

特征分析和降维

我们使用 SMILE 机器学习工具包的 Java API 演示了不同的特征分析和降维方法——PCA、随机投影和 IsoMap。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 8:显示了数字 3,其像素值分布在 28×28 的矩阵中,范围从 0 到 254。

这里给出了加载数据集的代码和读取值的代码以及行内注释:

//parser to parse the tab delimited file
DelimitedTextParser parser = new DelimitedTextParser();parser.setDelimiter("[\t]+");
//parse the file from the location
parser.parse("mnistData", new File(fileLocation);
//the header data file has column names to map
parser.setColumnNames(true);
//the class attribute or the response variable index
AttributeDataSet dataset = parser.setResponseIndex(new NominalAttribute("class"), 784);

//convert the data into two-dimensional array for using various techniques 
double[][] data = dataset.toArray(new double[dataset.size()][]);

五氯苯甲醚

下面的片段说明了使用支持 PCA 的 API 实现的维度缩减:

//perform PCA with double data and using covariance //matrix
PCA pca = new PCA(data, true);
//set the projection dimension as two (for plotting here)
pca.setProjection(2);
//get the new projected data in the dimension
double[][] y = pca.project(data);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 9:MNIST 上的主成分分析——在左边,我们看到超过 90%的数据差异是由不到一半的原始特征数量造成的;右边是使用前两个主成分的数据表示。

表 PCA 后 11 个随机特征集合的总结

PCA 计算将特征的数量减少到 274。在下表中,您可以看到随机选择的一组功能的基本统计数据。作为 PCA 的一部分,特征数据已被标准化:

|

特征

|

平均的

|

标准发展

|

福建话

|

最大

|
| — | — | — | — | — |
| one | Zero | 2.982922 | -35.0821 | 19.73339 |
| Two | Zero | 2.415088 | -32.6218 | 31.63361 |
| three | Zero | 2.165878 | -21.4073 | 16.50271 |
| four | Zero | 1.78834 | -27.537 | 31.52653 |
| five | Zero | 1.652688 | -21.4661 | 22.62837 |
| six | Zero | 1.231167 | -15.157 | 10.19708 |
| seven | Zero | 0.861705 | -6.04737 | 7.220233 |
| eight | Zero | 0.631403 | -6.80167 | 3.633182 |
| nine | Zero | 0.606252 | -5.46206 | 4.118598 |
| Ten | Zero | 0.578355 | -4.21456 | 3.621186 |
| Eleven | Zero | 0.528816 | -3.48564 | 3.896156 |

表 PCA 后 11 个随机特征集合的总结

随机预测

这里,我们展示了使用随机投影执行数据转换的 API 的简单用法:

//random projection done on the data with projection in //2 dimension
RandomProjection rp = new RandomProjection(data.length, 2, false);
//get the transformed data for plotting
double[][] projectedData = rp.project(data);

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 10:使用 Smile API 的二维 PCA 和随机投影表示

ISOMAP

这段代码片段展示了如何使用 API 进行 Isomap 转换:

//perform isomap transformation of data, here in 2 //dimensions with k=10
IsoMap isomap = new IsoMap(data, 2, 10);
//get the transformed data back
double[][] y = isomap.getCoordinates();

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 11:IsoMap——使用 Smile API 的二维表示,k = 10

对特征分析和降维的观察

我们可以从图中所示的结果中得出以下观察结果:

  • PCA 方差和维数图清楚地表明,大约 100 个线性组合的特征在数据中具有与 784 个原始特征相似的表示或方差(> 95%)。这是任何非监督特征约简分析的关键第一步。
  • 即使是二维的 PCA,而不是前面描述的 100,在散点图可视化中也显示了一些非常好的见解。很明显,数字 2、8 和 4 彼此之间有很好的区别,这是有意义的,因为它们彼此之间写得很清楚。低维空间中的数字如{1,7}、{3,0,5}和{1,9}要么重叠,要么紧密聚集。这表明仅用两个特征是不可能有效区分的。它还表明,这些类别之间的特性或特征存在重叠。
  • 下一张图比较了 PCA 和随机投影,两者都是在较低的 2 维中完成的,显示了输出之间有许多共同之处。如前所述,两者对不同类别具有相似的分离。有趣的是,PCA 在分离数字{8,9,4}方面比随机投影做得更好。
  • 下一个图 Isomap 显示了良好的区分度,类似于 PCA。主观上,它似乎比随机预测更好地分离了数据。例如,视觉上,{3,0,5}在 Isomap 中比在 PCA 中更容易分离。

聚类模型、结果和评估

使用 MNIST-6000 数据集进行了两组实验。数据集由 6000 个例子组成,每个例子都用 28 x 28 平方像素的灰度值表示一个手写数字。

首先,我们运行一些聚类技术来识别 10 组数字。对于案例研究的这一部分的实验,我们使用软件 Elki。

在第一组实验中,没有涉及特征缩减。使用所有 28×28 像素。使用了聚类技术,包括 k-Means、EM(对角高斯模型工厂)、DBSCAN、Hierarchical (HDBSCAN 层次提取)以及相似性传播。在每种情况下,我们都使用来自两个内部评估者的指标:Davies Bouldin 和 Silhouette,以及几个外部评估者:Precision、Recall、F1 measure 和 Rand Index。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图 12:K-Means——使用误差平方和(SSE)来寻找最优的 k ,即聚类数。曲线中通常用于选择最佳 k 值的弯头在图中不是特别可检测的。

在 k 均值的案例中,我们使用 k 值的范围进行了几次运行。图显示误差平方和(SSE)指标随着 k 的增加而减少。

该表显示了 k=10 的结果,每个结果的等级在括号中:

|

算法

|

轮廓

|

戴维斯-波尔丁指数

|

精确

|

回忆

|

子一代

|

兰特

|
| — | — | — | — | — | — | — |
| k-表示劳埃德 | ±0.09 0.0737 (1) | 2.8489 (3) | 0.4463 (3) | 0.47843 (3) | 0.4618 (1) | 0.8881 (3) |
| 对角高斯模型工厂 | 圆盘烤饼 | 0 (1) | 0.1002 (6) | 1 (1) | 0.1822 (4) | 0.1003 (5) |
| 基于密度的噪声应用空间聚类 | 0 (4) | 0 (1) | 0.1003 (5) | 1 (1) | 0.1823 (3) | 0.1003 (5) |
| 分级(HDBSCAN 分级提取) | ±0.05 0.0435 (3) | 2.7294 | 0.1632 (4) | 0.9151 (2) | 0.2770 (2) | 0.5211 (4) |
| 分层(简化的层次提取) | 圆盘烤饼 | 0 (1) | 1 (1) | 0.0017 (5) | 0.0033 (6) | 0.8999 (2) |
| 亲和传播 | ±0.07 0.04690 (2) | 1.7872 (2) | 0.8279 (2) | 0.0281 (4) | 0.0543 (5) | 0.9019 (1) |

表 3。MNIST 数据聚类算法评估

在第二次聚类实验中,首先使用 PCA 对数据集进行预处理,并且使用与第一次实验中相同的算法来使用每个示例具有 273 个特征的结果数据。结果如表所示:

|

算法

|

轮廓

|

戴维斯-波尔丁指数

|

精确

|

回忆

|

子一代

|

兰特

|
| — | — | — | — | — | — | — |
| k-表示劳埃德 | ±0.14 0.0119 | 3.1830 | 0.3456 | 0.4418 | 0.3878 (1) | 0.8601 |
| 对角高斯模型工厂 | ±0.16 -0.0402 | 3.5429 | 0.1808 | 0.3670 | 0.2422 | 0.7697 |
| 基于密度的噪声应用空间聚类 | ±0.13 -0.0351 | 1.3236 | 0.1078 | 0.9395 (1) | 0.1934 | 0.2143 |
| 分级(HDBSCAN 分级提取) | ±0.05 0.7920 (1) | 0.0968 | 0.1003 | 0.9996 | 0.1823 | 0.1005 |
| 亲和传播 | ±0.09 0.0575 | 1.6296 | 0.6130 (1) | 0.0311 | 0.0592 | 0.9009 (1) |
| 子空间 | ±0.00 0.0 | 0 (1) | 0.1003 | one | 0.1823 | 0.1003 |

表 4。PCA 后 MNIST 数据聚类算法的评价

观察和聚类分析

如表 2.1 和 2.2 所示的,使用不同的评估方法对聚类章节中讨论的不同算法进行了比较。

通常,根据技术、领域和业务需求比较不同的内部和外部度量是非常重要的。当标签或结果在数据集中可用时,使用外部测量成为更容易的选择。当标记数据不可用时,规范是使用内部度量,每个内部度量都有一些排名,并查看所有度量的比较排名。重要且通常有趣的观察是在这个阶段进行的:

  • 使用诸如误差平方和的度量来评估具有变化 k (如图所示)的 k-Means 的性能,是查看集群数量的“最优性”的基本步骤。该图清楚地显示,随着 k 的增加,分数随着聚类分离的改善而提高。

  • 当我们分析表 2.1 时,其中使用了所有 784 个特征,并且示出了不同算法的所有评估测量,一些关键的事情突出出来:

    • k-均值和相似性传播都分别在标准偏差和平均值方面示出了轮廓指数中的大的重叠(k-均值±0.09±0.0737;亲和繁殖±0.07±0.04690)。因此,很难用这个标准来分析它们。
    • 在 DB 指数(极小为好)、Rand 指数(接近 1 为好)等度量中,我们看到亲和传播和层次聚类表现出非常好的结果。
    • 在考虑标签的度量中,层次聚类、DBSCAN 和 EM 具有高精度或高召回率,因此 F1 度量较低。当考虑精确度和召回率时,k-Means 给出最高的 F1 度量。
  • 在表 2.2 中,具有 273 个特征的数据集(使用 PCA 减少,保留 95%的方差)通过相同的算法运行,并通过相同的测量进行评估,我们得出以下有趣的观察结果:

通过减少特征,对某些算法的每个测量都有负面影响;例如,k-Means 的所有度量都降级。当使用简化的特征时,诸如相似性传播的算法具有非常低的影响,并且在某些情况下甚至是积极的影响。当与使用所有特征的结果相比较时,AP 显示出相似的 Rand 指数和 F1,更好的回忆、DB 指数和轮廓测量,以及精度的小变化,证明了明显的鲁棒性。

分层的聚类在更好的 DB 指数和 Rand 指数以及 Rand 指数中接近 AP 的分数方面显示了与之前类似的结果。

异常模型、结果和评估

对于异常值检测技术,我们使用了包含数字 1 的所有示例和数字 7 示例的欠采样子集的原始数据集的子集。想法是两个数字形状的相似性将导致数字 7 的例子被发现是异常值。

使用的模型选自角度、基于距离、聚类、LOF 和一类 SVM。

评估中使用的异常值指标是 ROC AUC、平均精度、R 精度和最大 F1 值。

下表显示了获得的结果,括号中为等级:

|

算法

|

ROC AUC

|

平均值。精确

|

r 精度

|

最大 F1

|
| — | — | — | — | — |
| 棱角分明(ABOD) | 0.9515 (3) | 0.1908 (4) | 0.24 (4) | 0.3298 (4) |
| 基于距离(KNN 异常值) | 0.9863 (1) | 0.4312 (3) | 0.4533 (3) | 0.4545 (3) |
| 基于距离(局部隔离系数) | 0.9863 (1) | 0.4312 (3) | 0.4533 (3) | 0.4545 (3) |
| 聚类(EM 异常值) | 0.5 (5) | 0.97823827 (1) | 0.989 (1) | 0.9945 (1) |
| 力线 | 0.4577 (6) | 0.0499 (6) | 0.08 (6) | 0.0934 (6) |
| LOF(阿洛基) | 0.5 (5) | 0.0110 (7) | 0.0110 (7) | 0.0218 (7) |
| LOF (COF) | 0.4577 (6) | 0.0499 (6) | 0.08 (6) | 0.0934 (6) |
| 一级 SVM (RBF) | 0.9820 (2) | 0.5637 (2) | 0.5333 (2) | 0.5697 (2) |
| 一级 SVM(线性) | 0.8298 (4) | 0.1137 (5) | 0.16 (5) | 0.1770 (5) |

表 5 异常值分析算法的评价指标

观察和分析

在中,正如我们评估不同的聚类方法一样,我们使用了几个观察值来比较一些离群值算法。同样,正确的方法是根据所有指标的排名来判断一个算法,然后与其他算法相比,全面了解它的表现。这里使用的异常值度量都是用于比较异常值算法的标准外部度量:

  • 有趣的是,使用正确的参数,即 k=2 ,EM 可以找到正确的分布,并比大多数更有效地发现异常值。它排名很高,在包括最大 F1、R-Precision 和 Avg 在内的重要指标中名列第一。精准。
  • 具有非线性 RBF 核的 1 类 SVM 在大多数指标上表现一致,即在 ROC 面积、R-Precision 和 Avg 方面排名第二。精度和最大 F1。线性 SVM(在大多数排名中排名第五)和 1 级 SVM(排名第二)之间的差异表明,该问题实际上是非线性的。一般来说,当维数很高(784),离群值是非线性的和罕见的,1 类核 SVM 做得很好。
  • 基于局部异常值的技术(LOF 和它的变体)在几乎所有的测量中一直排名靠后。这使我们认识到异常值问题可能不是局部的,而是全球性的。基于距离的算法(KNN 和局部隔离)在曲线下的 ROC 区域中表现最佳,并且优于基于局部异常值的算法,即使使用基于距离的度量给出了问题确实是全局的并且适合于基于距离的测量的洞察。

表 1:预处理前原始数据集中的要素汇总

总结

监督和非监督学习方法都有共同的关注点,即随着数据规模的增长,噪声数据、高维度以及对内存和时间的需求。由于缺乏基础事实,无监督学习特有的其他问题是与模型评估中的主观性及其可解释性、聚类边界的影响等相关的问题。

特征约简是一个重要的预处理步骤,除了呈现其他优点之外,还减轻了可伸缩性问题。线性方法,如主成分分析、随机投影和 MDS,每一种都有特定的优势和局限性,我们必须了解每种方法固有的假设。非线性特征约简方法包括 KPCA 和流形学习。

在聚类算法中,k-Means 是一种基于质心的技术,通过选择聚类数来初始化,它对质心的初始选择很敏感。DBSCAN 是一种基于密度的算法,它不需要用聚类数初始化,并且对噪声和离群点具有鲁棒性。基于概率的技术包括均值漂移和 EM/GMM,均值漂移是确定性的,对噪声具有鲁棒性,EM/对所有类型的特征都表现良好。均值漂移和 EM/GMM 都有可扩展性问题。

层次聚类是一种强大的方法,涉及构建二叉树,该二叉树迭代地将数据点分组,直到达到相似性阈值。对噪声的容忍度取决于所使用的相似性度量。SOM 是一个两层神经网络,允许在二维网格中可视化聚类。谱聚类将数据集视为一个连通图,并通过图划分来识别聚类。相似性传播是另一种基于图的技术,它使用数据点之间的消息传递作为相似性来检测聚类。

聚类算法的有效性和有用性是使用各种验证和评估措施来证明的。内部措施无法获得基本事实;当标签可用时,可以使用外部测量。内部测量的例子是剪影指数和戴维斯-波尔丁指数。Rand 指数和 F-measure 是外部评价指标。

离群点和异常检测是无监督学习的一个重要领域。技术分为基于统计的、基于距离的、基于密度的、基于聚类的、基于高维的和一类 SVM。离群值评估技术包括监督评估和非监督评估,前者是已知的,后者是未知的。

使用 SMILE Java API 和 Elki toolkit 的实验说明了在 MNIST6000 手写数字数据集上各种聚类和离群点检测技术的使用。介绍并比较了不同评估技术的结果。

参考文献

  1. K.皮尔逊(1901 年)。在最接近空间点系统的直线和平面上。哲学杂志,2:559–572。
  2. A.d .回溯(1997 年)。"独立成分分析首次应用于从股票收益中提取结构,《神经系统》,第 8 卷,第 4 期,第 473–484 页。
  3. 给我小费,主教厘米(1999 年)。概率主成分分析。皇家统计学会杂志,B 辑,61(3):611–622。10.1111/1467-9868.00196
  4. 桑乔伊·达斯古普塔(2000 年)。随机投影实验。《第十六届人工智能不确定性会议论文集》(UAI’00),Craig Boutilier 和 moisés goldzmidt(编辑。).摩根考夫曼出版公司,美国加利福尼亚州旧金山,143-151。
  5. T.考克斯和 m .考克斯(2001)。多维缩放。查普曼音乐厅,博卡拉顿,第二版。
  6. 伯恩哈德·朔尔科普夫、亚历山大·j·斯莫拉和克劳斯·罗伯特·穆勒(1999 年)。核主成分分析。《核心方法的进展》,麻省理工学院出版社,麻省剑桥,美国 327-352 页。
  7. 特南鲍姆;德席尔瓦五世;和兰福德,J . C .(2000 年)。非线性降维的全局几何框架。科学。第 290 卷,第 5500 期,第 2319-2323 页
  8. 米(meter 的缩写))Belkin 和 P. Niyogi (2003)。用于降维和数据表示的拉普拉斯特征图。神经计算,15(6):1373–1396。
  9. 南 Roweis 和 L. Saul (2000 年)。通过局部线性嵌入进行非线性降维。科学,290:2323–2326。
  10. 哈迪根,j .和黄,M .(1979)。算法 AS136:一种 k 均值聚类算法。应用统计学,28,100-108。
  11. Dorin Comaniciu 和 Peter Meer (2002 年)。均值漂移:一种稳健的特征空间分析方法。IEEE 模式分析与机器智能汇刊第 603-619 页。
  12. 等级聚类 Jain,a .和 Dubes,R .(1988 年)。聚类数据的算法。新泽西州恩格尔伍德悬崖普伦蒂斯霍尔。
  13. 麦克拉克伦和巴斯福德(1988 年)。混合模型:推理及其在聚类中的应用。纽约州纽约市 Marcel Dekker
  14. 1996 年 5 月至 12 月,北京大学出版社出版。一种基于密度的算法,用于在带有噪声的大型空间数据库中发现聚类。俄勒冈州波特兰市 226-231 号第二届^和美国计算机学会会议录。
  15. Y.Ng、M. I. Jordan 和 Y. Weiss (2001 年)。关于谱聚类:分析和算法,神经信息处理系统进展。麻省理工学院出版社,第 849-856 页。
  16. 德尔伯特·杜克和布伦丹·j·弗雷(2007)。用于无监督图像分类的非度量相似性传播。在 IEEE Int。糖膏剂计算机视觉(ICCV),第 1-8 页。
  17. Teuvo Kohonen (2001 年)。自组织映射。斯普林格,柏林,海德堡。1995.第三,加长版。
  18. 米(meter 的缩写))Halkidi、Y. Batistakis 和 M. Vazirgiannis (2001 年)。关于聚类验证技术,J. Intell。Inf。系统。,第 17 卷,第 107-145 页。
  19. 米(meter 的缩写))马尔科·辛格(2003 年)。新颖性检测:综述-第一部分:统计方法,信号处理。83 (12) 2481–2497
  20. 拜尔斯和拉夫特里(1998 年)。用于估计空间点过程特征的最近邻杂波去除。j .阿梅尔。统计数据。协会 93, 577–584.
  21. Breunig,M. M .,Kriegel,H.-P .,Ng,R. T .,和 Sander,J .(1999 年)。光学-of:识别局部异常值。《第三届欧洲数据挖掘和知识发现原理会议论文集》。施普林格出版社,262-270 年。
  22. Brito,M. R .、Chavez,E. L .、Quiroz,A. J .和 yukich,j . E .(1997 年)。聚类和离群点检测中互 k 近邻图的连通性。统计数据。Prob。列特。35, 1, 33–42.
  23. 阿加瓦尔和俞平声(2000)。高维数据的离群点检测。美国德克萨斯州达拉斯市 ACM SIGMOD 国际数据管理会议。
  24. Ghoting,a .,Parthasarathy,s .,和 Otey,M .(2006 年)。高维空间中基于距离的离群值的快速挖掘数据挖掘(SDM) Bethesda ML 维空间会议论文集 SIAM Int Conf。进行中。暹罗国际。糖膏剂关于数据挖掘(SDM),马里兰州贝塞斯达。
  25. Kriegel,H.-P .,Schubert,m .和 Zimek,A .(2008 年)。基于角度的异常值检测,美国计算机学会会报。知识发现和数据挖掘会议。知识发现和数据挖掘(SIGKDD),内华达州拉斯维加斯。
  26. Schoelkopf,b .,Platt,J. C .,Shawe-Taylor,J. C .,Smola,A. J .,和 Williamson,r . C .(2001 年)。估计一个高维分布的支持度。神经计算。13, 7, 1443–1471.
  27. F Pedregosa 等人sci kit-learn:Python 中的机器学习。机器学习研究杂志,2825-2830。****
Mastering Java Machine Learning English | 2017 | ISBN-10: 1785880519 | 556 pages | PDF/MOBI/EPUB (conv) | 20 Mb Become an advanced practitioner with this progressive set of master classes on application-oriented machine learning About This Book Comprehensive coverage of key topics in machine learning with an emphasis on both the theoretical and practical aspects More than 15 open source Java tools in a wide range of techniques, with code and practical usage. More than 10 real-world case studies in machine learning highlighting techniques ranging from data ingestion up to analyzing the results of experiments, all preparing the user for the practical, real-world use of tools and data analysis. Who This Book Is For This book will appeal to anyone with a serious interest in topics in Data Science or those already working in related areas: ideally, intermediate-level data analysts and data scientists with experience in Java. Preferably, you will have experience with the fundamentals of machine learning and now have a desire to explore the area further, are up to grappling with the mathematical complexities of its algorithms, and you wish to learn the complete ins and outs of practical machine learning. What You Will Learn Master key Java machine learning libraries, and what kind of problem each can solve, with theory and practical guidance. Explore powerful techniques in each major category of machine learning such as classification, clustering, anomaly detection, graph modeling, and text mining. Apply machine learning to real-world data with methodologies, processes, applications, and analysis. Techniques and experiments developed around the latest specializations in machine learning, such as deep learning, stream data mining, and active and semi-supervised learning. Build high-performing, real-time, adaptive predictive models for batch- and stream-based big data learning using the latest tools and methodologies. Get a deeper understanding of technologies leading to
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值