聊聊机器学习那些事儿


机器学习(Machine Learning,ML)是一门多领域交叉的学科,它涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的一个重要分支,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。

机器学习的定义

机器学习是相对人的学习而言。简单来讲,机器学习是研究如何使用机器来模拟人类学习活动的一门学科。

稍为严格的提法是:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。Simon对学习的定义是:“如果一个系统能够通过执行某种过程而改进它的性能,这就是学习”。这个定义有三个要点:第一,学习是一个过程;第二,学习是对一个系统而言的;第三,学习可以改变系统性能。概况起来就是过程、系统与改变性能。对上述说法,第一点是自然的。第二点中的系统则相当复杂,一般是指一台计算机,但是,也可以是计算系统,甚至是包括人的人机计算系统。第三点则只强调“改进系统性能”,而未限制这种“改进”的方法。

机器学习的过程

一般来说,一个完整的机器学习系统应包括环境、学习单元、知识库、执行单元,如图1-5所示。计算机通过各种软硬件从环境中感知、获取信息,利用学习单元将信息加工为有用的知识,保存在知识库中。使用知识指导执行单元产生动作,包括决策、任务的执行等。观察执行效果并反馈给学习单元。
1.png

图1 机器学习模型

机器学习的分类

按照训练的数据有无标签,可以将机器学习分为监督学习、无监督学习、半监督学习,以及其他算法,如图2所示。
2.png

图2 机器学习的分类

监督学习是利用一组已知类别的样本训练、调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。监督学习是从标记的训练数据来推断一个功能的机器学习任务。训练数据包括一套训练示例。在监督学习中,每个实例都是由一个输入对象(通常为包含多个特征的矢量)和一个期望的输出值(也称为监督信号)组成。监督学习算法分析该训练数据,并产生一个推断。其可以用于映射出新的实例。一个最佳的方案将允许该算法来正确地决定那些看不见的实例的类标签。这就要求学习算法是在一种"合理"的方式下,从一种训练数据在看不见的情况下形成。常用的监督学习算法有:线性回归,逻辑回归,决策树,神经网络,支持向量机等。

如果所有训练数据都没有标签,则称为无监督学习。例如聚类算法,降维算法。聚类的目标是寻找一个方案,将一组样本划分成若干簇,使得每个簇内的实例尽可能相似,而不同簇的元素尽可不相似。

如果训练数据的一部分是有标签的,另一部分没有标签,而没标签数据的数量常常极大于有标签数据数量,这时候称为半监督学习。半监督学习依据的规律是数据的分布必然不是完全随机的,通过一些有标签数据的局部特征,以及更多没标签数据的整体分布,就能得到可以接受甚至是非常好的分类结果。

此外,还有一些学习方法,不能归为以上三种方法,例如强化学习、推荐算法、元学习等,不再一一详述。

典型机器学习方法

目前,人们已经提出了许多机器学习方法。这些方法在解决不同问题时能够表现出比较出色的性能。比较常用、典型的机器学习方法有:回归分析、分类(决策树、支持向量机、神经网络)、聚类(K-means)、降维、特征抽取等,如图3所示。
3.png

图3 机器学习问题类型

回归算法

回归分析是在掌握大量观察数据的基础上,利用数理统计方法建立因变量与自变量之间的回归关系函数表达式,称为回归方程式。回归分析中,当研究的因果关系只涉及因变量和一个自变量时,叫做一元回归分析;当研究的因果关系涉及因变量和两个或两个以上自变量时,叫做多元回归分析。因此,根据自变量的个数,可以是一元回归,也可以是多元回归。此外,还依据描述自变量与因变量之间因果关系的函数表达式是线性还是非线性,分为线性回归分析和非线性回归分析。

决策树

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过递归地分析各个属性的重要程度,构成树状决策结构。由于这种方法以属性为节点、以属性值为分支,画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,它代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若要有复数输出,可以建立独立的决策树以处理不同输出。

