数据分析与机器学习实战(一)——机器学习基础

数据分析与机器学习实战(一)——机器学习基础

数据分析与机器学习实战(二)——聚类分析(以K-means聚类为例)



前言——机器学习基础

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

前面章节已经学习了 Python 的基本语法和编程知识,在学习如何使用 Python 进行数据分析之前,来认识一下什么是机器学习,以及机器学习的不同分类,这些基本知识对理解和学习机器学习的常用算法非常有帮助。本章将介绍机器学习的基本概念及分类。

本章将介绍以下内容:

  • 机器学习概述
  • 监督学习简介
  • 非监督学习简介
  • 增强学习简介
  • 深度学习简介
  • 机器学习常用术语

1.1机器学习概述

机器是否具有学习的能力呢?我们来看一些报道。

1997年,IBM 深蓝与国际象棋大师加里·卡斯帕罗夫对战,人工智能机器人第一次打败顶尖的国际象棋人类选手。下图是当时的比赛场景。

img

2016年3月,AlphaGo和韩国九段棋手李世石对决赛前,有人预测,人工智能机器人需要再花十几年时间才能在围棋领域战胜人类。然而,最终结果是 AlphaGo以4:1大比分战胜李世石。

2016年5月,AlphaGo又赢了,它以3:0完胜中国围棋领军人物柯洁。

1959年,美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,从最初的不堪一击开始,发展到现在完胜人类,这就是一个典型的机器学习的实例。

由于近些年的各种科技新成果,使“机器学习”成为非常热门的词汇。机器学习在领域的优异表现,使各行各业的人或多或少地对机器学习产生了兴趣与敬畏。然而与此同时对机器学习有所误解的群体也日益壮大:他们或将机器学习想得过于神秘,或将它想得过于万能。本节将对机器学习进行一般性的介绍,同时会说明机器学习中一些常见的术语以方便之后章节的叙述。

机器学习是英文Machine Learning的翻译,主要研究计算机模拟或实现人类的行为就像一个学生一样,通过学习获取新的知识或技能,完善自身已有的知识结构,并不断高自身的性能。它是人工智能的核心,其应用遍及人工智能的多个领域,如图像处理脸识别、自然语言处理、数据挖掘、生物特征识别、检测信用卡欺诈、证券市场分析、语音和手写识别等。

这里先说说机器学习与以往的计算机工作样式有什么不同。传统的计算机如果想要得到某个结果,需要人类赋予它一串指令,然后计算机就根据这串指令一步步地执行下去。这个过程中的因果关系非常明确,只要人类的理解不出偏差,运行结果是可以准确预测的。但是在机器学习中,这一传统样式被打破了。计算机确实仍然需要人类赋予它一串指令,但这串指令往往不能直接得到结果,相反,这是一串赋予了机器“学习能力”的指令,在此基础上,计算机需要进一步接受“数据”,并根据之前人类赋予它的“学习能力”,从中“学习”出最终的结果。这个结果往往是无法仅仅通过直接编程得出的。因此这里就导出了稍微深一些的机器学习的定义:它是一种让计算机利用数据而非指令来进行各种工作的方法。在这背后,关键就是“统计”的思想,它所推崇的“相关而非因果”的概念是机器学习的理论根基。在此基础上,机器学习可以说是计算机使用输入给它的数据,利用人类赋予它的算法得到某种模型的过程,其最终目的是使用该模型预测未知数据的信息。

下面可以由人类学习的过程来理解机器学习的过程。

人类从出生开始就在不断学习,首先是父母的启蒙教育,然后上幼儿园、小学、中学、大学,从最初什么都不知道的婴儿逐渐成长为具有一定知识和判断能力且具有不断学习新知识的能力的成人。在学习过程中,人类通过各种方式获取知识,使用各种感官与外界进行交互,吸收消化从外界获取的资料,不断更新自我的知识储备,并提高自身的知识积累,转换成新的技能。

