机器学习入门到实战——MATLAB 实践应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-21 13:43:18

点击下载

作者:冷雨泉 张会文 张伟

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

机器学习入门到实战——MATLAB 实践应用

机器学习入门到实战——MATLAB 实践应用试读:

前言

近年来,随着计算机技术及互联网技术的发展,人工智能技术也取得了重要的突破。作为人工智能的核心技术,机器学习已经广泛应用于各行各业中,如图像识别、语言识别、文本分类、智能推荐、网络安全等。未来,伴随着信息技术的进一步发展,机器学习技术将会更加深入地应用到生产、生活的方方面面。

目前,机器学习技术正处于朝阳时期,对于从事机器学习的研究人员来说,应感到荣幸和骄傲,因为能够在对的时间从事最热门的技术研究。对于有志于或有兴趣从事机器学习的研究人员而言,首先应知道,现阶段对这方面人才的需求远远大于供给,同时,这一技术会伴随着信息化技术一直发展下去。其次,在学习之初,不要被大量的数学公式吓得退避三舍,而应明白,在大多数情况下,尤其是应用层面,机器学习仅是一种实现技术要求的工具,需要了解各类算法的优势、劣势及有效使用的方法,无须详尽地了解各种机器学习算法的细枝末节。正如计算机内部运行机制极其复杂,大多数人每天都会使用,但却无须了解CPU和内存在每一时刻的具体运行过程。

本书是作者在多年机器学习及工作经验的基础上,对大量的网络资源、论文和相关书籍进行总结、整理、分析后编写的。全书共分为三部分,分别为机器学习概念篇、MATLAB机器学习基础篇、机器学习算法与MATLAB实践篇。

本书各章内容简介如下。

第1章主要介绍机器学习中的基本概念、术语等,机器学习算法分类框架,机器学习算法实现的基本流程,以及机器学习中数据预处理的基本方法。

第2章主要介绍MATLAB软件的基本操作和使用方法,包括矩阵运算、m文件编写、流程控制语句编写、绘图及文件的导入与导出。

第3章主要介绍MATLAB机器学习工具箱中的分类学习器应用程序(Classification Learner App)的使用方法,通过安德森鸢尾花卉数据集的实例,具体介绍使用方法和流程。

第4章介绍分类回归算法中的k近邻算法(KNN)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第5章介绍分类回归算法中的决策树(Decision Tree)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第6章介绍分类回归算法中的支持向量机(SVM)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第7章介绍分类回归算法中的朴素贝叶斯(Naive Bayes, NB)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第8章介绍分类回归算法中的线性回归(Line Regression)的算法原理、算法实现步骤、多元线性回归原理,以及通过MATLAB进行实例的算法编写与详解。

第9章介绍分类回归算法中的逻辑回归(Logistic Regression)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第10章介绍分类回归算法中的神经网络(Artificial Neural Networks, ANN)的算法原理、算法实现步骤、算法特点、算法拓展,以及通过MATLAB进行实例的算法编写与详解。

第11章介绍分类回归算法中的AdaBoost算法的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第12章介绍聚类算法中的k均值算法(k-means)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第13章介绍聚类算法中的期望最大化算法(EM)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第14章介绍聚类算法中的k中心点算法(k-medoids)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第15章介绍聚类算法中的关联规则挖掘的Apriori算法的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第16章介绍聚类算法中的高斯混合模型(GMM)的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第17章介绍聚类算法中的DBSCAN算法的算法原理、算法实现步骤、算法特点、算法改进,以及通过MATLAB进行实例的算法编写与详解。

第18章介绍强化学习算法中的策略迭代和值迭代的算法原理、算法实现步骤,以及通过MATLAB进行实例的算法编写与详解。

第19章介绍强化学习算法中的SARSA算法和Q学习算法的算法原理、算法实现步骤,以及通过MATLAB进行实例的算法编写与详解。

本书的出版得到了清华大学出版社图书出版基金的资助和出版社工作人员的大力支持,作者在此表示衷心的感谢。此外,学术界、产业界同仁们的不断探索,才推动机器学习技术走到今天,本书的完成得力于此,编者在此一并表示感谢。本书由冷雨泉、张会文、张伟著,其他参与编写的作者还有付明亮、韩小宁、秦晓成、张会彬,排名不分先后。

本书适合以下读者:对人工智能、机器学习感兴趣的读者;希望用机器学习完成设计的计算机或电子信息专业学生;准备开设机器学习、深度学习实践课的授课老师;学习过C语言,且希望进一步提升编程水平的开发者;刚从事机器学习、语音、机器视觉、智能机器人研发的算法工程师。

