《机器学习(周志华)》学习笔记(一)

第一章 机器学习基础

1.1.什么是机器学习?

人工智能标准化白皮书(2018版):
机器学习(Machine Learning)是一门涉及统计学、系统辨识、逼近理论、神经网络、优化理论、计算机科学、脑科学等诸多领域的交叉学科,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,是人工智能技术的核心。
基于数据的机器学习是现代智能技术中的重要方法之一,研究从观测数据(样本)出发寻找规律,利用这些规律对未来数据或无法观测的数据进行预测

Andrew Ng (吴恩达)
Machine Learning is the science of getting computers to act without being explicitly programmed.
机器学习是一门让计算机无需显式编程即可运行的科学。

Microsoft(微软公司)
Machine learning is a technique of data science thathelps computers learn from existing data in order toforecast future behaviors, outcomes, and trends.
机器学习是一种数据科学技术,它帮助计算机从现有数据中学习,从而预测未来的行为、结果和趋势。
在这里插入图片描述

1.2.机器学习的相关术语

1、 样本(sample)、示例(instance):
所研究对象的一个个体,相当于统计学中的实例。
2、 特征(feature)、属性(attribute):
反映事件或对象在某方面的表现或性质的事项,如大小、颜色
3、 属性值(attribute value):
A.属性上的取值,例如“青绿”“乌黑”
B.属性张成的空间称为“属性空间”(attribute space)、“样本空间”(sample space)或“输入空间”
4、 特征空间(feature space):
A.分别以每个特征作为一个坐标轴,所有特征所在坐标轴张成一个用于描述不同样本的空间,称为特征空间。
B.在该空间中,每个具体样本就对应空间的一个点,在这个意义下,也称样本为样本点。
C.每个样本点对应特征空间的一个向量,称为 “特征向量”。
D.特征的数目即为特征空间的维数。
5、 样本集 (sample set)、数据集(data set):
若干样本构成的集合;该集合的每个元素就是一个样本
6、 测试样本”(testing sample):
学得模型后,使用该模型进行预测的过程称为“测试”(testing),被预测的样本称为“测试样本”。
7、 标记(label):
A.有前面的样本数据显然是不够的,要建立这样的关于“预测”(prediction) 的模型,我们需获得训练样本的“结果”信息,例如“((色泽=青绿;根蒂=蜷缩;敲声= =浊响),好瓜)”.这里关于示例结果的信息,例如“好瓜”,称为“标记”(label);
B.拥有了标记信息的示例,则称为“样例”(example).
8、 分类(classification):
若我们欲预测的是离散值,例如“好瓜”“坏瓜”,此类学习任务称为"分类"
9、 回归(regression)
A.若欲预测的是连续值,例如西瓜成熟度0.95、0.37,类学习任务称为“回归”。
B.对只涉及两个类别的称为“二分类’(binary classification)’
10、聚类”(clustering)
A.即将训练集中的样本分成若干组,每组称为一个“簇”(cluster);

根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:“监督学习”(supervised learning) 和“无监督学习”(unsupervised learning),分类和回归是前者的代表,而聚类则是后者的代表。

1.3.机器学习的典型任务

典型任务包括:分类(classification)、回归(regression)、聚类(clustering)、排序(ranking)、密度估计(density estimation)、特征降维(dimensionality reduction)

1.3.1.分类(classification)
1、步骤
A. 基于已知类别标签的样本构成的训练集,学习预测模型;
B. 最终预测模型,对新的观测样本,预测相应的输出;
C. 预测结果为事先指定的两个或多个类别中的某一个,或预测结果来自数目有限的离
散值之一。
2、两类别、多类别
类别数C=2, 两类别分类(binary classification)
类别数C>2, 多类别分类(multiclass classification)
在这里插入图片描述

1.3.2.回归(regression)
回归分析基于已知答案的样本构成的训练集,估计自变量与因变量之间关系的统计过程,进而基于该关系对新的观测产生的输出进行预测,预测输出为连续的实数值
在这里插入图片描述