机器学习和人类学习非常相似,机器最初也像婴儿一样,有类似于人类五官四肢的各种传感器,通过这些传感器与外界进行交互,然后通过“机器学习”(使用各种算法模型对获取的数据进行处理,本书将分块介绍这些算法)来提高自身性能(如让机器通过学习自动对物体进行分类;预测股市的涨跌趋势等)。

机器通过各种传感器与外界交互获得信息,这些传感器多种多样,常见的有键盘、鼠标、摄像头、投影仪、话筒、音箱,更复杂的有位置传感器、光电传感器、热传感器、平衡传感器等,机器只有通过这些传感器才能像人类一样与外界进行交互,获得外界信息,并做出判断和响应。

机器学习所依赖的基础是数据,但核心是各种算法模型,只有通过这些算法,机器才能消化吸收各种数据,不断完善自身性能。机器学习的算法很多,很多算法是一类算法,只是算法在实现过程中有些改变,而有些算法又是从其他算法中延伸出来的。

根据学习方式的不同,常见的机器学习算法有监督学习算法、非监督学习算法、半监督学习算法和强化学习算法。

1.2监督学习简介

下面先看一下人类学习过程中监督学习的一个具体情形:当一个孩子逐渐认识事物的时候,父母会给他一些苹果和橘子,并且告诉他苹果是什么样的,有哪些特征;橘子是什么样的,有哪些特征。经过父母不断的介绍,这个孩子已经知道苹果和橘子的区别,如果孩子在看到苹果和橘子的时候给出错误的判断,父母就会指出错误的原因,经过不断的学习,再见到苹果和橘子的时候,孩子立即就可以判断出哪个是苹果,哪个是橘子。

上面的例子就是监督学习的过程,也就是说,在学习过程中,不仅提供事物的具体特征,同时也提供每个事物的名称。不过在人类学习的过程中,父母可以让孩子观察、触摸苹果和橘子,而对于机器却不一样,人类必须提供每个样本(苹果和橘子)的特征及对应的种类,使用这些数据,通过算法让机器学习,进行判断,逐步减小误差率。

也可以这样理解:监督学习是从给定的训练数据集中“学习”出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入和输出,也可说是特征和目标。训练集中的目标是由人类事先进行标注的。

再来看一个例子,在电子邮件过滤系统中,当一个电子邮件到达信箱时,系统自动断这封邮件是否为垃圾邮件。用户可以实现选择一些数据集合,这些数据集合事先知道哪些邮件是正常邮件,哪些邮件是垃圾邮件,我们称这些数据为“训练数据”,每个训练数据有一个明确的标识或结果,即“垃圾邮件”或“非垃圾邮件”。在学习过程中,每次算法将预测结果与“训练数据”的实际结果进行比较,如果正确则不做处理,如果错误就不断地调整预测模型,修正参数,直到模型的预测结果达到一个预期的准确率。

监督学习主要应用于分类(Classify)和回归(Regression)。常见的监督学习算法有k-近邻算法、决策树、朴素贝叶斯、Logistic 回归、支持向量机和AdaBoost 算法、线性回归、局部加权线性回归、收缩和树回归等。

1.3非监督学习简介

同样,首先来看一下在人类学习过程中非监督学习的一个具体情形:当一个孩子逐渐认识事物的时候,父母会给他一些苹果和橘子,但是并不告诉他哪个是苹果,哪个是橘子,而是让他自己根据两个事物的特征自己进行判断,会把苹果和橘子分到两个不同组中。下次再给孩子一个苹果,他会把苹果分到苹果组中,而不是分到橘子组中。

上面的例子就是非监督学习的过程,也就是说,在学习的过程中,只提供事物的具体特征,但不提供事物的名称,让学习者自己总结归纳。所以非监督学习又称为归纳性学习(Clustering),是指将数据集合分成由类似的对象组成的多个簇(或组)的过程。当然,在机器学习过程中,人类只提供每个样本(苹果和橘子)的特征, 使用这些数据,通过算法让机器学习,进行自我归纳,以达到同组内的事物特征非常接近,不同组的事物特征相距很远的结果。

再来看一个例子,Google News 会搜集网上的新闻,并且根据新闻的内容将新闻分成许多主题,如政治、体育、娱乐等,然后将同一个主题的新闻放在一起。

