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