1.3.3.聚类(clustering)
对给定的数据集进行划分,得到若干“簇”;使得“簇内”样本之间较“簇间”样本之间更为相似。通过聚类得到的可能各簇对应一些潜在的概念结构,聚类是自动为给定的样本赋予标记的过程。
在这里插入图片描述

1.3.4.特征降维(dimensionality reduction)
将初始的数据高维表示转化为关于样本的低维表示,借助由高维输入空间向低维空间的映射,来简化输入。
– 特征提取,如主成分分析(PCA):寻找数据的主轴方向,由主轴构成一个新的坐标系,这里的维数可以比原维数低,然后数据由原坐标系向新坐标系投影,这个投影的过程就是降维的过程。
– 高维数据的低维可视化

1.4.假设与假设空间

(1)假设(hypothesis)、假设空间(hypothesis space):
A. 每一个具体的模型就是一个“假设(hypothesis)”
B. 模型的学习过程就是一个在所有假设构成的假设空间进行搜索的过程,搜索的目标就是找到与训练集“匹配(fit)”的假设。
(2)版本空间(version space)
基于有限规模的训练样本集进行假设的匹配搜索,会存在多个假设与训练集一致的情况,称这些假设组成的集合为“版本空间”

1.5.假设的选择原则

主要准则:“奥克姆剃刀(Occam’s Razor)”准则
(1)如无必要,勿增实体
(2)若多个假设与经验观测一致,则选择最简单的那个
其它原则:“多释原则”:
保留与经验观察一致的所有假设

1.6.机器学习的三要素

机器学习方法由模型、策略、算法构成,可以简单的表示为:方法=模型+策略+算法。
1.6.1.模型
机器学习模型可以分为线性方法和广义线性方法。
在这里插入图片描述
在这里插入图片描述

1.6.2.策略
有了模型的假设空间,机器学习接着需要考虑的是按照什么样的准则学习或选择最优的模型。机器学习的目标在于从假设空间中选取最优模型,而选取最优模型的准则是期望风险最小化。

1.6.3.算法

1.7.思考与例题

1.7.1.例1:
给出西瓜数据集,根据某个西瓜三个属性的描述,判断瓜的好坏
在这里插入图片描述

1、样本空间:
以样本的属性为坐标轴张成的多维空间,也叫属性空间、输入空间。
上例中,每行样本包含三个属性:色泽、根蒂、敲声,则可以以这三个属性为坐标轴,生成一个三维空间,每个西瓜(只要用这三种属性描述)都能在该空间中找到其对应的坐标位置。
2、假设空间:
上例中,假设空间由形如 “(色泽=?) ∧ (根蒂=?) ∧ (敲声=?)” 的所有假设组成。
如果属性色泽、根蒂、敲声分别有3和2两种可能取值,还要考虑到一种属性可能无论取什么值都合适(用通配符表示),另外有一种情况就是好瓜这个概念根本不成立(用∅表示),则假设空间大小为 (2 + 1)×(3 + 1)×(3 + 1)+ 1 = 49 。
假设空间部分如下,
1 色泽=*,根蒂=*,敲声=*
2 色泽=青绿,根蒂=*,敲声=*
3 色泽=乌黑,根蒂=*,敲声=*
4 色泽=*,根蒂=蜷缩,敲声=*
5 色泽=*,根蒂=硬挺,敲声=*

