机器学习的温和指南

2023-05-26 0 284

机器学习的温和指南
机器学习的温和指南

机器学习是人工智能中的一个子领域,它构建算法,允许计算机学习从数据中执行任务,而不是显式编程。

明白了?我们可以让机器学会做事!我第一次听到这句话,就大吃一惊。这意味着我们可以对计算机进行编程以自己学习东西!

学习能力是智力最重要的方面之一。将这种能力转化为机器,听起来像是朝着使它们更智能迈出的一大步。事实上,机器学习是当今人工智能取得最大进展的领域;成为现在的一个时髦话题,并推动拥有更多智能机器的可能性。

这篇CPDA数据分析师课程中的文章将尝试向新手读者简要介绍机器学习。我将概述使用机器学习时的重要概念、应用和挑战。这篇文章的目标不是对该主题进行正式或详尽的描述,而是给出一些初步概念以邀请读者继续调查。

关于机器学习的真实情况

好吧,并非一切都像听起来那么美丽,机器学习有其局限性。尽管如此,我们仍然无法制造像《星际迷航》中的数据或2001年《太空漫游》中的哈尔9000那样的智能机器。但是,我们有很多真实世界应用程序的示例,其中机器学习就像一个魅力。以下是一些最常见的实际机器学习应用程序类别:

图像处理

•图像标记,就像在Facebook中一样,当算法自动检测到您的脸或朋友的脸出现在照片中时。基本上,机器学习算法从您手动标记的照片中学习。

• 光学字符识别 (OCR),当算法学习将手稿或扫描的文本文档转换为数字版本时。该算法必须学会将书面字符的图像转换为相应的数字字母。

•自动驾驶汽车:允许汽车自行驾驶的部分机制使用图像处理。机器学习算法通过查看摄像机拍摄的每一帧来了解道路边缘的位置,是否有停车标志或汽车正在接近。

文本分析

文本分析是我们从文本中提取或分类信息的过程,例如推文、电子邮件、聊天、文档等。一些流行的例子是:

• 垃圾邮件过滤,最知名和最常用的文本分类应用程序之一(为文本分配类别)。垃圾邮件过滤器学习根据内容和主题将电子邮件分类为垃圾邮件或火腿。

•情感分析,文本分类的另一种应用,其中算法必须学会根据作者表达的情绪将观点分类为积极,中立或消极。

• 信息提取,从文本中学习提取特定信息或数据,例如,提取地址、实体、关键字等。

数据挖掘

数据挖掘是发现模式或从数据中进行预测的过程。这个定义有点笼统,但可以把它想象成从数据库中的一个大表中挖掘有用的信息。每一行都是我们的训练实例,每一列都是一个特征。我们可能有兴趣根据其余列预测该表中的新列,或者发现对行进行分组的模式。例如:

• 异常检测:检测异常值,例如,对于信用卡欺诈检测,您可以检测哪些交易是用户通常购买模式的异常值。

• 关联规则:例如,在超市或电子商务网站中,您可以通过查看哪些产品一起购买来发现客户的购买习惯。此信息可用于营销目的。

• 分组:例如,在 SaaS 平台中,按用户的行为或个人资料对用户进行分组。

• 预测:从其余变量中预测变量(数据库中的列)。例如,您可以通过学习当前客户的配置文件和信用评分来预测银行中新客户的信用评分。

视频游戏与机器人

视频游戏和机器人技术一直是机器学习应用的巨大领域。通常,我们有一个代理(游戏角色或机器人),必须在环境中移动(视频游戏中的虚拟环境或机器人的物理环境)。然后,机器学习可用于允许代理执行任务,例如在环境中移动,同时避开障碍物或敌人。在这些情况下使用的一种非常流行的机器学习技术是强化学习,其中代理通过从环境的强化中学习来学习执行任务(如果强化遇到障碍物,则为负数,如果到达目标,则为正数)。

好吧,我明白了机器学习的价值,但它是如何工作的呢?

大约十年前,我读到的第一本关于机器学习的书之一是汤姆·米切尔(Tom Mitchell)的《机器学习》。这本书写于1997年,但一般概念今天仍然有效。

从那本书中,我喜欢以下关于机器学习的正式定义:

如果计算机程序在任务 T 中的性能(由性能指标 P 衡量)随着时间的推移随着经验 E 的提高而提高,则称计算机程序从经验 E 中学习执行任务 T。

例如,一个必须下棋(任务T)的人工游戏玩家可以通过查看以前的国际象棋比赛或与导师对弈(经验E)来学习。它的性能P可以通过计算与人类赢得的游戏的百分比来衡量。

