机器学习简介

来自菜鸟教程
跳转至:导航、​搜索

介绍

机器学习是人工智能 (AI) 的一个子领域。 机器学习的目标通常是理解数据的结构,并将数据拟合到人们可以理解和使用的模型中。

尽管机器学习是计算机科学中的一个领域,但它不同于传统的计算方法。 在传统计算中,算法是计算机用来计算或解决问题的一组明确编程的指令。 相反,机器学习算法允许计算机对数据输入进行训练并使用统计分析来输出特定范围内的值。 正因为如此,机器学习有助于计算机从样本数据构建模型,以便根据数据输入自动化决策过程。

今天的任何技术用户都从机器学习中受益。 面部识别技术允许社交媒体平台帮助用户标记和分享朋友的照片。 光学字符识别 (OCR) 技术将文本图像转换为可移动字体。 由机器学习提供支持的推荐引擎根据用户偏好建议接下来要观看的电影或电视节目。 依靠机器学习导航的自动驾驶汽车可能很快就会提供给消费者。

机器学习是一个不断发展的领域。 因此,在使用机器学习方法或分析机器学习过程的影响时,需要牢记一些注意事项。

在本教程中,我们将研究有监督和无监督学习的常见机器学习方法,以及机器学习中的常见算法方法,包括 k 近邻算法、决策树学习和深度学习。 我们将探索哪些编程语言最常用于机器学习,为您提供每种语言的一些正面和负面属性。 此外,我们将讨论由机器学习算法长期存在的偏见,并考虑在构建算法时可以记住什么来防止这些偏见。

机器学习方法

在机器学习中,任务通常分为几大类。 这些类别基于如何接收学习或如何将学习反馈提供给开发的系统。

两种最广泛采用的机器学习方法是 监督学习 ,它基于人类标记的示例输入和输出数据训练算法,以及 无监督学习 ,它提供没有标记的算法数据,以便允许它在其输入数据中找到结构。 让我们更详细地探讨这些方法。

监督学习

在监督学习中,为计算机提供了示例输入,这些输入标有所需的输出。 这种方法的目的是让算法能够通过将其实际输出与“教导”输出进行比较来“学习”以发现错误,并相应地修改模型。 因此,监督学习使用模式来预测其他未标记数据的标签值。

例如,通过监督学习,算法可以输入标记为 fish 的鲨鱼图像和标记为 water 的海洋图像的数据。 通过在这些数据上进行训练,监督学习算法应该能够稍后将未标记的鲨鱼图像识别为 fish,将未标记的海洋图像识别为 water

监督学习的一个常见用例是使用历史数据来预测统计上可能发生的未来事件。 它可以使用历史股票市场信息来预测即将到来的波动,或用于过滤垃圾邮件。 在监督学习中,标记的狗照片可以用作输入数据,对未标记的狗照片进行分类。

无监督学习

在无监督学习中,数据是未标记的,因此学习算法要在其输入数据中寻找共性。 由于未标记的数据比标记的数据更丰富,因此促进无监督学习的机器学习方法特别有价值。

无监督学习的目标可能与发现数据集中的隐藏模式一样简单,但它也可能具有特征学习的目标,它允许计算机自动发现对原始数据进行分类所需的表示。

无监督学习通常用于交易数据。 您可能拥有大量客户及其购买的数据集,但作为人类,您可能无法理解可以从客户资料及其购买类型中提取哪些相似属性。 将此数据输入无监督学习算法后,可以确定购买无香皂的特定年龄段的女性可能怀孕,因此可以针对此受众进行与怀孕和婴儿产品相关的营销活动增加他们的购买次数。

在没有被告知“正确”答案的情况下,无监督学习方法可以查看更广泛且看似无关的复杂数据,以便以可能有意义的方式对其进行组织。 无监督学习通常用于异常检测,包括欺诈性信用卡购买,以及推荐下一步购买什么产品的推荐系统。 在无监督学习中,可以将未标记的狗照片用作算法的输入数据,以找到相似之处并将狗照片分类在一起。

方法

作为一个领域,机器学习与计算统计密切相关,因此拥有统计背景知识对于理解和利用机器学习算法很有用。