决策树使用信息熵(Entropy)刻画系统的凌乱程度,使用某个属性对样本集进行分类后,样本向有序化方向变化。计算使用该属性分类过的样本集信息熵,与分类前的信息熵对比,可得信息增益。信息增益代表了样本从无序化向有序化方向变化的程度。因此,哪个属性对样本分类后的信息增益大,说明哪个属性就比较重要。选取最重要的属性作为根属性,对其它属性递归的分别计算在上次分类后的信息增益,最终可以得到从输入到输出的一个树状结构。从数据产生决策树的机器学习技术叫做决策树学习,通俗点说就是决策树。决策树是一种十分常用的分类方法。常用的决策树算法有ID3,C4.5,CART等。

神经网络

人工神经网络(Artificial Neural Network,ANN)是由大量的、简单的处理单元(称为神经元)广泛地互相连接而形成的复杂网络系统,它反映了人脑功能的许多基本特征,是一个高度复杂的非线性动力学习系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。理论上,神经网络可以充分逼近任意复杂的非线性关系。

神经网络有多个神经元相互连接形成。网络中分成输入层、隐藏层、输出层。输入层负责接收信号,隐藏层负责对数据的分解与处理,最后的结果被整合到输出层。每层中的一个节点代表一个处理单元,可以认为是模拟了一个神经元。若干个处理单元组成了一个层,若干个层再组成了一个网络,也就是神经网络。在神经网络中,每个处理单元事实上就是一个逻辑回归模型,逻辑回归模型接收上层的输入,把模型的预测结果作为输出传输到下一个层次。通过这样的过程,神经网络可以完成非常复杂的非线性分类。

目前,主要的神经网络模型有BP网络,Hopfield网络,ART网络和Kohonen网络等。神经网络已经在自动控制、组合优化问题、模式识别、图像处理、信号处理、机器人控制、保健医疗、经济等许多领域得到了广泛的应用。

支持向量机SVM(Support Vector Machine)

在分类问题中,数据点是n维实空间中的点。分类的目标是希望能够把这些点通过一个n-1维的超平面分开。通常这个被称为线性分类器。有很多分类器都符合这个要求。但是人们还希望找到分类最佳的平面,即使得属于两个不同类的数据点间隔最大的那个面,该面亦称为最大间隔超平面。如果能够找到这个面,那么这个分类器就称为最大间隔分类器。

SVM正是这样一种努力最小化结构风险的算法。支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。建立方向合适的分隔超平面使两个与之平行的超平面间的距离最大化。其假定为,平行超平面间的距离或差距越大,分类器的总误差越小,从而实现结构风险最小的目的。所谓支持向量是指那些在间隔区边缘的训练样本点。

SVM的关键在于核函数。低维空间向量集通常难于划分,解决的方法是将它们映射到高维空间。但这个办法带来的困难就是计算复杂度的增加,而核函数正好巧妙地解决了这个问题。它虽然将问题映射到高维空间,但是依然在低维空间进行计算。只要选用适当的核函数,就可以得到高维空间的分类函数,却不增加计算的复杂度。在SVM理论中,采用不同的核函数将导致不同的SVM算法。常用的核函数有线性核、多项式核、高斯核、拉普拉斯核、Sigmoid核。

聚类算法

如果训练数据都没有类标签,也就是说,不知道样本属于哪个类,可以通过训练,推测出这些数据的标签。这类算法即无监督算法。无监督算法中最典型的代表就是聚类算法。

简单来说,聚类算法计算种群中的距离,根据距离的远近将数据划分为多个族群。每个簇内的样本距离尽量的小,而不同簇的元素间距离尽量的大。聚类算法中最典型的代表是K-Means算法。

K均值聚类算法的基本思想是:随机选取K个对象作为初始的聚类中心;然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