一方面,机器学习内容极为庞大和复杂,存在大量的交叉算法,且依据应用领域的不同,不同的算法也会有不同的表现;另一方面,机器学习领域发展极其迅速,不断取得新的研究成果。因此,作者只能尽力将现有机器学习的框架关系及主要算法原理及其实现展现给读者,以起到抛砖引玉的作用,给予机器学习的初学者一定的指导。读者在后期的机器学习中,需要阅读大量的文献,并在实践中进行摸索。

由于作者学识有限,疏漏和不当之处在所难免,敬请读者和同行们给予批评指正(ML_matlab@163.com)。读者如有兴趣,可加入机器学习互动QQ群446360728,进行交流,共同进步。作 者2018年10月

特别说明:此电子书暂不提供二维码资源,敬请谅解。第一部分机器学习概念篇

对于机器学习初学者,首先要对机器学习有一定的概念性认识,了解什么是机器学习、机器学习的用途、能够解决什么问题及如何解决问题。在本部分的学习中,将通过实例让读者了解机器学习的相关术语,使读者对机器学习有一个具体化的认识。在介绍了基本术语的前提下,进一步介绍众多机器学习算法是如何分类的,使读者对机器学习的众多算法形成一定的框架性认识。最后,将介绍如何选择机器学习软件、算法、开发机器学习应用程序步骤及基本的数据预处理流程。第1章机器学习基础

第四次工业革命是以互联网产业化、工业智能化、工业一体化为代表,以人工智能、清洁能源、无人控制技术、量子信息技术、虚拟现实及生物技术为主的全新技术革命。不得不说,第四次工业革命主要是信息化与数据化的时代,将信息与数据进行高效的利用的程度,将决定第四次工业革命横向发展的尺度。然而,机器学习技术恰恰是让研究者从数据集中受到启发,利用计算机来彰显数据背后的真实含义,从而推动产业的发展。目前,众多公司已用机器学习软件改善商业决策、提高生产率、检测疾病、预测天气等,并且伴随着数据处理技术的进一步发展,机器学习技术会有更宽广与深远的应用。

本章将针对以下内容进行讲解。(1)机器学习概述。(2)机器学习基本术语。(3)机器学习任务及算法分类。(4)如何学习和运用机器学习。(5)数据预处理。1.1 机器学习概述1.1.1 机器学习的概念