对于那些可能没有学过统计学的人来说,首先定义相关性和回归是有帮助的,因为它们是研究定量变量之间关系的常用技术。 Correlation 是衡量两个变量之间关联的量度,这两个变量既没有被指定为依赖的,也没有被指定为独立的。 Regression 在基本级别用于检查一个因变量和一个自变量之间的关系。 因为当自变量已知时,回归统计可用于预测因变量,所以回归能够实现预测能力。

机器学习的方法正在不断发展。 出于我们的目的,我们将介绍一些在撰写本文时机器学习中使用的流行方法。

k-最近邻

k-最近邻算法是一种模式识别模型,可用于分类和回归。 通常缩写为 k-NN,k-最近邻中的 k 是一个正整数,通常很小。 在分类或回归中,输入将由空间内的 k 个最接近的训练示例组成。

我们将专注于 k-NN 分类。 在这种方法中,输出是类成员资格。 这会将一个新对象分配给其 k 个最近邻居中最常见的类。 在 k = 1 的情况下,对象被分配到单个最近邻的类。

让我们看一个k-最近邻的例子。 在下图中,有蓝色菱形物体和橙色星形物体。 它们属于两个不同的类别:钻石类别和明星类别。

当一个新对象被添加到空间中时——在本例中是一颗绿色的心脏——我们希望机器学习算法将心脏分类到某个类别。

当我们选择 k = 3 时,算法将找到绿心的三个最近邻居,以便将其分类为钻石类或星形类。

在我们的图表中,绿心最近的三个邻居是一颗钻石和两颗星星。 因此,该算法将心脏与星类进行分类。

在最基本的机器学习算法中,k-最近邻被认为是一种“惰性学习”,因为在对系统进行查询之前不会发生超出训练数据的泛化。

决策树学习

对于一般用途,决策树用于直观地表示决策并显示或告知决策制定。 在使用机器学习和数据挖掘时,决策树被用作预测模型。 这些模型将有关数据的观察映射到有关数据目标值的结论。

决策树学习的目标是创建一个模型,该模型将根据输入变量预测目标的值。

在预测模型中,通过观察确定的数据属性由分支表示,而关于数据目标值的结论则由叶子表示。

当“学习”一棵树时,源数据基于属性值测试被划分为子集,该测试在每个派生子集上递归地重复。 一旦节点处的子集具有与其目标值相同的值,则递归过程将完成。

让我们看一个可以确定某人是否应该去钓鱼的各种条件的示例。 这包括天气条件和气压条件。

在上面的简化决策树中,通过将示例通过树排序到适当的叶节点来对示例进行分类。 然后返回与特定叶关联的分类,在本例中为 YesNo。 这棵树根据它是否适合钓鱼来对一天的状况进行分类。

一个真正的分类树数据集将具有比上面概述的更多的特征,但关系应该很容易确定。 在使用决策树学习时,需要做出几个决定,包括选择什么特征,使用什么条件进行分裂,以及了解决策树何时达到明确的结局。

深度学习

深度学习试图模仿人类大脑如何将光和声音刺激处理成视觉和听觉。 深度学习架构受到生物神经网络的启发,由硬件和 GPU 组成的人工神经网络中的多个层组成。

深度学习使用级联的非线性处理单元层来提取或转换数据的特征(或表示)。 一层的输出用作后续层的输入。 在深度学习中,算法可以是受监督的并用于对数据进行分类,也可以是无监督的并执行模式分析。

在目前正在使用和开发的机器学习算法中,深度学习吸收了最多的数据,并且已经能够在一些认知任务中击败人类。 由于这些属性,深度学习已成为人工智能领域具有巨大潜力的方法

计算机视觉和语音识别都从深度学习方法中取得了重大进展。 IBM Watson 是一个著名的利用深度学习的系统示例。

编程语言

在选择专门用于机器学习的语言时,您可能需要考虑当前招聘广告中列出的技能以及可用于机器学习过程的各种语言的库。

从2016年12月indeed.com招聘广告数据可以推断,Python是机器学习专业领域最抢手的编程语言。 Python 之后是 Java,然后是 R,然后是 C++。

Python 的流行可能是由于最近可用于该语言的深度学习框架的开发增加,包括 TensorFlowPyTorch 和 Keras[ X197X]。 作为一种具有可读语法和能够用作脚本语言的语言,Python 被证明在预处理数据和直接处理数据方面都非常强大和直接。 scikit-learn 机器学习库建立在 Python 开发人员可能已经熟悉的几个现有 Python 包之上,即 NumPySciPy 和 [ X199X]Matplotlib。

