机器学习入门到实战 MATLAB实践应用 作者:冷雨泉,张会文,张伟
机器学习入门到实战 MATLAB实践应用 出版社: 清华大学出版社
机器学习入门到实战 MATLAB实践应用 内容简介
本书主要介绍经典的机器学习算法的原理及改进,以及MATLAB的实例实现。本书内容分为三部分。第一部分(第1章)是机器学习概念篇,介绍机器学习的相关概念,并且对机器学习的各类算法进行分类,以便读者对机器学习的知识框架有一个整体的了解,从而在后续的学习中更容易接受机器学习涉及的各类算法。第二部分(第2章、第3章)是MATLAB机器学习基础篇,介绍MATLAB的基本使用方法,以及MATLAB集成的机器学习工具箱。MATLAB易上手的特点让使用者将更多的精力专注于算法开发与使用,而不是搭建算法实现开发平台。第三部分(第4章~第19章)是机器学习算法与MATLAB实践篇,对监督学习、无/非监督学习、强化学习三大类常用算法进行逐个讲解,包括机器学习算法原理、算法优缺点、算法的实例解释以及MATLAB的实践应用。
本书适合以下读者: 对人工智能、机器学习感兴趣的读者; 希望用机器学习完成设计的计算机或电子信息专业学生; 准备开设机器学习、深度学习实践课的授课老师; 学习过C语言,且希望进一步提升编程水平的开发者; 刚从事机器学习、语音、机器视觉、智能机器人研发的算法工程师。
机器学习入门到实战 MATLAB实践应用 目录
第一部分机器学习概念篇
●第1章机器学习基础
1.1机器学习概述
1.1.1机器学习的概念
1.1.2机器学习的发展史
1.1.3机器学习的用途
1.1.4机器学习、数据挖掘及人工智能的关系
1.2机器学习基本术语
1.3机器学习任务及算法分类
1.4如何学习和运用机器学习
1.4.1软件平台的选择
1.4.2机器学习应用实现流程
1.5数据预处理
1.5.1数据初步选取
1.5.2数据清理
1.5.3数据集成
1.5.4数据变换
1.5.5数据归约
参考文献
第二部分MATLAB机器学习基础篇
●第2章MATLAB基础入门
2.1MATLAB界面介绍
2.2矩阵赋值与运算
2.3m文件及函数实现与调用
2.4基本流程控制语句
2.5基本绘图方法
2.5.1二维绘图函数的基本用法
2.5.2三维绘图函数的基本用法
2.5.3颜色与形状参数列表
2.5.4图形窗口分割与坐标轴
2.6数据文件导入与导出
参考文献
●第3章MATLAB机器学习工具箱
3.1工具箱简介
3.2分类学习器基本操作流程
3.3分类学习器算法优化与选择
3.3.1特征选择
3.3.2选择分类器算法
3.4工具箱分类学习实例
参考文献
第三部分机器学习算法与MATLAB实践篇
●第4章k近邻算法
4.1k近邻算法原理
4.1.1k近邻算法实例解释
4.1.2k近邻算法的特点
4.2基于k近邻算法的算法改进
4.2.1快速KNN算法
4.2.2kd树KNN算法
4.3k近邻算法的MATLAB实践
参考文献
●第5章决策树
5.1决策树算法原理
5.1.1决策树算法基本原理
5.1.2决策树算法的特点
5.1.3决策树剪枝
5.1.4分类决策树与回归决策树
5.2基于决策树算法的算法改进
5.2.1ID3决策树
5.2.2C4.5决策树
5.2.3分类回归树
5.2.4随机森林
5.3决策树算法MATLAB实践
参考文献
●第6章支持向量机
6.1支持向量机算法原理
6.1.1支持向量机概述
6.1.2支持向量机算法及推导
6.1.3支持向量机核函数
6.2改进的支持向量机算法
6.3支持向量机算法的MATLAB实践
参考文献
●第7章朴素贝叶斯
7.1贝叶斯定理
7.2朴素贝叶斯分类
7.3朴素贝叶斯实例分析
7.4朴素贝叶斯分类算法的改进
7.4.1半朴素贝叶斯分类模型
7.4.2树增强朴素贝叶斯分类模型
7.4.3贝叶斯网络
7.4.4朴素贝叶斯树
7.4.5属性加权朴素贝叶斯分类算法
7.5朴素贝叶斯算法MATLAB实践
参考文献
●第8章线性回归
8.1线性回归原理
8.1.1简单线性回归
8.1.2线性回归实例
8.2多元线性回归
8.3线性回归算法的MATLAB实践
参考文献
●第9章逻辑回归
9.1逻辑回归原理
9.1.1Sigmoid函数
9.1.2梯度下降法
9.2逻辑回归理论推导
9.2.1逻辑回归理论公式推导
9.2.2向量化
9.2.3逻辑回归算法的实现步骤
9.2.4逻辑回归的优缺点
9.3逻辑回归算法的改进
9.3.1逻辑回归的正则化
9.3.2主成分改进的逻辑回归方法
9.4逻辑回归的MATLAB实践
参考文献
●第10章神经网络
10.1神经网络算法原理
10.1.1神经网络工作原理
10.1.2神经网络的特点
10.1.3人工神经元模型
10.2前向神经网络
10.2.1感知器
10.2.2BP算法
10.3基于神经网络的算法拓展
10.3.1深度学习
10.3.2极限学习机
10.4神经网络的MATLAB实践
参考文献
●第11章AdaBoost算法
11.1集成学习方法简介
11.1.1集成学习方法分类
11.1.2集成学习Boosting算法
11.2AdaBoost算法原理
11.2.1AdaBoost算法思想
11.2.2AdaBoost算法理论推导
11.2.3AdaBoost算法的实现步骤
11.2.4AdaBoost算法的特点
11.2.5通过实例理解AdaBoost算法
11.3AdaBoost算法的改进
11.3.1RealAdaBoost算法
11.3.2GentleAdaBoost算法
11.3.3LogitBoost算法
11.4AdaBoost算法的MATLAB实践
参考文献
●第12章k均值算法
12.1k均值算法原理
12.1.1k均值算法基本原理
12.1.2k均值算法的实现步骤
12.1.3k均值算法实例
12.1.4k均值算法的特点
12.2基于kmeans算法的算法改进
12.2.1改善k值选取方式的kmeans改进算法
12.2.2改进初始聚类中心选择方式的kmeans改进算法
12.3kmeans算法的MATLAB实践
参考文献
●第13章期望最大化算法
13.1EM算法
13.1.1EM算法思想
13.1.2似然函数和极大似然估计
13.1.3Jensen不等式
13.1.4EM算法理论和公式推导
13.1.5EM算法的收敛速度
13.1.6EM算法的特点
13.2EM算法的改进
13.2.1Monte Carlo EM算法
13.2.2ECM算法
13.2.3ECME算法
13.3EM算法的MATLAB实践
参考文献
●第14章k中心点算法
14.1经典k中心点算法——PAM算法
14.1.1PAM算法原理
14.1.2PAM算法实例
14.1.3PAM算法的特点
14.2k中心点算法的改进
14.3k中心点算法的MATLAB实践
参考文献
●第15章关联规则挖掘的Apriori算法
15.1关联规则概述
15.1.1关联规则的基本概念
15.1.2关联规则的分类
15.2Apriori算法原理
15.3Apriori算法的改进
15.3.1基于分片的并行方法
15.3.2基于hash的方法
15.3.3基于采样的方法
15.3.4减少交易个数的方法
15.4Apriori算法的MATLAB实践
参考文献
●第16章高斯混合模型
16.1高斯混合模型原理
16.1.1单高斯模型
16.1.2高斯混合模型
16.1.3模型的建立
16.1.4模型参数的求解
16.2GMM算法的MATLAB实践
16.2.1生成一个高斯混合模型
16.2.2拟合GMM
16.2.3GMM聚类实例
16.3GMM的改进及MATLAB实践
16.3.1GMM的正则化
16.3.2GMM中k的选择问题
16.3.3GMM拟合的初始值选择问题
参考文献
●第17章DBSCAN算法
17.1DBSCAN算法原理
17.1.1DBSCAN算法的基本概念
17.1.2DBSCAN算法原理
17.1.3DBSCAN算法的实现步骤
17.1.4DBSCAN算法的优缺点
17.2DBSCAN算法的改进
17.2.1DPDGA算法
17.2.2并行DBSCAN算法
17.3DBSCAN算法的MATLAB实践
参考文献
●第18章策略迭代和值迭代
18.1基本概念
18.1.1强化学习的基本模型
18.1.2马尔可夫决策过程
18.1.3策略
18.1.4值函数
18.1.5贝尔曼方程
18.2策略迭代算法原理
18.3值迭代算法原理
18.4策略迭代和值迭代算法的MATLAB实践
参考文献
●第19章SARSA算法和Q学习算法
19.1SARSA算法原理
19.2SARSA算法的MATLAB实践
19.3Q学习算法原理
19.4Q学习算法的MATLAB实践
参考文献
机器学习入门到实战 MATLAB实践应用 精彩文摘
第3章MATLAB机器学习工具箱
在MATLAB近几年的版本中,推出了一个新的产品功能,即统计和机器学习工具箱(Statistics and Machine Learning Toolbox)。这个工具箱具有很多功能,并且在不断地完善中。具体来说它包含如下一些子模块: 探索性数据分析、数据降维、机器学习、回归和方差分析、概率分布拟合及假设检验等功能模块。如果读者希望快速地了解部署一个机器学习应用,那么MATLAB提供的工具箱将会是一个不错的选择。基于这个原因,本章将着重介绍MATLAB统计和机器学习工具箱中的机器学习模块。
3.1工具箱简介
机器学习算法使用计算方法直接从数据中“学习”信息,不把预定方程假设为模型。在第1章中罗列了各种不同的机器学习算法,归纳起来,按照解决问题的性质,可以分为分类(回归)、聚类和强化学习问题。相应地,在Statistics and Machine Learning Toolbox中提供用于执行受监督和无/非监督机器学习的方法。分类算法使用户可以将一个分类应变量建模为一个或多个预测元的函数。Statistics and Machine Learning Toolbox提供了涵盖多种参数化和非参数化分类算法的应用程序和函数,如logistic回归、朴素贝叶斯、k近邻、SVM等[1]。研究者可以直接利用MATLAB提供的这些算法的函数接口,通过编写脚本程序来使用这些算法。更直观地,MATLAB提供了一个GUI形式的分类学习应用程序,它使得研究者能够以窗口菜单的形式构建一个机器学习应用。本章将着重介绍这个应用的使用方法。
分类学习器应用程序(Classification Learner App)提供了一个机器学习应用常用的操作,如交互式探查数据、选择特征、指定交叉验证方案、训练模型和评估结果。分类学习器应用程序用于使用监督式机器学习来训练模型对数据进行分类,使用它可以执行常见任务,例如,导入数据和指定交叉验证方案; 探索数据和选择特征; 使用多种分类算法训练模型; 比较和评估模型; 在计算机视觉和信号处理等应用场合中共享训练过的模型。
除此之外,分类学习器集成了多种可视化方式来方便用户选择模型,进行模型评估和比较。训练好的模型也可以直接导入MATLAB的工作空间,来对新的数据预测,也可以直接生成代码,方便和其他应用集成。
在MATLAB统计和机器学习工具箱中当然也实现了很多聚类算法,聚类算法通过根据相似度测量对数据分组来发现数据集中的规律。可用的算法包括k均值、k中心点、分层聚类、高斯混合模型和隐马尔可夫模型。当不知道聚类的数量时,可以使用聚类评估技术根据特定指标确定数据中存在的聚类数量。只是聚类算法还没有对应的GUI应用。对于回归算法,MATLAB 2017版本也推出了回归学习器,它的操作流程和界面与分类学习器很类似,感兴趣的读者可安装2017版本进行实践操作和学习。
3.2分类学习器基本操作流程
对于构建机器学习应用,通常包括五部分,分别是数据导入、数据的探索和特征选择、训练模型、比较模型和输出模型。分类学习器也在不同的窗口中实现了这些功能。
首先,为了启动分类学习器,可以通过直接在命令行窗口中输入“classification Learner”,或者在MATLAB的菜单栏中选择“应用程序”选项卡下的分类学习器应用Classification Learner,如图3.1所示。
图3.1启动分类学习器
此时MATLAB将弹出一个空白的分类器窗口,如图3.2所示。
图3.2空白的分类器窗口
该窗口就是进行分类操作最核心的一个窗口。但是可以看到大部分的菜单和按钮都是灰色的,这是因为还没有选择数据。对于机器学习应用来说,数据就好像是机器的燃料,没有燃料,机器自然动不起来,所以为了进行下一步工作,首先需要输入数据。
导入数据的方法分为两种方式: 一种是单击CLASSIFICATION LEARNER选项卡下FILE组中的New Session下拉按钮,然后选择From Workspace,如图3.3所示,其含义是导入MATLAB工作空间的函数数据; 另一种则是选择From File,如图3.3所示,其含义是通过数据文件导入数据,如.xls、.xlsx、.xlsm、.txt、.csv等格式数据文件。
图3.3导入数据
数据导入后,则进入数据处理窗口界面,如图3.4所示。图3.4中的数据是在命令行窗口中调用fisheriris数据集而产生的,其具体操作是在MATLAB命令行窗口中输入: fishertable=readtable('fisheriris.csv');并按Enter键生成的数据变量,此时使用上述的第一种导入数据的方法,即可生成图3.4。
图3.4数据处理窗口
该窗口主要目的是用来设置训练数据的相关属性、标签及设置验证集。可以看到窗口主要分成3个部分,其依次对应3个步骤。在Step1中主要功能是选择数据集,且设置数据集矩阵中的行作为一个变量,还是将列作为变量; 在Step2需要向算法声明哪些维度是输入量,哪些是输出量,对于分类问题来说就是选择哪几个变量作为属性值,哪个变量作为标签。这个声明可以通过把变量导入为Predictor还是Response完成,其中,Predictor对应输入,Response对应标签,此时,导入数据的工作就完成了。
为了优化算法中的一些超参数,需要一定的手段来评估不同参数的表现。其中,验证集的目的是用来对算法的超参数调优。在模型计算过程中,测试集数据只能使用一次,不能用测试集数据调优,因为其会导致算法对测试集过拟合,将会导致模型在测试集上有较好的结果,但是实际效果不能得到保证。所以可以知道验证集应该是训练集的一部分。但是当训练集数量较少(因此验证集的数量更少)时,将用到交叉验证法。所谓kfold validation就是把训练集均分成k份,其中k-1份用来训练,1份用来验证。然后循环取其中k-1份来训练,其中1份来验证,最后取所有k次验证结果的平均值作为算法验证结果。在窗口的Step3中可以允许用户设定这个k值。导入数据并设置好交叉验证后,单击Start Session按钮就弹出如图3.5所示的分类器窗口。
图3.5分类器窗口
可看出图3.5所示的窗口和图3.2所示的窗口是一样的,只是灰色的部分被激活了。这个激活的窗口包含了训练一个机器学习应用的核心要素,其大体分六部分。最上边的菜单栏提供了特征选择、算法选择、模型训练、可视化绘图及输出等操作。特征选择模块用于选择输入特征,即选择属性特征,一方面可通过单击该模块中的Feature Selection按钮进行人工选择,也可以利用PCA的方法自动选择。分类算法模块是各种算法的一个仓库。单击其下拉按钮会出现如图3.6所示下拉列表。
图3.6多种分类器
可以看到,分类学习器将可以应用的算法分成了四大类,分别是决策树类、判别分析类、支持向量机类、神经网络类。注意,在GET STARTED中的All和AllLinear并不是一个算法,而是一个快捷操作,它能够快速地对数据应用分类学习器中的所有模型或所有线性模型。在做了特征选择后,下一步则需要选择一个合适的分类算法。有了算法,下一步就是训练了。在TRAINING组中,除了简单地单击Train进行训练外,还可以通过Advanced按钮设置一些训练的参数,如对于决策树类算法来说可以设置最大的叶子结点数及确定决策边界的准则等。
当用户选择一个训练模型后,它就会出现在窗口的右侧方框中。用户可以选择多个模型,一次训练。得到的每个分类器的分类精度会显示在方框中。其中分类效果最好的模型会以方框突出显示。History窗格显示当前模型的一些详细信息。
训练完毕后,用户不仅仅得到一个分类的精度值,同时用户还可以通过各种图形来直观地观测当前模型的表现。当然,图示化训练数据对于数据探索,发现数据的模式也是大有裨益的。绘图的选项在PLOTS组中,可以绘制的图形包括训练数据的散点图、confusion matrix、ROC曲线等。关于这些不同图形的含义,读者可参考机器学习相关书籍,另外,在窗口的最右边可以设置绘图参数。
通过可视化窗口界面,用户可以再次调整模型,如进一步的特征提取,或者设置更加合理的超参数值,来改善模型的表现。那么,一旦得到了一个满意的模型,该如何利用它呢?分类学习器提供了两种模式: 一种方法是用户导出训练好的模型到工作空间中,这个时候用户将发现变量空间中多了一个结构体变量,这个变量含有一个用于预测的成员函数,此时,用户将可以用它来做预测。但是如果用户希望更改模型,或者把它集成到其他的应用中,则需要用到另外一种方法,也是最通用的方法,即以代码的形式使用。MATLAB可以直接通过GUI形式的窗口生成代码。单击图3.5所示的分类器窗口中的Export Model按钮,操作如图3.7所示。
图3.7导出训练模型
因为特征选择和算法选择对于一个机器学习应用至关重要,下面将会更详细地介绍如何使用分类学习器APP做特征选择和分类器选择。
3.3分类学习器算法优化与选择
使用工具箱的方法并不是智能的,同样需要对数据进行预处理,并根据经验和分析选择合适的数据特征。另外,机器学习各类算法也具有不同的特点,使用者应在不断的实践中了解各类机器学习算法,在特定的应用场合应选择适合数据自身的算法。
3.3.1特征选择
在分类学习器中可以通过对原始数据做散点图来分析是否需要或排除某个特征。选择不同特征作为坐标轴,如果数据某一类别数据很好地分开,说明这个特征是有用的。如果某个特征对于分类没有任何作用,则可以考虑把它排除。在fisheriris数据集中选择X和Y分别为PetalLength和PetalWidth,可以看到setosa类能够被很好地分开,如图3.8所示。
图3.8数据可视化
在分类学习器窗口中,也可以通过勾选某个特征,观察分类器的表现。如果删除某个特征后可以提高模型的性能,那么应该排除这个特征,尤其是当收集该数据比较昂贵和困难的时候。具体操作为单击FEATURES组中的Feature Selection按钮,将出现如图3.9所示的窗口,用户可以取消选中特征名称后的复选框,从而排除该特征。
图3.9特征选择菜单
利用主成分分析来降低特征空间的维度,有助于防止过拟合。PCA能够消除数据中的冗余信息,产生一个新的变量集,该变量集称为主成分。在工具箱中使用PCA包括以下步骤: (1)在分类器窗口的FEATURES组中单击PCA按钮; (2)在Advanced PCA Options下拉列表框中选中Enable PCA复选框,并设置相应参数(一般采用默认)。至此,用户已完成了对PCA的设置,之后,当用户单击Train的时候,PCA会首先对数据做变换和处理,然后进行模型训练。
在分类学习器中也可以利用平行坐标图(Parallel Coordinates Plot)来选择特征,具体操作为单击分类学习器窗口的PLOTS组中的Parallel Coordinates Plot按钮,生成平行坐标图,如图3.10所示。
图3.10平行坐标图
在平行坐标图中其实它就是把每个特征列在一个一维的轴上画出来,然后把每个记录(一个样本点)依次连接起来,最后用不同的颜色表示不同的类别,错分的类别用虚线表示。如果某个特征具有很好的区分度,那么在坐标轴上就会出现明显的聚类现象。从图3.10可以看出PetalWidth和PetalLength特征具有很好的分类效果。
3.3.2选择分类器算法
各分类器算法有各自的特点,依赖于具体的需求,如速度、存储、灵活性、可解释性等,会有不同的选择。如果对于一个数据没有特别深刻的了解,或者特别适合的模型,最开始用户可以选择All QuickToTrain,这个选项会用所有高效的模型对数据训练,能够快速地得到不同分类器的表现。但是一般来说,不同类型算法有不同的特点,有大概的了解也会有利于用户选择分类器算法。表3.1中针对不同类型分类器算法进行了对比。
本文来自离开我后记得微笑投稿,不代表电子书资源网立场,如若转载,请联系原作者获取。