常见的非监督学习算法有 k-均值、Apriori和 FP-Growth等。

1.4增强学习简介

再看一下人类学习过程中增强学习的一个具体情形,大家都玩过下图所示的走迷宫游戏。

迷宫 的图像结果

从一个入口进去,穿过不同的路线,从另外一个出口出来,中间许多路都是不通的。如何走出来呢?这时只有分别尝试不同的线路,如果一个线路走错,那么就记录下来,再尝试其他的线路,有可能又回到上一个路口,走过的路是否正确,自己心中已经有一个规划,最终找出最合理的路径。这就是增强学习的一个例子。

增强学习(Reinforcement Learing,RL)又称为强化学习,是近年来机器学习机控制领域的主要方法之一。通过增强学习,人类或机器可以知道在什么状态下应该采取什么样的行为。增强学习是从环境状态到动作的映射的学习,我们把这个映射称为策路,最终增强学习是学习到一个合理的策略。另外,增强学习是试错学习(Trail-and-eror),由于没有直接的指导信息,参与学习的个体或机器要不断与环境进行交互,通过试错的方式来获得最佳策略。另外,由于增强学习的指导信息很少,而且往往是在事后(最后一个状态)才得到反馈信息,以及采取某个行动是获得正回报或负回报,如何将回报分配给前面的态以改进相应的策略,规划下一步的操作,就像小孩在日常的学习过程中,如果考试考得好,家长会给予奖励,如果考试成绩不理想,家长会给予惩罚一样。

前面提到的下国际象棋就是采用的增强学习算法,假设要构建一个下国际象棋的机器,首先,我们本身不是优秀的棋手,而请国际象棋老师来把每个状态下的最佳棋步都给我讲解清楚代价过于昂贵,而且棋局变化多样,不同时刻有不同的棋局。另外,每个棋步好坏判断也不是孤立的,要依赖于对手的选择和局势的变化。因此下棋的过程是一系列的棋步组成的策略,决定了是否能赢得比赛。下棋过程的唯一反馈是在最后赢得或是输掉棋局时才产生的。这种情况下我们可以采用增强学习算法,通过不断的探索和试错学习,增强学习可以获得某种下棋的策略,并在每个状态下都选择最有可能获胜的棋步。

增强学习算法主要有动态规划、马尔可夫决策过程等。

本章介绍了三种基本的(机器)学习方法,这三种(机器)学习方法是人类(机器)的基本学习方法,几乎覆盖了我们生活中的所有学习过程。

监督学习、非监督学习和增强学习这三种学习大致的总结概况如下图所示。

在这里插入图片描述
(1)监督学习:提供数据特征和数据类别;通过学习具备判断能力,能够预测未来结果。有类别标记(好/坏瓜)

(2)非监督学习:只提供数据特征,不提供数据类别;通过学习具备归纳概括能力发现事物内在本质。无类别标记。

(3)增强学习: 在日常学习过程中,采取一定的决策策略,激励系统对每个策略做出反馈,最终形成合理的规划。

1.5深度学习简介

人们都知道 Google 制作出的AlphaGo机器人先后战胜了围棋大师韩国九段棋手李世石和中国围棋领军人物柯洁,媒体在描述 AlphaGo机器人的胜利时用到了人工智能(Artificial Intelligence,AI)、机器学习、深度学习等术语。

“人工智能”这个词汇已经家喻户晓。2017年7月20日,国务院印发《新一代人智能规划》,提出了面向 2030 年我国新一代人工智能发展的指导思想、战略目标、重点任务和保障措施,部署构筑我国人工智能发展的先发优势,加快建设创新型国家和世界科技强国。

下图给出了人工智能、机器学习、深度学习之间的关系,人工智能是最先出现的理念,然后是机器学习,当机器学习繁荣之后就出现了深度学习,今天的 AI大爆发是由深度学习驱动的。
在这里插入图片描述

1.5.1人工智能:让机器和人一样具有智力