让我们再举几个例子来想象一下:

•示例1:一个给定图像的系统,它必须说明巴拉克奥巴马的脸是否出现在该图像中(概括就像Facebook的自动标记)。

• 示例 2:一个系统发出推文,告诉它是否以积极或消极的情绪说话。

• 示例 3:一个系统,它给定某人的个人资料,分配一个分数,代表该人支付信用贷款的概率。

在示例 1 中,任务是检测巴拉克·奥巴马的脸何时出现在图像中。这种体验可能是一组图像,其中巴拉克·奥巴马的脸出现,而其他图像则没有出现。性能可以用我们的系统正确标记的新图像的百分比来衡量。

在示例 2 中,任务是分配推文的情绪。体验可以是一组推文及其相应的情绪。性能可以用我们的系统正确分类的新推文的百分比来衡量。

在示例 3 中,任务是分配信用评分。体验可以是一组用户配置文件及其相应的信用评分。性能可以作为平方误差(预测分数和预期分数之间的差异)来衡量。

为了让算法学习将输入转换为所需的输出,您必须提供所谓的训练实例或训练示例,在米切尔的定义中,它们被定义为体验 E。训练集是一组实例,这些实例将用作机器学习算法将从中学习执行所需任务的示例。很直观,不是吗?这就像当你向一个小宝宝展示如何扔球时,你扔了几次球来教他如何做,通过看这些例子,他开始学会自己做。

每个训练实例通常表示为一组固定的属性或特征。特征是表征每个实例的方法。例如,在示例 1 中,图像可以通过其每个像素的灰度来表征。在示例 2 中,推文可以由推文中显示的字词来表征。在示例 3 中,信用记录可以用人的年龄、工资、职业等表示。

计算和选择适当的特征来表示实例是使用机器学习时最重要的任务之一,我们将在本文后面介绍这一点。

机器学习算法的类别

在这一点上,我们必须讨论机器学习算法的两大类:监督学习或无监督学习算法。这两种方法之间的主要区别在于我们将训练示例提供给算法的方式、算法如何使用它们以及它们解决的问题类型。

监督学习

在监督学习的情况下,机器学习算法可以被视为一个必须将特定输入转换为所需输出的过程。

然后,机器学习过程必须学习如何将每个可能的输入转换为正确/期望的输出,以便每个训练示例都有特定的输入和所需的输出。

在关于人工棋手的示例中,我们的输入将是一个特定的棋盘状态,输出将是该情况下的最佳可能移动。

根据输出的类型,我们有两种监督学习的子类型:

分类

当输出值属于离散和有限集合时,我们谈论的是分类。示例2可以作为分类问题解决,输出是一组有限的选项:正、负或中性。在这种情况下,我们的训练示例将如下所示:

回归

当输出值是一个连续的数字,例如概率时,我们谈论的是回归问题。示例 3 是回归,因为结果是一个介于 0 和 1 之间的数字,表示一个人偿还债务的概率。在这种情况下,我们的训练示例将如下所示:

监督学习是机器学习算法中最受欢迎的类别。使用这种方法的缺点是,对于每个训练示例,我们必须提供正确的输出,而且在许多情况下,这是非常昂贵的。例如,在情绪分析的情况下,如果我们需要 10,000 个训练示例(推文),我们必须用正确的情绪(正面、负面或中性)标记每条推文。这将需要一群人来阅读和标记每条推文(这是一项相当耗时和无聊的任务)。这通常是机器学习算法的一个非常常见的瓶颈:收集高质量的标记训练数据。

无监督学习

还有第二类机器学习算法,称为无监督学习。在这种情况下,训练示例只需要作为算法的输入,而不是所需的输出。典型的用例是发现训练示例之间的隐藏结构和关系。一个典型的例子是聚类算法,我们在其中学习查找相似的实例或实例组(集群)。例如:我们有一篇新闻文章,我们想推荐类似的文章。一些聚类算法(如 K-means)仅通过查看输入来“学习”做到这一点。

机器学习算法

好的,这是数学和逻辑开始行动的时候。为了将输入转换为所需的输出,我们可以使用不同的模型。机器学习不是一种独特的算法类型,也许你听说过支持向量机、朴素贝叶斯、决策树或深度学习。这些是不同的机器学习算法,试图解决同一个问题:学习将每个输入转换为正确的输出。

这些不同的机器学习算法使用不同的范式或技术来完成学习过程,并表示他们所学的知识。