学习是人类具有的一种重要智能行为,但究竟什么是学习,长期以来却众说纷纭,从社会学、逻辑学和心理学的角度都有不同的解释。Langley(1996)定义的机器学习是“机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。”(Machine learning is a science of the artificial.The field's main objects of study are artifacts, specifically [1]algorithms that improve their performance with experience.)Tom Mitchell的机器学习(1997)对信息论中的一些概念有详细的解释,其中定义机器学习时提到,“机器学习是对能通过经验自动改进的计算机算法的研究。”(Machine learning is the study of computer algorithms that improve automatically through experience.)[2]Alpaydin(2004)同时提出自己对机器学习的定义,“机器学习是用数据或以往的经验来优化计算机程序的性能标准。”(Machine learning is programming computers to optimize a performance criterion [3]using example data or past experience.)

为便于进行讨论和估计学科的进展,有必要对机器学习给出定义,即使这种定义是不完全的和不充分的。顾名思义,机器学习是研究如何使用机器来模拟人类学习活动的一门学科。于是可以给出稍为严格的定义:机器学习是一门研究机器获取新知识和新技能,并识别现有知识的学问。这里所说的“机器”,指的就是计算机、电子计算[1]机、中子计算机、光子计算机或神经计算机等。

一个典型机器学习系统的结构模型如图1.1所示。其中,系统(S)是研究对象,X为输入序列,Y为输出序列,Y′为预测输出序列。系统(S)在给定一个输入x的情况下,得到一定的输出y,MLM是所求的机器学习机,其输出为y′。机器学习的目的是根据给定的训练样本求取系统输入、输出之间的依赖关系的估计,使它能够对未知的输出做出尽可能准确的预测。图1.1 典型机器学习系统的结构模型1.1.2 机器学习的发展史

机器学习是人工智能研究较为新的分支,它的发展过程大体上可分为4个阶段。

第一阶段是在20世纪50—60年代,属于热烈时期。

第二阶段是在20世纪60—70年代,称为机器学习的冷静时期。

第三阶段是在20世纪70—80年代,称为复兴时期。

第四阶段始于1986年,综合应用心理学、生物学和神经生理学,以及数学、自动化和计算机科学形成机器学习理论基础,同时结[4],[5]合各种学习方法的优势与劣势,形成多种形式的集成学习系统。

随着计算机硬件技术、互联网技术的发展,机器学习具有了计算硬件支持及数据支持,其自20世纪90年代开始,取得了突飞猛进的发展。尤其自2010年以来,Google、Microsoft等国际IT巨头纷纷加快了对机器学习的研究,且取得了较好的商业应用价值,国内众多公司也纷纷效仿,如阿里巴巴、百度、奇虎公司等。目前,机器学习技术已经取得了一些举世瞩目的成就,如AlphaGo击败世界围棋冠军,特斯拉Autopilot将血栓病人送到医院,微软人工智能的语言理解能力超过人类,等等,这些都标志着机器学习技术正在逐步进入成熟应用阶段。近些年会一直持续出现机器学习工程师短缺现象,这正是机器学习普及的黄金时代,对于软件工程师而言应紧抓时代需求,实现自身技术价值。1.1.3 机器学习的用途

机器学习作为工科技术,在学习之前读者必须了解机器学习这一技术工具能够解决什么问题,能够应用于哪些相关行业,以及现有的成功的技术应用有哪些等,从而激发学习热情。机器学习是一种通用性的数据处理技术,其包含大量的学习算法,且不同的算法在不同的行业及应用中能够表现出不同的性能和优势。目前,机器学习已经成功应用于以下领域。

金融领域:检测信用卡欺诈、证券市场分析等。

互联网领域:自然语言处理、语音识别、语言翻译、搜索引擎、广告推广、邮件的反垃圾过滤系统等。

医学领域:医学诊断等。

自动化及机器人领域:无人驾驶、图像处理、信号处理等。

生物领域:人体基因序列分析、蛋白质结构预测、DNA序列测序等。

游戏领域:游戏战略规划等。

新闻领域:新闻推荐系统等。

刑侦领域:潜在犯罪预测等。

……

综上,可以认为机器学习正在成为各行各业都会经常使用到的分析工具,尤其随着各领域数据量的不断增加,各企业都希望通过数据分析的手段,得到数据中有价值的信息,从而指引企业的发展和明确客户需求等。1.1.4 机器学习、数据挖掘及人工智能的关系

依据笔者的学习经验,对于机器学习的初学者,不免在阅读各类书籍和网络资料时,常常对机器学习、数据挖掘及人工智能三者之间的关系混淆,甚至部分初学者将三者认为是同一概念。本小节将详细分析三者间的交叉点与区别,以便读者在日后的学习过程中具有清晰的脉络。

机器学习起源于1946年,是一门涉及自学习算法发展的科学,这类算法本质上是通用的,可以应用到众多相关问题的领域。

数据挖掘起源于1980年,是一类实用的应用算法(大多是机器学习算法),利用各个领域产出的数据来解决各个领域相关的问题。

人工智能起源于1940年,目的在于开发一个能模拟人类在某种环境下作出反应和行为的系统或软件。由于这个领域极其广泛,人工智能将其目标定义为多个子目标,然后每个子目标就都发展成了一个[2]独立的研究分支。主要子目标列举如下:

• 推理(Reasoning);

• 知识表示(Knowledge Representation);

• 自动规划(Automated Planning and Scheduling);

• 机器学习(Machine Learning);

• 自然语言处理(Natural Language Processing);

• 计算机视觉(Computer Vision);

• 机器人学(Robotics);

• 通用智能或强人工智能(General Intelligence or Strong AI)。

依据上述总结,笔者认为,对于机器学习、数据挖掘及人工智能三者间的关系如图1.2所示。机器学习是最为通用的方法,包含在人工智能和数据挖掘内,另外,人工智能强调的内容较为丰富,包含大量的技术领域,而数据挖掘则是结合机器学习技术及数据库管理技术[6]。图1.2 机器学习、数据挖掘及人工智能三者间的关系1.2 机器学习基本术语

学习任何学科初期,都需要对其基本术语进行掌握,以利于对后续学习内容的理解。本节将参照国内著名学者周志华教授所著的《机[7]器学习》一书中关于西瓜的实例对机器学习的各基本术语进行具体化,以利于读者对概念的理解。

假设通过记录的方式得到关于西瓜的数据表格,如表1.1所示。表1.1 西瓜数据

数据集/样本集:记录这组数据的集合,也就是整个表格的数据。

实例/样本:记录一个事件/对象的描述,如表格中的任意一行。(样本)属性/特征:反映事件或对象在某方面的表现或性质的事项,如表格中的“色泽”“根蒂”“敲声”等。(样本)属性值/特征值:属性/特征所取的值,如表格中的“青绿”“乌黑”“清脆”“浊响”等。

属性空间/样本空间/输入空间:属性张成的空间,如把“色泽”“根蒂”“敲声”作为3个坐标轴,则它们张成一个用于描述西瓜的三维空间,每个西瓜都在这个空间中有其坐标位置。

特征向量:在前面所述的属性空间/样本空间/输入空间中,每个点都对应一个坐标向量,这个向量称为特征向量。

维数:对于表中某一行数据,利用“色泽”“根蒂”“敲声”3个属性进行取值记录,可认为该样本的维数为3。

学习/训练:从数据模型中学习的过程。

训练数据:训练过程中使用的数据。

训练样本:训练过程中的每一个样本。

标签/标记:用于表示样本的结果信息,如表中的“成熟/未成熟”。

样例:指既包含样本属性值,又包含标签的样本。注意与样本的区别,样本包括训练样本和测试样本,样本不一定具有标签。

标记空间/输出空间:所有标记结果的集合。

预测:根据已有的众多样例,判断某一样本的输出结果。

分类:当结果预测值为离散值时,如表中“成熟”“未成熟”,此类任务称为分类。尤其是只涉及两个类别时,称为“二分类”。通常,其中一个称为“正类”,另一个称为“反类”。涉及多个类别时,称为“多分类”。

回归:当结果预测值为连续值时,如预测西瓜的成熟度,此类任务称为回归。

测试:通过学习得到模型后,使用样本进行检测的过程。

测试样本:用于进行检测的样本。

新样本:没有用于模型训练的样本都可认为是对该模型的新样本。

泛化:指训练的模型不仅适用于训练样本,同时适用于新样本。

聚类:将训练集中的西瓜分成若干组,每一个组称为“簇”。例如,通过学习,其自动形成的簇可能对应一些潜在概念的划分,如“浅色瓜”“深色瓜”等。这样的学习过程有助于了解数据内在的规律。值得注意的是,在聚类学习中“浅色瓜”“深色瓜”这些概念事先是不知道的,是学习过程中得到的,并且使用的训练样本不拥有标记信息。

监督学习:学习任务为分类和回归问题,且样本具有标记信息。

无/非监督学习:学习任务为聚类问题,且样本不具有标记信息。1.3 机器学习任务及算法分类

1.2节已经介绍过“分类”“回归”及“聚类”的概念,对于机器学习的任务而言,其主要就是指这三方面任务,以及策略型任务。对于用于解决“分类”“回归”任务的机器学习称为“监督学习”;对于用于解决“聚类”任务的机器学习称为“无/非监督学习”;对于用于[7],[8]解决策略型任务的机器学习称为“强化学习”。

依据上述机器学习算法分类,表1.2中列举了各类机器学习算法中所包含的典型的算法。表1.2 机器学习算法分类

值得注意的是,随着机器学习技术的发展,越来越多的算法被研究者创造,依靠经典算法衍生出的算法更是数量繁多,受笔者自身经历及水平所限,在此不能全部一一举例,感兴趣的读者可深入探索。另外,算法的分类不是绝对的,随着经典算法的衍生,其分类出现大量的交叉。例如,神经网络算法衍生出的众多深度学习算法中,卷积神经网络(Convolutional Neural Network, CNN)是监督学习,而稀疏编码算法(Sparse Coding)是无监督学习。

在企业数据应用的场景下,人们最常用的就是监督学习模型和无/非监督学习模型。无监督学习是大数据时代科学家们用来处理数据挖掘的主要工具。当然,用得最多的是用无监督学习算法训练参数,然后用一部分加了标签的数据测试。这种方法称为半监督学习。在图像识别等领域,由于存在大量的非标识数据和少量的可标识数据,目前,半监督学习是一个很热的话题。而强化学习更多地应用在机器人控制及其他需要进行系统控制的领域。1.4 如何学习和运用机器学习

前面已介绍了机器学习的概念、发展历史、基本术语及算法分类等,相信有兴趣的读者已经很想了解如何学习机器学习这一技术,并希望快速地实现各算法的应用。另外,可能有部分读者在面对众多的机器学习算法时会产生畏惧情绪,不知如何下手,也不知何时才能掌握这么多算法。对此,作者依据自身的经验,提出两条:首先,了解算法基本实现流程,并通过任意软件平台(算法是核心,算法实现的平台只是实现手段)实现某一算法,所有的算法都是触类旁通的;其次,各有所专,不要渴望掌握所有的算法,并了解其全部的优点和缺点,机器学习本身是一种通用性的算法,研究者需要的是背靠实际的应用选择合适的算法,并总结经验和不断探索。

本节将介绍如何选择算法的软件平台,以及机器学习算法应用的实现流程。本书第四部分将具体介绍算法的理论与应用,选择其中的任意小节进行学习,即可实现相应机器学习算法,从而对机器学习算法的实现有一定的感性认识。1.4.1 软件平台的选择“不要重复造轮子”(Stop Trying to Reinvent the Wheel),可能是每个程序员入行被告知的第一条准则。同样,实现机器学习算法也非常适合这一准则。对于机器学习而言,其涉及大量的数学计算,如矩阵计算、微积分等。研究者不能在算法实现的时候,将大量的精力用于实现数学计算方面,而是应该选择合适的计算平台,在平台上实现[8]算法计算。目前常用的计算软件如下。1.MATLAB

MATLAB是一种用于数值计算、可视化及编程的高级语言和交互式环境。使用MATLAB可以分析数据、开发算法、创建模型和应用程序,通过矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言等方式完成计算,比电子表格和传统编程语言(如C/C++、Java)更加方便快捷。MATLAB具有强大的竖直计算功能,可完成矩阵分析、线性代数、多元函数分析、数值微积分、方程求解等常见数值计算,同时也能够进行符号计算。另外,特别需要注意的是,MATLAB提供了大量的工具箱和算法的调用接口函数,便于用户使用。2.GNU Octave

GNU Octave与MATLAB相似,它是由以John W.Eaton为首的一些志愿者共同开发的一个自由再发布软件。这种语言与MATLAB兼容,主要用于数值计算,同时它还提供了一个方便的命令行方式,可以数值求解线性和非线性问题,以及做一些数值模拟。3.Mathematica

Mathematica系统是美国Wolfram研究公司开发的一个功能强大的计算机数学系统。它提供了范围广泛的数学计算功能,支持在各个领域工作的人们做科学研究的过程中的各种计算。这个系统是一个集成化的计算软件系统,它的主要功能包括演算、数值计算和图形3个方面,可以帮助人们解决各领域中比较复杂的符号计算和数值计算的理论和实际问题。4.Maple

1980年9月,加拿大滑铁卢大学的符号计算研究小组研制出一种计算机代数系统,命名为Maple。如今Maple已演变成为优秀的数学软件,它具有良好的使用环境、强有力的符号计算能力、高精度的数学计算、灵活的图形化显示和高效的编程功能。5.SPSS

SPSS是IBM公司的产品,它提供了统计分析、数据和文本挖掘、预测模型和决策化优化等功能。IBM宣称,使用SPSS可获得五大优势:商业智能,利用简单的分析功能,控制数据爆炸,满足组织灵活部署商业智能的需求,提升用户期望值;绩效管理,指导管理战略,使其朝着最能盈利的方向发展,并提供及时准确的数据、场景建模、浅显易懂的报告等;预测分析,通过发现细微的模式关联,开发和部署预测模型,以优化决策制定;分析决策管理,一线业务员工可利用该系统与每位客户沟通,从中获得丰富信息,提高业绩;风险管理,在合理的前提下,利用智能的风险管理程序和技术,制定规避风险的决策。6.R

R语言主要用于统计分析、绘图和操作环境。R语言是基于S语言开发的一个GNU项目,语法来自Scheme,所以也可以当作S语言的一种实现。虽然R语言主要用于统计分析或开发统计相关的软件,但也可以用作矩阵计算,其分析速度堪比GNU Octave甚至MATLAB。R语言主要是以命令行操作,网上也有几种图形用户界面可供下载。7.Python

Python是一种面向对象的、动态的程序设计语言。它具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合完成各种高层任务。随着NumPy、SciPy、Matplotlib等众多程序库的开发,Python越来越适合用于科学计算。NumPy是一个基础科学的计算包,包括一个强大的N维数组对象,封装了C++和Fortran代码的工具、线性代数、傅里叶变换和随机数生成函数等复杂功能的计算包。SciPy是一个开源的数学、科学和工程计算包,能够完成最优化、线性代数、积分、插值、特殊函数快速傅里叶变换、信号处理、图像处理等计算。Matplotlib是Python比较著名的绘图库,十分适合交叉式绘图,它也可以方便地作为绘图控件嵌入GUI应用程序中。

另外,对于接触过机器学习算法的读者,可能了解Caffe、Torch、Caffe2go、Tensorflow、Theano等相关软件平台,它们大多是适用于某一种或某一类机器学习算法的平台,其平台内一般集成适合某一算法的框架,这些平台不在本书探讨范围内。

机器学习的核心是算法,因此选择以上任意数据计算平台都可以,但是考虑到用户量、通用性、易学性及便捷性,本书中将选择MATLAB作为实现平台。本书的定位主要为机器学习的初学者,利用MATLAB能够实现初学者的快速入门。对于未来,读者需要具体实现机器学习算法应用时,则需要选择与应用相符的软件平台进行开发。在这里,作者推荐读者在机器学习入门后,使用Python进行进一步学习,主要原因是Python有众多的第三方安装包,且Python具有跨平台的特点。1.4.2 机器学习应用实现流程

使用机器学习进行应用程序开发时,通常遵循以下步骤。1.收集数据

研究者可以使用多种方法收集样本数据,如制作网络爬虫从网站上抽取数据、从RSS反馈或API中得到信息、设备发送过来的测试数据等。2.准备输入数据

得到数据后,需要对数据进行录入,并对数据进行一定的预处理,之后保存成符合要求的数据格式,以便进行数据文件的使用。3.分析输入数据

这步主要是人工分析前面得到的数据,以保证前两步的有效。最简单的方法是通过打开数据文件进行查看,确定数据中是否存在垃圾数据等。此外,还可以通过图形化的方式对数据进行显示。4.训练算法

运用机器学习算法调用第2步生成的数据文件进行自学习,从而生成学习机模型。对于无/非监督学习,由于不存在目标变量值,因此不需要训练算法模型,其与算法相关的内容在第5步中。5.测试算法

为了评估算法,必须测试算法的工作效果。对于监督学习,需要使用第4步训练算法得到的学习机,且需要已知用户评估算法的目标变量值;对于无/非监督学习,可用其他的评测手段来检验算法的效果。如果对算法的输出结果不满意,则可以回到第4步,进行进一步的算法改进和测试。当问题与数据收集准备相关时,则需要回到第1步。6.使用算法

将机器学习算法转换为应用程序,执行实际任务,以检验算法在实际工作中是否能够正常工作。1.5 数据预处理

在一个实际的机器学习系统中,一般数据预处理部分占整个系统设计中工作量的一半以上。用于机器学习算法的数据需要具有很好的一致性及高的数据质量,但是在数据采集过程中,由于各种因素的影响及对属性相关性并不了解,因此采集的数据不能直接应用。直接收集的数据具有以下两个特点。(1)收集的数据是杂乱的,数据内容常出现不一致和不完整问题,且常存在错误数据或者异常数据。(2)收集的数据由于数据量大,数据的品质不统一,需要提取高品质数据,以便利用高品质数据得到高品质的结果。

对于数据的预处理过程,大致可分为五步:数据选取、数据清理、数据集成、数据变换、数据规约。这些数据预处理方法需要根据项目[9]需求和原始数据特点,单独使用或者综合使用。1.5.1 数据初步选取

数据初步选取是面向应用时进行数据处理的第一步,从服务器等设备得到大量的源数据时,由于并不是所有的数据都对机器学习有意义,并且往往会出现重复数据,此时需要对数据进行选取,基本原则如下。(1)选择能够赋予属性名和属性值明确含义的属性数据。(2)避免选取重复数据。(3)合理选择与学习内容关联性高的属性数据。1.5.2 数据清理

数据清理是数据预处理中最为花费时间和精力,却极为乏味的一步,但是也是最重要的一步。这一步可以有效减少机器学习过程中出现自相矛盾的现象。数据清理主要处理缺失数据、噪声数据、识别和删除孤立点等。1.缺失数据处理

目前最常用的方法是对缺失值进行填充,依靠现有的数据信息推测缺失值,尽量使填充的数值接近于遗漏的实际值,相应的方法如回归、贝叶斯等。另外,也可以利用全局常量、属性平均值填充缺失值,或者将源数据进行属性分类,然后用同一类中样本属性的平均值填充等。在数据量充足的情况下,可以忽略缺失值的样本数据。2.噪声数据处理

噪声是指测量值由于错误或偏差,导致其严重偏离期望值,形成了孤立点值。目前,最广泛的是利用平滑技术处理,其具体包括分箱技术、回归方法、聚类技术。通过计算机检测出噪声点后,可将数据点作为垃圾数据删除,或者通过拟合平滑技术进行修改。1.5.3 数据集成

数据集成就是将多个数据源中的数据合并在一起形成数据仓库/数据库的技术和过程。数据集成中需要解决数据中的3个主要问题。(1)多个数据集匹配。当一个数据库的属性与另一个数据库的属性匹配时,必须注意数据的结构,以便于二者匹配。(2)数据冗余。两个数据集有两个命名不同但实际数据相同的属性,那么其中一个属性就是冗余的。(3)数据冲突。由于表示、比例、编码等的不同,现实世界中的同一实体,在不同数据源中的属性值可能不同,从而产生数据歧义。1.5.4 数据变换1.数据标准化

数据标准化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响数据分析的结果。为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是3种常用的归一化方法。(1)min-max标准化(Min-Max Normalization)。该方法也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0,1]区间。转换函数如式(1.1):式中,max为样本某一属性数据的最大值;min为样本某一属性数据的最小值。这种方法有个缺陷,就是当有新数据加入时,可能导致max和min变化,需要重新定义。(2)Z-score标准化方法。该方法将原始数据的均值(mean)和标准差(standard deviation)进行数据标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1。Z-score标准化方法适用于样本属性的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。转换函数如式(1.2):式中,μ为样本某一属性数据的均值;σ为样本数据的标准差。(3)小数定标标准化。该方法是通过移动数据的小数点位置来进行标准化,小数点移动多少位取决于属性取值的最大值。其计算公式如式(1.3):式中,j为属性值中绝对值最大的数据的位数。例如,假设最大值为1345,则j=4。2.数据白化处理