其它聚类方法还有均值漂移聚类、基于密度的聚类方法、用高斯混合模型(GMM)的最大期望(EM)聚类、凝聚层次聚类等。

降维算法

降维算法也是一种无监督学习算法,其主要特点是将数据从高维降低到低维层次。在这里,维度其实表示的是数据的特征量的大小。降维算法的主要作用是压缩数据与提升机器学习其他算法的效率。通过降维算法,可以将具有几千个特征的数据压缩至若干个特征。另外,降维算法的另一个好处是数据的可视化,例如,将5维的数据压缩至2维,然后可以用2维平面来可视化观察。降维算法的主要代表是PCA算法(即主成分分析算法)。

深度学习

深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释图像、声音、文本等数据。深度学习的概念源自对人工神经网络的研究。含多个隐层的多层感知器就是一种深度学习结构。它通过组合低层特征,形成更加抽象的高层,表示属性类别或特征,以发现数据的分布式特征表示。

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

同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同。例如,卷积神经网络(Convolutional Neural Networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。

机器学习的一般步骤

一般来说,机器学习可以分为4个步骤,即分析和定义问题,数据预处理,模型(算法)选择、模型训练、评价和优化,模型部署应用,如图4所示。
4.png

图4 机器学习的一般步骤

分析和定义问题

分析和定义问题即根据面对的实际问题,分析问题的目标、性质和类型,明确是分类问题、聚类问题、回归问题,还是其他类型的问题。

数据预处理

所有的机器学习算法都是建立在数据的基础之上的。在进入模型训练之前,必须要进行数据预处理。

首先是收集数据的过程,如读取数据库、数据仓库、数据文件,使用网络爬虫爬取数据等。

之后是进行数据清洗,包括数据格式的转化,将数据转换成算法所能处理的形式;处理噪声数据、缺失值;数据的采样(有可能并不需要这么多的数据);数据的等价转换,包括统一数据的度量(这在距离计算时非常重要)、零均值化、标准化、属性的分解以及合并等。

有时还需要对数据进行初步分析,以对数据有一些初步了解。如果是有标签的数据,可以弄清楚类别的分布,这样可以知道模型分类时准确率的下限。还可以做的更多的一点是,获取属性间的关联性。如果有关联的话,关联度有多大。这样有助于去除一些冗余属性,进行数据的降维,以及知道哪些属性对结果的影响比较大,以进行权值选择。还经常需要对数据进行可视化操作,以初步判断数据的特征、分布、关联性,如柱状图、散点图、箱型图等。柱状图是描述出每一维度的值与其类标签之间的关系,也可以从图形中看出每一维的数据是服从何种分布的。对每两组属性画出其散点图,这样可以较为容易地看出属性之间的关联性。

算法选择、模型训练、评价和优化

对于一个具体的问题,有时有很多种算法可以求解,那么是不是需要对每一种方法都进行一次尝试呢?并不需要,因为那样太费时间,而且并不是所有的算法都能有效。抽查就是对多个算法进行快速验证,以决定对哪一个算法进行进一步的训练。

在进行算法的抽查时,并不需要使用数据集中的所有数据进行训练,只需要使用较小的一部分。在选择完算法之后,再使用所有数据进行进一步的训练。可以使用交叉验证的方法来进行该过程。

在进行算法抽查时,处于候选集中的算法的种类越多越好,这样才能测试出哪种类型的算法更能学习到数据中的结构。在选择完算法之后,并不一定直接使用该算法进行进一步的学习,可能会使用基于该算法的改进版本。

在该部分中,还有很重要的一块内容就是训练集、测试集的划分,结果衡量标准的选择,以及结果的可信度。

模型部署应用

当训练的模型能够较好地解决一个问题的时候,将其与实际的系统或产品相结合,用于预测、指导生产生活中的各类实际问题。

本文节选自《Python机器学习一本通》一书,经出版社授权转载。

0 个评论

要回复文章请先登录注册