但在我们继续讨论每种算法之前,一个共同的原则是,机器学习算法试图进行概括。也就是说,他们试图用最简单的理论来解释一些东西,这个原理被称为奥卡姆剃刀。每个机器学习算法,无论它使用什么范式,都会尝试创建最简单的假设(做出最少假设的假设),以解释大多数训练示例。

机器学习算法有很多,但让我们简要提及三种最流行的算法:

• 支持向量机:该模型尝试在高维空间中构建一组超平面,该超平面试图通过获得来自不同类的最近实例之间的最大间隔来分离不同类的实例。这个概念直观上很简单,但模型可以非常复杂和强大。事实上,对于某些领域,它是您目前可以使用的最好的机器学习算法之一。

概率模型:这些模型通常尝试通过使用概率分布对问题进行建模来预测正确的响应。也许此类别中最流行的算法是朴素贝叶斯分类器,它使用贝叶斯定理以及特征之间的强独立假设。除了是一个简单而强大的模型之外,它们的优点之一是它们不仅返回预测,还返回确定性程度,这可能非常有用。

深度学习:是基于众所周知的人工神经网络模型的机器学习的新趋势。神经网络有一种连接主义的方法,它们试图模仿(以一种非常简化的方式)大脑的工作方式。基本上,它们由一组巨大的相互连接的神经元(处理的基本单元)组成,组织在各个层中。简而言之,深度学习开发了具有更深层次的新结构,并改进了学习算法,不仅可以尝试学习,还可以构建结构以自动表示具有更高抽象级别的最重要特征。

处理机器学习时的重要方面

同样,机器学习听起来像是一个美丽的概念,确实如此,但涉及的一些过程并不是那么自动。事实上,很多时候在设计解决方案时需要手动步骤。然而,为了获得体面的结果,它们非常重要。其中一些方面是:

我应该使用哪种类型的机器学习算法?

有监督还是无监督?

您是否标记了数据?也就是说,输入及其相应的输出?在这种情况下,您可以应用监督学习算法。如果没有,也许无监督算法可以解决问题。

分类、回归还是聚类?

这主要取决于您要解决的问题。如果要标记数据(在一组离散选项中分配标记),分类可能是正确的选项。另一方面,如果您需要分配一个数字,例如分数,回归可能是您的最佳选择。也许您需要的是向用户推荐类似的产品,具体取决于他们当前在电子商务网站中看到的内容,在这种情况下,集群可能是您的最佳选择。

深度学习、SVM、朴素贝叶斯、决策树…哪一个最好?

我的答案是:没有一个。显然,深度学习和支持向量机已经证明它们在不同的应用中是最强大和最通用的。但要考虑到,根据特定的应用程序,某些机器学习算法可能是比其他算法更好的选择。看看他们的个人优势是什么,然后尝试一下!

特征工程

特征工程是我们提取和选择最重要的特征的过程,用于表示我们的训练示例和要由机器学习算法处理的实例。这个过程是机器学习最重要的方面之一(有时没有得到足够的信任和重要性)。

请注意:如果你不为你的算法提供高质量的功能,无论你是否使用最好的机器学习算法,结果都会很糟糕。这就像试图在完全黑暗中学习用眼睛阅读,无论你多么聪明,你都做不到。

特征提取

为了向机器学习算法提供数据,您通常必须将原始数据转换为算法可以“理解”的东西。该过程称为特征提取。通常我们谈论的是将原始数据转换为特征向量。

在示例 1 中,我们如何为机器学习算法提供图像?

好吧,一个简单的方法是将图像转换为矢量,其中每个分量都是图像中每个像素的灰度值。因此,每个组件或特征都是 0 到 255 之间的数字,0 是黑色,255 是白色,1 到 254 之间的范围是可能的灰色阴影。

这种方法可能有效,但如果我们提供更高级别的功能,也许它会更好:

• 图像是否包含人的脸?

• 肤色是什么?

• 眼睛的颜色是什么?

• 脸上有头发吗?

• …