要开始使用 Python,您可以阅读我们关于“如何在 Python 3 中编码”的教程系列,或专门阅读“如何使用 scikit-learn 在 Python 中构建机器学习分类器[ X199X]”或“如何使用 Python 3 和 PyTorch 执行神经风格迁移。”

Java 广泛用于企业级编程,一般被同样从事企业级机器学习的前端桌面应用程序开发人员使用。 通常它不是那些想学习机器学习的编程新手的首选,但有Java开发背景的人倾向于申请机器学习。 在工业机器学习应用方面,Java 往往比 Python 更多地用于网络安全,包括网络攻击和欺诈检测用例。

Java 机器学习库中有 Deeplearning4j,这是一个为 Java 和 Scala 编写的开源分布式深度学习库; MALLET (MAchine Learning for LanguagE Toolkit) 允许用于文本机器学习应用,包括自然语言处理、主题建模、文档分类和聚类; 和 Weka,一组用于数据挖掘任务的机器学习算法。

R 是一种开源编程语言,主要用于统计计算。 近年来,它越来越受欢迎,并受到学术界许多人的青睐。 R 通常不用于工业生产环境,但由于对数据科学的兴趣增加,它已在工业应用中兴起。 R 中流行的机器学习包包括 caretClassification And REgression Training 的缩写) 用于创建预测模型,randomForest 用于分类和回归,e1071 包括用于统计和概率论的函数。

C++ 是游戏或机器人应用(包括机器人运动)中机器学习和人工智能的首选语言。 嵌入式计算硬件开发人员和电子工程师更有可能在机器学习应用程序中偏爱 C++ 或 C,因为他们对语言的熟练程度和控制水平。 可以与 C++ 一起使用的一些机器学习库包括可扩展的 mlpackDlib 提供广泛的机器学习算法,以及模块化和开源的 Shark

人类偏见

尽管数据和计算分析可能使我们认为我们正在接收客观信息,但事实并非如此; 基于数据并不意味着机器学习的输出是中立的。 人为偏见在数据的收集、组织方式以及最终决定机器学习如何与数据交互的算法中发挥作用。

例如,如果人们提供“鱼”的图像作为训练算法的数据,而这些人绝大多数选择金鱼的图像,那么计算机可能不会将鲨鱼归类为鱼。 这会造成将鲨鱼视为鱼的偏见,而鲨鱼不会被视为鱼。

当使用科学家的历史照片作为训练数据时,计算机可能无法正确分类同样是有色人种或女性的科学家。 事实上,最近的同行评审研究表明,人工智能和机器学习程序表现出类似人类的偏见,包括种族和性别偏见。 例如,请参阅“从语言语料库自动派生的语义包含类似人类的偏见”和“男性也喜欢购物:使用语料库级约束减少性别偏见放大”[PDF]。

随着机器学习在商业中越来越多地被利用,未被发现的偏见可能会导致系统性问题长期存在,这些问题可能会阻止人们获得贷款资格,无法看到高薪工作机会的广告,或者无法获得当日送达选项。

因为人类的偏见会对他人产生负面影响,所以意识到它并尽可能地消除它是非常重要的。 实现这一目标的一种方法是确保有不同的人在从事一个项目,并且不同的人正在测试和审查它。 其他人呼吁 监管第三方监控和审计算法构建可以检测偏差的替代系统伦理审查 作为数据科学项目计划的一部分。 提高对偏见的认识,注意我们自己的无意识偏见,以及在我们的机器学习项目和管道中构建公平性,可以对抗这一领域的偏见。

结论

本教程回顾了机器学习的一些用例、该领域使用的常用方法和流行方法、合适的机器学习编程语言,还涵盖了一些在算法中复制无意识偏见时要记住的事项。

因为机器学习是一个不断创新的领域,重要的是要记住算法、方法和途径将不断变化。

除了阅读我们关于“如何使用 scikit-learn 在 Python 中构建机器学习分类器”或“如何使用 Python 3 和 PyTorch 执行神经风格迁移”的教程之外,您可以通过阅读我们的 数据分析 教程来了解有关在技术行业中处理数据的更多信息。