1956年,在达特茅斯会议(Dartmouth Conferences)上,计算机科学家首次提出了人工智能:建造一台复杂的机器(当时刚出现的计算机驱动),然后让机器呈现出人类智力的特征,让它拥有人类的所有感知,甚至还可以超越人类感知,可以像人一样思考。

几十年过去了,人们对 Al 的看法不断改变,有时认为 AI 是预兆,是未来人类文明的关键;有时认为它是技术垃圾,只是一个轻率的概念,野心过大,注定要失败。

1.5.2机器学习:实现人工智能的基础

机器学习就是用法真正解析数据,不断学习,然后对世界上发生的事做出判斯和预测。此时,研究人员不会亲手编写软件、确定特殊指令集,然后让程序完成特殊任务,相反,研究人员会用大量数据和算法“训练”机器,让机器学会执行任务。

机器学习这个概念是早期的 AI 研究者提出的,在过去几年中,机器学习出现了许多法方法,包括决策树学习、归纳逻辑程序设计、聚类分析、强化学习、贝叶斯网络等。这些算法都是人工智能的基础,通过算法,使用输入数据进行学习以提高自身性能。

在过去几年里,AI 大爆发,2015 年至今更是发展迅猛,主要归功于 GPU 的广泛普及,它让并行处理更快、更便宜、更强大。同时也受益于实际存储容量的无限拓展,数据的大规模生成,如图片、文本、交易、地图数据信息等。

1.5.3深度学习:一种特定类型的机器学习

“人工神经网络(Artificial Neural Networks)”是一种算法方法,它也是早期机器学习专家提出的,已经存在几十年了。神经网络(Neural Networks)的构想源自人们对人类大脑的理解一一神经元的彼此联系。二者也有不同之处,人类大脑的神经元是按特定的物理距离连接的,人工神经网络有独立的层、连接,以及数据传播方向。

在 AI 发展初期就已经存在神经网络,但是它并没有形成多少“智力”。问题在于即使只是基本的神经网络,它对计算量的要求也很高,因此无法成为一种实际的方法。尽管如此,还是有少数研究团队勇往直前,如多伦多大学 Geoffrey Hinton 所领导的团队,他们将算法平行放进超级计算机中,验证自己的概念,直到GPU开始广泛使用我们才真正看到希望。

深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度学习其实就是通过其他较简单的表示来表达复杂表示,解决了表示学习中的核心问题。让计算机从经验中学习,并根据层次化的概念体系来理解世界,而每个概念则通过与某些相对简单的概念之间的关系来定义。让计算机从经验中获取知识,从而可以避免人类给计算机形式化地指定它需要的所有知识。

深度学习的概念由 Hinton 等人于2006年提出。基于深度置信网络(DBN)提出非督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。此外Lecun 等人提出的卷积神经网络是第一个真正多层结构学习的算法,它利用空间相对关系减少参数数目以提高训练性能。

深度学习是机器学习中的一种基于对数据进行表征学习的方法。观测值(如一幅图像)可以使用多种方式来表示,如每个像素强度值的向量,或者更抽象地表示一系列边、特定形状的区域等。而使用某些特定的表示方法更容易从实例中学习知识(如人脸识别或面部表情识别)。深度学习的好处是用非监督或半监督式的特征学习和分层特征提取高效算法来替代手工获取特征。

1.6机器学习常用术语

机器学习领域有许多非常基本的术语,这些术语对非本专业的读者来说可能高深莫测。事实上它们也可能拥有非常复杂的数学背景。但需要知道的是,它们往往也拥有着相对浅显的直观理解。本节会对这些常用的基本术语进行说明与解释。

正如前文反复强调的,数据在机器学习中发挥着不可或缺的作用。下面介绍一些用于描述数据的常见术语。

1.6.1数据集

“数据集”(Data Set):就是数据的集合的意思。其中,每一条单独的数据被称为“样本”(Sample)。若没有进行特殊说明,本书都会假设数据集中样本之间在各种意义下相互独立。事实上,除了某些特殊的模型(如隐马尔可夫模型和条件随机场模型),该假设在大多数场景下都是相当合理的。数据集又可以分为以下三类。