48 色泽=乌黑,根蒂=稍蜷,敲声=*
49 Ø
**学习过程就是,从假设空间不断删除与正例不一致或者与反例一致的假设,最终得到对所有训练样本能进行正确判断的假设,**这样我们最后就可以得到一组形如 “色泽=? ∧ 根蒂=? ∧ 敲声=? ⇔ 好瓜 ” 的概念作为学习结果。
3、版本空间
因为训练样本数量有限,假设空间含有很多假设,最终筛选后有可能剩下多个假设是符合训练样本的,这些剩下的假设组成的集合就称为版本空间。
版本空间(version space)是概念学习中与已知数据集一致的所有假设(hypothesis)的子集
关于版本空间,必须可以从版本空间里面假设可以推出表里面的结论
如果只考虑1, 4两行,那么所有假设空间有49种(3X4X4+1),随便取16种:
1 色泽=*,根蒂=*,敲声=*
2 色泽=青绿,根蒂=*,敲声=*
3 色泽=乌黑,根蒂=*,敲声=*
4 色泽=*,根蒂=蜷缩,敲声=*
5 色泽=*,根蒂=硬挺,敲声=*
6 色泽=*,根蒂=稍蜷,敲声=*
7 色泽=*,根蒂=*,敲声=浊响
8 色泽=*,根蒂=*,敲声=清脆
9 色泽=*,根蒂=*,敲声=沉闷
10 色泽=青绿,根蒂=蜷缩,敲声=*
11 色泽=青绿,根蒂=硬挺,敲声=*
12 色泽=青绿,根蒂=稍蜷,敲声=*
13 色泽=乌黑,根蒂=蜷缩,敲声=*
14 色泽=乌黑,根蒂=硬挺,敲声=*
15 色泽=乌黑,根蒂=稍蜷,敲声=*
16 Ø
编号为1的第一行数据可以删除假设空间中的3、5、6、8、9、11-15,为什么可以删除3呢, 是因为3色泽=乌黑,根蒂=*,敲声=* #无论
如何取值,都无法得到表种第一列的结论
编号为4的数据可以删除剩下假设空间中的1,为什么可以删除1呢,是因为1 色泽=*,根蒂=*,敲声=* #当*分别为 乌黑,稍蜷,沉闷的时候会得出坏瓜,所以这个假设也要删除
其他的同理。
删除之后假设空间还剩下2、4、7、10
2 色泽=青绿,根蒂=*,敲声=*
4 色泽=*,根蒂=蜷缩,敲声=*
7 色泽=*,根蒂=*,敲声=浊响
10 色泽=青绿,根蒂=蜷缩,敲声=*
以上即为版本空间。