进行完数据的标准化后,白化通常会被用来作为接下来的数据预处理步骤。实践证明,很多算法的性能提高都要依赖于数据的白化。白化的主要目的是降低输入数据的冗余性,一方面减少特征之间的相关性,另一方面使不同维度特征方差相近或相同。通常情况下,对数据进行白化处理与不对数据进行白化处理相比,算法的收敛性会有较大的提高。

白化处理分为PCA(Principal Component Analysis,主成分分析)白化和ZCA (Zeromean Component Analysis,零均值成分分析)白化。PCA白化保证数据各维度的方差为1,而ZCA白化保证数据各维度的方差相同。PCA白化可以用于降维,也可以去相关性,而ZCA白化主要用于去相关性,且尽量使白化后的数据接近原始输入数据。两类方法都具有各自适用的数据场景,但相对而言,在机器学习中PCA白化方法应用更多。1.5.5 数据归约

数据归约通常用维归约、数值归约方法实现。维归约指通过减少属性的方式压缩数据量,通过移除不相关的属性,可以提高模型效率。常见的维归约方法有:通过分类树、随机森林判断不同属性特征对分类效果的影响,从而进行筛选;通过小波变换、主成分分析把原数据变换或投影到较小的空间,从而实现降维。参考文献[1] Langley P. Elements of Machine Learning[M]. San Mateo, CA:

Morgan Kaufmann Publishers, 1996.[2] Mitchell T. Machine Learning[J]. New York MacGraw-Hill

Companies, Inc., 1997.[3] Alpaydin E. Introduction to Machine Learning(Adaptive

Computation and Machine Learning Series)[M]. Cambridge: MIT

Press, 2004.[4] 陆汝钤.人工智能(上册、下册)[M].北京:科学出版社,1996.[5] http://baike. baidu. com/item/%E6%9C%BA

%E5%99%A8%E5%AD%A6%E4%B9%A0?sefr=enterbtn.[6] http://blog. csdn. net/jdbc/article/details/44602147.[7] 周志华.机器学习[M].北京:清华大学出版社,2016.[8] 麦好.机器学习实践指南:案例应用解析[M].北京:机械工业出版

社,2014.[9] Schutt R, O'Neil C. Doing Data Science: Straight Talk From the

Frontline[M]. O'Reilly Media, Inc., 2013.第二部分MATLAB机器学习基础篇

对于有一定编程基础,但未系统学习MATLAB的读者,甚至没有编程基础的读者,可认真阅读本部分内容,其中,详细地介绍了在本书中将使用到的MATLAB的相关知识。

同时,本部分将介绍MATLAB机器学习工具箱,该工具箱能够用于统计和机器学习,其通过图形化界面使使用者能够更加方便地使用机器学习进行数据分析。本书第3章将围绕该工具箱的功能、使用过程进行介绍,并通过实例的方式带领读者了解该工具箱的使用过程。第2章MATLAB基础入门源码