(1)训练集(Training Set): 顾名思义,它是总的数据集中用来训练模型的部分。尽管将所有数据集都拿来当作训练集也无不可,不过为了提高及合理评估模型的泛化能力,通常只会取数据集中的一部分来当作训练集。

(2)测试集(Test Set): 顾名思义,它是用来测试、评估模型泛化能力的部分。测试集不会用在模型的训练部分,换句话说,测试集相对于模型而言是“未知”的,所以拿它来评估模型的泛化能力是相当合理的。

(3)交叉验证集(Cross-Validation Set,CV Set):这是比较特殊的一部分数据,它是用来调整模型具体参数的。

其中训练集用来估计模型,交叉验证集用来确定网络结构或控制模型复杂程度的参数,而测试集则检验最终选择最优的模型性能如何。一个典型的划分是训练集占总样本的50%,而其他各占25%,三部分都是从样本中随机抽取的。

但是,当样本总量少时,上面的划分就不合适了。通常是留少部分做测试集,然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中的K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(Leave OneOut)。

很多读者经常会把测试集和交叉验证集混淆。用一句话概括两者的区别就是,交叉验证集主要用于进一步确定模型的参数(或结构),而测试集只是用于评估模型的精确度。例如,假设建立一个BP 神经网络,对于隐含层的节点数目,并没有很好的方法去确定。此时,一般将节点数设定为某一具体的值,通过训练集训练出相应的参数后,再由交又验证集去检测该模型的误差;然后改变节点数,重复上述过程,直到交又验证误差最小。此时的节点数可以认为是最优节点数,即该节点数( 这个参数 )是通过交叉验证集得到的。而测试集是在确定了所有参数之后,根据测试误差来评判这个学习模型的。

所以,测试集是粗调参数,交又验证集主要是用于模型的参数的细调,用于模型的优化。测试集则纯粹是为了测试已经训练好的模型的推广能力。

1.6.2属性或特征

对于每个样本,通常具有一些“属性”(Attribute)或者说“特征”( Feature),特征所具体取的值就被称为“特征值”( Feature Value )。特征和样本所组成的空间被称为“特征空间”( Feature Space)和“样本空间”( Sample Space),可以把它们简单地理为特征和样本“可能存在的空间”

1.6.3标签或类别

与之相对应的,有“标签空间”(Label Space ),它描述了模型的输出“可能存在的空间”;当模型是分类器时,通常会称为“类别空间”。

下面,通过一个具体的例子来理解上述概念。

假设小明是一个在北京读了一年书的学生,某天他想通过宿舍窗外的风景(能见度、温度、湿度、路人戴口罩的情况等)来判断当天的雾霾情况并据此决定是否戴口罩。此时,他过去一年的经验就是他拥有的数据集,过去一年中每一天的情况就是一个样本。“能见度”“温度”“湿度”“路人戴口罩的情况”就是4个特征,而(能见度)“低”、(温度)低”、(湿度)“高”、(路人戴口罩的)“多”就是相对应的特征值.

现在小明想了想,决定在脑中建立一个模型来帮自己作决策,该模型将利用过去一年的数据集来对当天的情况作出“是否戴口罩”的决策。此时小明可以用过去一年中8个月的数据量来做训练集、两个月的量来做测试集、两个月的量来做交叉验证集,那么小明就需要不断地思考(训练模型)下列问题。

  1. 用训练集训练出的模型是什么样的?
  2. 该模型在交叉验证集上的表现怎么样?
  3. 如果足够好,那么思考结束(得到最终模型)
  4. 如果不够好,那么根据模型在交叉验证集上的表现,重新思考(调整模型参数)。

最后,小明可能会在测试集上评估自己刚刚思考后得到的模型的性能,然后根据这个性能和模型作出“是否戴口罩”的决策来综合考虑自己是否戴口罩。

本文内容主要参照了《Python3 数据分析与机器学习实战》, 龙马高新教育编著,对应的ISBN号为978-7-301-29566-3,如有需要,请购买正版图书

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PlutoCtx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值