在本文中,我们将分析一些机器学习基础,讨论一些常用的机器学习任务,同时也会学习如何衡量机器学习系统的性能。我们将使用一个用Python编程语言编写的类库scikit-learn,它包含了最新机器学习算法的实现,其API也很直观通用。
1.1定义机器学习
长久以来,我们的想象力一直被那些能够学习和模仿人类智慧的机器所吸引。尽管具有一般人工智能的机器(比如阿瑟· 克拉克笔下的HAL和艾萨克· 阿西莫夫笔下的Sonny)仍然没有实现,但是能够从经验中获取新知识和新技能的软件正在变得越来越普遍。我们使用这些机器学习程序去寻找自己可能喜欢的新音乐,找到自己真正想在网上购买的鞋子。机器学习程序允许我们对智能手机下达命令,并允许用恒温控制器自动设置温度。机器学习程序可以比人类更好地破译书写凌乱的邮寄地址,并更加警觉地防止信用卡欺诈。从研发新药到估计一个头条新闻的页面访问量,机器学习软件正在成为许多行业的核心部分。机器学习甚至已经侵占了许多长久以来一直被认为只有人类能涉及的领域,例如撰写一篇关于杜克大学篮球队输给了北卡大学篮球队的体育专栏报道。
机器学习是对软件工件的设计和学习,它使用过去的经验去指导未来的决策。机器学习是对从数据中学习的软件的研究。机器学习的基础目标是归纳,或者从一种未知规则的应用例子中归纳出未知规则。机器学习的典型例子是垃圾邮件过滤。通过观察已经被标记为垃圾邮件或非垃圾邮件的电子邮件,垃圾邮件过滤器可以分类新消息。研究人工智能的先锋科学家亚瑟·萨缪尔曾说过机器学习是“给予计算机学习的能力而无须显式地编程的研究”。在20世纪50年代到20世纪60年代之间,萨缪尔开发了多个下棋程序。虽然下棋的规则很简单,但是要战胜技艺高超的对手需要复杂的策略。萨缪尔从来没有显式地编程过这些策略,而是通过几千次比赛的经验,程序学习了复杂的行为以此打败了许多人类对手。
计算机科学家汤姆·米切尔对机器学习给出了一个更加正式的定义:“如果一个程序的性能在‘T’中体现,通过‘P’来衡量,并通过经验‘E’来提升,那么该程序可以被视为针对一些任务类型‘T’和性能衡量‘P’从经验‘E’中进行学习”。例如,假设你有一个图片集合,每一张图片描绘了一只狗或一只猫。任务是将图片分为狗图片类和猫图片类,而程序可以通过观察已经被分类好的图片来学习执行这个任务,同时它可以通过计算分类图片的正确比例来提升性能。
我们将使用米切尔关于机器学习的定义来组织本章内容。首先,我们将讨论经验的类型,包括监督学习和无监督学习。接着,我们将讨论可以用机器学习系统解决的常见任务。最后,我们将讨论能够用于衡量机器学习系统性能的标准。
1.2从经验中学习机器学习系统经常被描述为在人类监督或无监督之下从经验中学习。在监督学习问题中,一个程序会通过标记的输入和输出进行学习,并从一个输入预测一个输出。也就是说,程序从“正确答案”的例子中学习。在无监督学习中,一个程序不会从标记数据中学习。相反,它尝试在数据中发现模式。例如,假设你已经收集了描述人身高体重的数据。一个无监督学习的例子是将数据划分到不同的组中。一个程序可能会产出对应到男性和女性,或者儿童和成人的组。现在假设数据也标记了性别。一个监督学习的例子是归纳出一个规则,基于一个人的身高和体重来预测一个人是男性还是女性。我们将在后面的章节中讨论监督学习和无监督学习的算法和例子。
监督学习和无监督学习可以被认为是一个范围的两端。一些类型的问题,被称为半监督学习问题,这些问题同时使用监督学习的数据和无监督学习的数据,位于监督学习和无监督学习之间。强化学习靠近监督学习一端。和无监督学习不同,强化学习程序不会从标记的输出对中进行学习。相反,它从决策中接收反馈,但是错误并不会显式地被更正。例如,一个学习去玩像超级玛丽兄弟这样的横向卷轴游戏的强化学习程序,当完成一个关卡或者达到一个特定分数时,可能会接收到一个奖励,而当失去一次生命时会受到惩罚。然而,这样的监督反馈并不会附带一个特定的决策去指挥角色跑动,躲开栗子怪,或者捡起一朵火焰花。我们将主要关注监督学习和无监督学习,因为这两个类别包含了最常见的机器学习问题。在下一节中,我们将更细致地审阅监督学习和无监督学习。
一个监督学习程序从标记输出的例子中进行学习,这些输出例子应该由对应的输入产出。一个机器学习程序的输出有很多名字,在机器学习中汇集了一些学科,许多学科都会使用自己的术语。在本书中,我们将把输出称为响应变量。响应变量的其他名字包括“依赖变量”“回归变量”“标准变量”“测定变量”“应答变量”“被解释变量”“输出变量”“实验变量”“标签”和“输出变量”。类似的,输入变量也有很多名字。在本书中,我们将输入变量称为特征,它们代表的现象称为解释变量。解释变量的其他名字包括“预测器”“回归器”“控制变量”和“暴露变量”。响应变量和解释变量可以是实数值或离散值。
组成监督学习经验的实例集合称为一个训练集。一个用于衡量程序性能的实例集合称为一个测试集。响应变量可以被看作是由解释变量引发问题的回答,监督学习问题会从一个针对不同问题回答的集合中进行学习。也就是说,监督学习程序会被提供正确的答案,而它需要学习去正确地回答没见过的类似问题。
1.3机器学习任务两种最常见的监督机器学习任务是分类和回归。在分类任务中,程序必须学习去从一个或多个特征去预测一个或多个响应变量的离散值。也就是说,程序必须为新观测值预测最可能的分类、类别或者标签。分类的应用包括预测一只股票的价格会上涨或下跌,或者决定一篇新闻文章属于政治主题板块还是休闲娱乐板块。在回归问题中,程序必须从一个或多个特征预测一个或多个连续响应变量值。回归问题的例子包括预测一个新产品的销售收入,或者基于一个职位的描述预测其薪水。和分类问题一样,回归问题也需要监督学习。
一个常见的无监督学习任务是在数据集内发现互相关联的观测值群组,称之为聚类。该项任务称为聚类或者聚类分析,会基于一些相似性衡量标准,把观测值放入和其他群组相比相互之间更加类似的群组中。聚类经常用于探索一个数据集。例如,对于一个电影评论集合,一个聚类算法可找出正向评价和负向评价。系统不会将聚合的类标记为正向或者负向。由于缺乏监督,系统只能通过一些衡量标准来判断聚合的观测值相互之间很类似。聚类的一个常见应用是在市场中为一个产品发现客户群体。通过了解特定客户群体的共同属性,销售人员可以决定应该注重销售活动的哪个方面。聚类也应用于网络广播服务中。对于一个歌曲集合,聚类算法可以根据歌曲的特征将歌曲划分为不同的分组。通过使用不同的相似性衡量标准,同样的聚类算法可以通过歌曲的音调,或者通过歌曲中包含的乐器来为歌曲划分不同的组。
降维是另一种常见的使用无监督学习完成的任务。一些问题可能包含数千或者上百万个特征,这会导致计算能力的极大消耗。另外,如果一些特征涉及噪声或者和潜在的关系无关,程序的泛化能力将会减弱。降维是发现对响应变量变化影响最大的特征的过程。降维还可以用于数据可视化。通过房屋面积预测房屋价格这样的回归问题的可视化很简单,房屋的面积可以作为图的x轴,价格可以作为y轴。当为房屋价格回归问题添加第二个特征以后,可视化依然很简单,房屋的浴室数量可以作为z轴。然而,对一个包含上千个特征的问题,可视化几乎不可能完成。
-END-
如果你喜欢这篇文章,欢迎分享到朋友圈
更多内容可点击下方链接购买
《scikit-learn机器学习 第2版》
详细阅读!