参考链接:[https://blog.csdn.net/h12590400327/article/details/79548997]
[https://www.jianshu.com/p/56dbc5b79417]

1.7.2.例2:监督学习与无监督学习

1、监督学习:
**从给定的训练数据集中学习出一个函数(模型参数),当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求包括输入输出,也可以说是特征和目标。训练集中的目标是由人标注的。**监督学习就是最常见的分类(注意和聚类区分)问题,通过已有的训练样本(即已知数据及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优表示某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的。也就具有了对未知数据分类的能力。监督学习的目标往往是让计算机去学习我们已经创建好的分类系统(模型)。

2、无监督学习:
输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。通俗点将就是实际应用中,不少情况下无法预先知道样本的标签,也就是说没有训练样本对应的类别,因而只能从原先没有样本标签的样本集开始学习分类器设计。
非监督学习目标不是告诉计算机怎么做,而是让它(计算机)自己去学习怎样做事情。非监督学习有两种思路。第一种思路是在指导Agent时不为其指定明确分类,而是在成功时,采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是为了产生一个分类系统,而是做出最大回报的决定,这种思路很好的概括了现实世界,agent可以对正确的行为做出激励,而对错误行为做出惩罚。

无监督学习的方法分为两大类:
(1)一类为基于概率密度函数估计的直接方法:指设法找到各类别在特征空间的分布参数,再进行分类。
(2) 另一类是称为基于样本间相似性度量的简洁聚类方法:其原理是设法定出不同类别的核心或初始内核,然后依据样本与核心之间的相似性度量将样本聚集成不同的类别。
利用聚类结果,可以提取数据集中隐藏信息,对未来数据进行分类和预测。应用于数据挖掘,模式识别,图像处理等。
PCA和很多deep learning算法都属于无监督学习。

3、监督学习和无监督学习的异同:
A.有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。
B.有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
C.非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。
这一点是比有监督学习方法的用途要广。
譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于非监督学习方法的范畴。
D.用非监督学习方法分析数据集的主分量与用K-L变换计算数据集的主分量又有区别。后者从方法上讲不是学习方法。因此用K-L变换找主分量不属于无监督学习方法,即方法上不是。而通过学习逐渐找到规律性这体现了学习方法这一点。在人工神经元网络中寻找主分量的方法属于无监督学习方法。

4、图解
在这里插入图片描述

supervised learing:监督学习 unsupervised learing:非监督学习
discrete:离散的 continuous:连续的
classification(or categorization):分类 clustering:聚类
regression:回归
dimensionality reduction:维度下降

A.监督式学习问题可以进一步被分为回归和分类问题
回归(Regression)和分类(Classification)的算法区别在于输出变量的类型,定量输出称为回归,或者说是连续变量预测;定性输出称为分类,或者说是离散变量预测。
回归模型可预测连续值(预测房子的价格)
分类模型可预测离散值(预测垃圾邮件、非垃圾邮件)

B.非监督式学习问题可以进一步分为聚类问题、关联问题、概率分布估计,降维

4、扩展:

A.半监督学习(Semi-supervised Learning):训练阶段结合了大量未标记的数据和少量标签数据。
常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。
  直推学习(Transductive learning):没有标记的数据是测试数据,这个时候可以用test的数据进行训练。这里需要注意,这里只是用了test数据中的feature而没有用label,所以并不是一种欺骗的方法。
  归纳学习(Inductive learning):没有标签的数据不是测试集。
  
B.强化学习(Reinforcement Learning):数据集为(),即没有数据集,需要算法需要尝试还有探索,目标是优化整个探索过程使其得到尽可能高的reward。
agent是从环境中去学习,不是data中,是基于环境的,angent需要从环境中获得大量的信息来学习和采取行动action,目标是学习从环境状态到行为的映射,使得agent选择的行为能够获得环境最大的奖励,reinforcement learning中的奖励来自于环境中的反馈。
在这里插入图片描述

监督学习中,我们是告诉的机器,当听到hello,则说hi;听到byebye,则说good bye.而加固学习是在自行对话然后得到了人的反馈中,自行学习。

C.迁移学习
随着越来越多的机器学习应用场景的出现,而现有表现比较好的监督学习需要大量的标注数据,标注数据是一项枯燥无味且花费巨大的任务,所以迁移学习受到越来越多的关注。Transfer Learning 的定义是:Ability of a system to recognize and apply knowledge and skills learned in previous domains/tasks to novel domains/tasks。将某个领域或任务上学习到的知识或模式应用到不同但相关的领域或问题中为目标。

参考链接:https://blog.csdn.net/u010947534/article/details/82025794
https://blog.csdn.net/jason_cuijiahui/article/details/78144317
https://blog.csdn.net/tanglixin0223/article/details/103372221
https://blog.csdn.net/leilei7407/article/details/102516124

1.7.3.例3:分类和聚类有什么区别?
1、简单地说,分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类。
聚类是指事先没有“标签”而通过某种成团分析找出事物之间存在聚集性原因的过程。
2、区别是,分类是事先定义好类别 ,类别数不变。分类器需要由人工标注的分类训练语料训练得到,属于监督学习范畴。
聚类则没有事先预定的类别,类别数不确定。聚类不需要人工标注和预先训练分类器,类别在聚类过程中自动生成。
3、分类的目的是学会一个分类函数或分类模型(也常常称作分类器 ),该模型能把数据库中的数据项映射到给定类别中的某一个类中。
聚类(clustering)是指根据“物以类聚”原理,将本身没有类别的样本聚集成不同的组,这样的一组数据对象的集合叫做簇,并且对每一个这样的簇进行描述的过程。它的目的是使得属于同一个簇的样本之间应该彼此相似,而不同簇的样本应该足够不相似。
4、在《数据挖掘导论(完整版)》这本书第306页中有这样一句话:聚类可以看做一种分类,它用类标号创建对象的标记,然而只能从数据导出这些标号。相比之下,前面所说的分类是监督分类(supervised classification):即使用有类标号已知的对象开发的模型,对新的、无标记的对象赋予类标号。为此,有时称聚类分析为非监督分类(unsupervised classification)。在数据挖掘中,不附加任何条件使用术语分类时,通常是指监督分类。

参考链接:https://blog.csdn.net/YPP0229/article/details/90814268
          https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/80353640

1.7.4.例4:特征降维的方法
1、关于降维的学习主要分为五类:PCA、LDA、LLE、tSNE、ISOMAP
在这里插入图片描述

2、降维的作用:(为什么会有这些作用?)
(1)降低时间的复杂度和空间复杂度
(2)节省了提取不必要特征的开销
(3)去掉数据集中夹杂的噪音
(4)较简单的模型在小数据集上有更强的鲁棒性
(5)当数据能有较少的特征更好地解释数据,适合我们可以提取知识
(6)实现数据的可视化
3、 降维的目的
用来进行特征选择和特征提取。
①特征选择:选择重要的特征子集,删除其余特征;
②特征提取:由原始特征形成的较少的新特征。
在特征提取中,我们要找到k个新的维度的集合,这些维度是原来k个维度的组合,这个方法可以是监督的,也可以是非监督的,如PCA是非监督的,LDA是监督的。
4、子集选择
对于n个属性,有2n个可能的子集。穷举搜索找出属性的最佳子集可能是不现实的,特别是当n和数据类的数目增加时。通常使用压缩搜索空间的启发式算法,通常这些方法是典型的贪心算法,在搜索属性空间时,总是做看上去是最佳的选择。他们的策略是局部最优选择,期望由此导致全局最优解。在实践中,这种贪心方法是有效的,并可以逼近最优解。
5、降维的本质:
学习一个映射函数f:x到y。(x是原始数据点的表达,目前最多的是用向量来表示,Y是数据点映射后的低维向量表达。)f可能是:显示的、隐式的、线性的、非线性的。
6、主成分分析PCA(principal Component Analysis)
在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。
①将原始数据中的每一个样本都用向量表示,把所有样本组合起来构成样本矩阵,通常对样本矩阵进行中心化处理,得到中心化样本矩阵。
②求中心化后的样本矩阵的协方差;
③求协方差矩阵的特征值和特征向量;
④将求出的特征值按从大到小的顺序排列,并将其对应的特征向量按照此顺序组合成一个映射矩阵,根据指定的PCA保留的特征个数取出映射矩阵的前n行或者前n列作为最终的映射矩阵;
⑤用映射矩阵对数据进行映射,达到数据降维的目的。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴听到你正在学习机器学习》这本经典的教材,下面我为你提供第十四章概率图模型的Python实现学习笔记。 ## 1. 朴素贝叶斯分类器 ### 1.1 数据准备 在本章中,我们将使用著名的鸢尾花数据集进行分类。首先,我们可以从sklearn库中导入该数据集。 ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target ``` ### 1.2 朴素贝叶斯分类器实现 接下来,我们可以使用sklearn库中的朴素贝叶斯分类器进行分类,具体实现如下: ```python from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) gnb = GaussianNB() gnb.fit(X_train, y_train) y_pred = gnb.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` ### 1.3 结果分析 运行上述代码后,我们可以得到该模型在测试集上的准确率,结果如下所示: ``` Accuracy: 1.0 ``` 可以看出,该模型在鸢尾花数据集上表现出色,准确率达到了100%。 ## 2. 隐马尔可夫模型 ### 2.1 数据准备 在本节中,我们将使用一个简单的例子来介绍隐马尔可夫模型的实现。假设我们有一个长度为100的序列,每个位置上的值都是0或1,其中0和1出现的概率分别为0.6和0.4。我们可以使用numpy库生成这个序列。 ```python import numpy as np np.random.seed(42) sequence = np.random.choice([0, 1], size=100, p=[0.6, 0.4]) ``` ### 2.2 隐马尔可夫模型实现 接下来,我们可以使用hmmlearn库中的隐马尔可夫模型进行序列建模,具体实现如下: ```python from hmmlearn import hmm model = hmm.MultinomialHMM(n_components=2) model.fit(sequence.reshape(-1, 1)) logprob, states = model.decode(sequence.reshape(-1, 1)) print('Sequence:', sequence) print('States:', states) ``` ### 2.3 结果分析 运行上述代码后,我们可以得到该模型对序列的建模结果,结果如下所示: ``` Sequence: [0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] States: [1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] ``` 可以看出,模型对序列进行了建模,并输出了每个位置上的状态,其中0表示“假”,1表示“真”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值