这些是更高级别的特征,它们为算法提供了比每个像素的灰度级别更多的知识(它们的计算可能由其他机器学习算法完成!通过提供更高级的功能,我们正在“帮助”机器学习算法提供更好的信息,以学习决定我或其他人的脸是否出现在图像中。

如果我们提供更好的特征提取:

• 我们将有更多机会让我们的算法学习执行所需的任务。

• 我们可能需要更少的培训示例来学习。

因此,我们可以大大减少训练模型所需的时间。

功能选择

有时(不是说大多数),我们选择为算法提供的功能可能是无用的。例如,当尝试标记推文的情绪时,我们可以将推文的长度添加为功能、推文的撰写时间等。这些功能可能有用也可能没有用,并且有自动方法可以确定其中哪些最有用。直观地说,特征选择算法使用技术对每个特征进行评分,并根据该分数仅返回最有价值的特征。

要记住的另一件重要事情是:避免使用庞大的功能集。人们可能会想将所有可能的特征添加到模型中,让算法学习。但这不是一个好主意,当我们添加更多功能来表示我们的实例时,空间的维度会增加,使其更加稀疏。直观地说,随着我们获得更多功能,我们必须获得许多实例来表示相当数量的组合。这是一个非常普遍的问题,被称为维度的诅咒,随着模型复杂性的增加,所需的训练示例数量呈指数级增长,相信我,这是一个问题。

训练示例

因此,您必须向机器学习算法提供训练示例。根据您要解决的问题,我们可能会以数百、数千、数百万或数十亿个训练示例的数量进行讨论。此外,保持示例的质量非常重要,如果您向算法提供错误的示例,获得良好结果的机会就很低。

收集大量高质量数据来训练机器学习算法通常是一件昂贵的事情。除非您已经标记了数据,否则您可能必须自己手动标记数据或付钱给其他人来执行此操作。一些试图解决的工具是众包平台,您可以在其中找到劳动力来完成这项工作。此外,引导是一种通过使用自己的机器学习模型来帮助你来提高标记效率的方法。

关于训练示例的一般规则是:您可以收集的高质量训练数据越多,您获得的结果就越好。

测试示例和性能指标

训练机器学习算法后,我们必须测试它的性能。这非常重要,否则您将不知道您的模型是否真的学到了什么!

这个概念很简单,我们使用一个测试集,一组不包含在训练集中的实例。基本上,我们将每个测试示例输入到模型中,看看它是否按预期执行。在监督学习分类的情况下,我们只需输入每个测试实例并检查输出是否符合我们的预期。如果我们的模型在 95% 的测试示例中返回正确的输出,则说我们的模型的准确率为 95%。

请务必记住,实例的训练集和测试集必须是脱节的,这是测试模型泛化和预测能力的唯一方法。通过测量训练数据的准确性,您可能会获得非常好的结果,但在单独的测试集中测量时,结果却很差。该问题称为过拟合,即算法过度拟合训练示例并且预测能力较差。通常避免这种情况的方法是尝试使用具有更少特征的更简单的模型,简化模型并使用更大、更具代表性的训练集。

准确性是最基本的指标,您还应该查看其他指标,例如精度和召回率,它们将告诉您算法在每个类上的表现如何(在使用监督学习分类时)。混淆矩阵是一个很好的工具,可以查看我们的分类算法在哪里“混淆”预测。

对于回归和聚类问题,您还有其他指标集,可以查看您的算法是否表现良好。

性能

在实际应用程序中,如果必须在生产中部署解决方案,则必须构建可靠且高性能的解决方案。对于机器学习应用程序,这可能是一项复杂的任务。首先,你必须选择机器学习框架,这并不容易,因为并非所有编程语言都有强大的工具。Python和Scikit-learn是构建强大机器学习框架的编程语言的很好的例子。

选择框架后,可能会出现性能问题。根据数据量、复杂性和设计的算法,运行训练过程可能需要大量的计算能力和内存。您可能需要进行多次培训,直到获得不错的结果。此外,通常您可能会重新训练模型以涵盖新实例并不断提高其准确性。

为了训练大型模型并在使用它时快速获得结果,我们通常谈论各种 GB 的 RAM 和多核机器来并行处理。

这些大多是实际问题,但如果要在生产中部署真正的机器学习解决方案,则这些问题绝对很重要。

结语

就是这样,简要概述机器学习是什么。这里没有介绍许多其他现实世界的应用,还有很多其他的机器学习算法和概念可以讨论,但我们让读者自己做研究。

机器学习功能强大但很难,本文中描述的困难和要考虑的方面只是冰山一角。

通常需要一定的计算机科学背景,特别是机器学习才能获得不错的结果。在步入正轨之前,人们可能会对许多需要解决的困难感到非常失望。

这就是我们创建MonkeyLearn的原因,以使应用于文本分析的机器学习技术的访问民主化。避免重新发明轮子,让每个软件开发人员或企业家都能快速获得实际结果。这些是我们的主要挑战,抽象所有这些问题的最终用户,从机器学习的复杂性到实际的可扩展性问题,使即插即用的机器学习。

举报/反馈

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务