介绍
机器学习是人工智能(AI)的一个子领域。机器学习的目标通常是理解数据的结构,并将该数据拟合到可以被人理解和利用的模型中。
尽管机器学习是计算机科学的一个领域,但它与传统的计算方法有所不同。在传统计算中,算法是一组明确编程的指令,用于计算或解决问题。而机器学习算法允许计算机对数据输入进行训练,并使用统计分析来输出落在特定范围内的值。因此,机器学习有助于计算机根据数据输入构建模型,以自动化基于数据输入的决策过程。
今天的任何技术用户都受益于机器学习。面部识别技术使社交媒体平台能够帮助用户标记和分享朋友的照片。光学字符识别(OCR)技术将文本图像转换为可移动类型。由机器学习驱动的推荐引擎根据用户偏好建议下一步要观看的电影或电视节目。依赖机器学习进行导航的自动驾驶汽车可能很快就会面向消费者。
机器学习是一个不断发展的领域。因此,在使用机器学习方法或分析机器学习过程的影响时,需要考虑一些因素。
在本教程中,我们将深入探讨监督学习和无监督学习这两种常见的机器学习方法,以及机器学习中常见的算法方法,包括 k-最近邻算法、决策树学习和深度学习。我们将探讨在机器学习中最常用的编程语言,为您提供每种语言的一些优点和缺点。此外,我们将讨论机器学习算法所固有的偏见,并考虑在构建算法时如何避免这些偏见。
机器学习方法
在机器学习中,任务通常被归类为广泛的类别。这些类别是基于学习如何接收或反馈学习给开发的系统。
最广泛采用的两种机器学习方法是监督学习,它基于人类标记的示例输入和输出数据来训练算法,以及无监督学习,它为算法提供没有标记的数据,以便让它在输入数据中找到结构。让我们更详细地探讨这些方法。
监督学习
在监督学习中,计算机提供带有其期望输出标签的示例输入。该方法的目的是让算法通过比较其实际输出与“教授”的输出来发现错误,并相应地修改模型。因此,监督学习使用模式来预测额外的未标记数据上的标签值。
例如,在监督学习中,算法可能会被提供带有被标记为鱼
的鲨鱼图像和被标记为水
的海洋图像的数据。通过对这些数据进行训练,监督学习算法应该能够稍后将未标记的鲨鱼图像识别为鱼
,未标记的海洋图像识别为水
。
监督学习的一个常见用例是使用历史数据来预测统计上可能发生的未来事件。它可以使用历史股市信息来预测即将发生的波动,或者用于过滤垃圾邮件。在监督学习中,标记的狗照片可以用作输入数据,以对未标记的狗照片进行分类。
无监督学习
在无监督学习中,数据是未标记的,因此学习算法需要在其输入数据中找到共性。由于未标记数据比标记数据更丰富,因此促进无监督学习的机器学习方法尤为重要。
无监督学习的目标可能很简单,比如在数据集中发现隐藏的模式,但它也可能有特征学习的目标,这允许计算机自动发现对原始数据进行分类所需的表示。
无监督学习通常用于交易数据。您可能有一个大型客户及其购买记录的数据集,但作为人类,您可能无法理解从客户资料和其购买类型中可以得出哪些相似属性。将这些数据输入无监督学习算法后,可能会确定某个年龄段的女性购买无香味肥皂的可能怀孕,因此可以针对这个受众展开与怀孕和婴儿产品相关的营销活动,以增加其购买数量。
无监督学习方法可以在没有“正确”答案的情况下,查看更广泛和看似不相关的复杂数据,以便以可能有意义的方式组织它。无监督学习通常用于异常检测,包括欺诈信用卡交易,以及推荐系统推荐下一个要购买的产品。在无监督学习中,未标记的狗照片可以用作输入数据,以便算法找到相似之处并将狗照片分类在一起。
方法
作为一个领域,机器学习与计算统计学密切相关,因此具有统计学背景知识对于理解和利用机器学习算法是有帮助的。
对于那些可能没有学习统计学的人来说,首先定义相关性和回归可能是有帮助的,因为它们是用于研究定量变量之间关系的常用技术。相关性是两个未指定为依赖或独立的变量之间关联的度量。回归在基本水平上用于检查一个因变量和一个自变量之间的关系。由于回归统计可以用于在已知自变量时预测因变量,因此回归具有预测能力。
机器学习方法不断发展。对于我们的目的,我们将介绍一些在撰写本文时正在使用的流行方法。
k-最近邻算法
k-最近邻算法是一种模式识别模型,可用于分类和回归。通常简写为 k-NN,其中的 k 是一个小的正整数。在分类或回归中,输入将由空间内 k 个最接近的训练样本组成。
我们将重点关注 k-NN 分类。在这种方法中,输出是类成员资格。这将把一个新对象分配给其 k 个最近邻居中最常见的类。在 k = 1 的情况下,对象被分配到单个最近邻的类中。
让我们看一个 k-最近邻算法的例子。在下面的图表中,有蓝色菱形对象和橙色星形对象。它们属于两个不同的类别:菱形类和星形类。
!k-最近邻算法初始数据集
当一个新对象被添加到空间中——在这种情况下是一个绿色心形——我们希望机器学习算法将心形分类到某个类别。
!k-最近邻算法带有新对象的数据集
当我们选择 k = 3 时,该算法将找到绿色心形的三个最近邻,以便将其分类为菱形类或星形类。
在我们的图表中,绿色心形的三个最近邻是一个菱形和两个星形。因此,该算法将把心形分类为星形类。
!k-最近邻算法分类完成的数据集
在机器学习算法中最基本的算法之一,k-最近邻被认为是一种“懒惰学习”,因为除非对系统进行查询,否则不会发生对训练数据之外的泛化。
决策树学习
对于一般用途,决策树被用来直观地表示决策并展示或通知决策制定。在机器学习和数据挖掘中,决策树被用作预测模型。这些模型将数据的观察映射到数据目标值的结论。
决策树学习的目标是创建一个模型,根据输入变量预测目标的值。
在预测模型中,通过观察确定的数据属性被表示为分支,而关于数据目标值的结论则被表示为叶子。
在“学习”树时,源数据根据属性值测试被划分为子集,然后在每个派生子集上递归重复进行测试。一旦节点的子集具有与其目标值相等的值,递归过程将完成。
让我们看一个可以确定某人是否应该去钓鱼的各种条件的例子。这包括天气条件以及气压条件。
!钓鱼决策树示例
在上面简化的决策树中,通过将示例通过树分类到适当的叶节点,然后返回与特定叶节点相关联的分类,这在这种情况下要么是 Yes
要么是 No
。该树根据一天的条件对其是否适合钓鱼进行分类。
真正的分类树数据集将比上面概述的特征多得多,但关系应该是直接确定的。在进行决策树学习时,需要做出几项决定,包括选择哪些特征、用于分割的条件以及了解决策树何时达到明确的结束。
深度学习
深度学习试图模仿人脑如何将光和声刺激处理成视觉和听觉。深度学习架构受生物神经网络的启发,由多层组成,是由硬件和 GPU 组成的人工神经网络。
深度学习使用级联的非线性处理单元层来提取或转换数据的特征(或表示)。一个层的输出作为后续层的输入。在深度学习中,算法可以是有监督的,用于对数据进行分类,也可以是无监督的,用于进行模式分析。
在当前使用和开发的机器学习算法中,深度学习吸收了最多的数据,并且在某些认知任务上已经能够超过人类。由于这些特性,深度学习已成为人工智能领域具有重要潜力的一种方法。
计算机视觉和语音识别都从深度学习方法中实现了显著进展。IBM Watson 是一个利用深度学习的知名系统。
编程语言
在选择一种专门用于机器学习的语言时,您可能希望考虑当前工作广告中列出的技能,以及各种语言中可用于机器学习流程的库。
Python 是用于机器学习的最流行的语言之一,因为有许多可用的框架,包括 TensorFlow、PyTorch 和 Keras。作为一种具有可读性语法和能够用作脚本语言的语言,Python 在预处理数据和直接处理数据方面都表现出色。scikit-learn 机器学习库是建立在几个现有的 Python 包之上的,这些包可能已经为 Python 开发人员所熟悉,即 NumPy、SciPy 和 Matplotlib。
要开始使用 Python,您可以阅读我们的“如何在 Python 3 中编码”教程系列,或者专门阅读“如何使用 scikit-learn 在 Python 中构建机器学习分类器”或“如何使用 Python 3 和 PyTorch 执行神经风格转移”。
Java 在企业编程中被广泛使用,通常由前端桌面应用程序开发人员在企业级别上也从事机器学习。通常不是新手学习机器学习的首选语言,但受到具有 Java 开发背景的人的青睐。在工业中的机器学习应用中,Java 往往比 Python 更多地用于网络安全,包括网络攻击和欺诈检测用例。
Java 的机器学习库包括 Deeplearning4j,这是一个为 Java 和 Scala 编写的开源分布式深度学习库;MALLET(MAchine Learning for LanguagE Toolkit)允许在文本上进行机器学习应用,包括自然语言处理、主题建模、文档分类和聚类;以及 Weka,这是一组用于数据挖掘任务的机器学习算法集合。
C++ 是游戏或机器人应用中的首选语言(包括机器人运动)的机器学习和人工智能。嵌入式计算硬件开发人员和电子工程师更有可能在机器学习应用中使用 C++ 或 C,因为他们精通该语言并且能够控制语言的水平。您可以使用的一些 C++ 机器学习库包括可扩展的 mlpack、提供广泛机器学习算法的 Dlib,以及模块化和开源的 Shark。
人类偏见
尽管数据和计算分析可能让我们认为我们正在接收客观信息,但事实并非如此;基于数据并不意味着机器学习的输出是中立的。人类偏见在数据收集、组织以及最终决定机器学习如何与数据交互的算法中起着作用。
例如,如果人们提供“鱼”的图像作为训练算法的数据,并且这些人绝大多数选择了金鱼的图像,计算机可能不会将鲨鱼分类为鱼。这将导致对鲨鱼作为鱼的偏见,鲨鱼将不被视为鱼。
当使用历史照片作为科学家的训练数据时,计算机可能无法正确分类那些也是有色人种或女性的科学家。事实上,最近的同行评议研究表明,人工智能和机器学习程序表现出包括种族和性别偏见在内的类似人类的偏见。例如,参见“从语料库自动推导出的语义包含类似人类的偏见”和“男性也喜欢购物:使用语料库级别约束减少性别偏见放大”[PDF]。
随着机器学习在业务中的应用越来越广泛,未被发现的偏见可能会延续系统性问题,可能会导致人们无法获得贷款资格,无法看到高薪工作机会的广告,或无法获得当天送货选项。
由于人类偏见可能会对他人产生负面影响,因此非常重要的是意识到它,并努力尽可能消除它。朝着这个目标努力的一种方式是确保有不同背景的人参与项目,并且多样化的人进行测试和审查。其他人呼吁监管第三方监督和审计算法,构建可以检测偏见的替代系统,并将伦理审查作为数据科学项目规划的一部分。提高对偏见的认识,注意我们自己的无意识偏见,并在机器学习项目和流程中构建公平性,可以有助于消除这一领域的偏见。
!DigitalOcean 机器学习
结论
本教程回顾了机器学习的一些用例,领域中常见的方法和流行的方法,适合的机器学习编程语言,并且还涵盖了在算法中复制无意识偏见时需要牢记的一些事项。
由于机器学习是一个不断创新的领域,重要的是要记住算法、方法和途径将继续变化。
除了阅读我们的教程“如何使用scikit-learn在Python中构建机器学习分类器”或“如何使用Python 3和PyTorch执行神经风格迁移”,您还可以通过阅读我们的数据分析教程来了解更多有关在技术行业中处理数据的信息。