MATLAB是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出及面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(m文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的[1],[2]重要原因。

MATLAB语言之所以如此受人推崇是因为它有如下这些优点:编程简单使用方便;函数库可任意扩充;语言简单,内涵丰富;简便的绘图功能;丰富的工具箱。

本章将对MATLAB的基础知识进行介绍,使MATLAB初学者能够快速掌握MATLAB的基本应用,掌握了本章内容,读者将能够完全读懂和应用后续的机器学习算法。本章内容包括MATLAB界面介绍、矩阵赋值与运算、m文件及函数实现与调用、基本绘图、数据文件导入与导出等。2.1 MATLAB界面介绍

对于MATLAB的安装,网络上有大量的教程资源,读者可根据需求进行安装相应版本。本书采用MATLAB 2016a版本,安装后,双击MATLAB图标,打开MATLAB界面,如图2.1所示。从图2.1中可知,MATLAB界面主要分为4个区域,分别为“工具栏区”“工作路径区”“工作区”和“命令行窗口区”。

初始界面的“工具栏区”包含三部分:“主页”“绘图”和“应用程序”。“主页”中的各工具用于对代码的各类操作;“绘图”中的各工具则用于MATLAB绘制图片时的各类操作;“应用程序”与早期MATLAB版本中的Simulink相似,提供面向各类应用的工具箱,便于用户进行调用和使用。图2.1 MATLAB界面“工作路径区”展示当前MATLAB运行的文件位置,作为MATLAB此时运行的默认位置。对于后续用户编辑的m文件,必须将MATLAB工作路径转到m文件的路径下才能运行,否则MATLAB检测当前路径下无需要运行的m文件,从而导致运行失败,该错误是MATLAB初学者极易犯的错误。“命令行窗口区”是指用户可直接进行编程及命令运行的区域,用户每完成一行书写后,MATLAB将运行一行。当用户需要完成多行代码再进行运行时,则需要将代码写入到m文件中,进行一次性运行。“工作区”用于展示用户在命令行窗口区运行命令后各变量结果的展示。2.2 矩阵赋值与运算

下面通过实例的方式,介绍MATLAB如何实现矩阵赋值与运算,本节代码都是通过MATLAB命令行窗口输入,在输入时,有一个标志性前导符“>>”,相应程序写在前导符之后,按Enter键即可执行。【例2.1】 将矩阵[1,2;3,4]赋值给矩阵a,将a矩阵中的每个元素加1,赋值到矩阵b,将矩阵a的第1行第2列元素置为0,将矩阵a的第2列元素全置为0,求矩阵b转置、逆、秩。

输出结果为:

输出结果为:

输出结果为:

输出结果为:

输出结果为:

输出结果为:

输出结果为:【例2.2】 矩阵a=[1,2;3,4],矩阵b=[5,6;7,8],实现两矩阵加、减、乘、点乘。

输出结果为:

输出结果为:

输出结果为:

输出结果为:2.3 m文件及函数实现与调用

m文件是MATLAB进行编程时的基本文件,不同于在命令行窗口中一行一行代码的编写和运行,m文件是指将代码完全编写在一个文件中,之后通过运行,一次性完成程序的运行。另外,m文件可实现对函数的定义,在编程中直接调用该函数,可实现相应功能。通过单击“工具栏区”最左侧的“新建脚本”按钮,如图2.2所示,即可打开一个新建的m文件,也可按Ctrl+N组合键打开新建的m文件。此时,即可在该文件下编写MATLAB程序,如图2.3所示。在文件编写完成后,需要保存及运行。图2.2 新建m文件图2.3 m文件编辑页面

函数文件是一种特殊的m文件,其特殊之处在于其第一行有严格的规定,格式为:function[a, b, …]=fun(d, e, …)。其中,d, e, …为函数的输入参数,a, b, …为函数的输出参数,fun为函数名。另外,需要注意的是,此时的m文件的文件名必须为函数名,如本实例中的fun。【例2.3】 新建m文件,名称为Three_ass_add,在文件中实现对3个字符赋值(分别赋值为2、3、4),以及实现3个字符相加,其中,3个字符相加通过定义函数Three_add实现。

Three_ass_add.m文件代码为:

Three_add.m文件代码为:

运行Three_ass_add.m文件,得到输出结果为:2.4 基本流程控制语句

了解计算机编程语言的读者一定知道,编程的基本流程控制语句主要有4种,分别是if语句、for语句、while语句和switch语句。下面分别用实例进行讲解如何在MATLAB中使用这四类语句。【例2.4】 矩阵a=[1,2,3;4,5,6;7,8,9],如果矩阵a中元素为5或为6时,将元素置为0。要求分别通过for、if语句实现,while、if语句实现,for、switch语句实现。

通过for、if语句实现的For_if.m文件程序:

通过while、if语句实现的While_if.m文件程序:

通过for、switch语句实现的For_switch.m文件程序:

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载