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


如何使用

1、《西瓜书》是一本教科书。
 
  《西瓜书》的诞生,其主因在于周志华老师要开设“机器学习”课。而作为一本教科书,《西瓜书》不是无所不包的,也不是一本“从入门到精通”的书籍。
 
2、《西瓜书》是一本入门级的教科书。
 
  周老师认为,入门阶段最需要的乃是理清基本概念、了解领域风貌。在入门阶段,“顾及细微”应该让位于“观其大略”。否则难免只见树木,不见森林。故而,从一定程度上讲,《西瓜书》是一张”机器学习的初级地形图“。
  其次,机器学习领域中存在众多学派。周老师认为,理解学派间的包容等价,在进阶之后对融会贯通大有裨益。但在入门阶段,初学者看到各自的本来面貌更为重要。因此,《西瓜书》尽可能从材料的”原生态“出发讲述。
 
3、《西瓜书》是一本面向理工科高年级本科生和研究生的教科书。
 
  “对前沿领域的学习,必然要有基础知识作为先导”。读者若仅需对机器学习做一般了解,只需略过细节观其大概;若想深入,则应当对相关知识稍作复习,自行推导。
 
4、《西瓜书》不妨多读几遍。

	**这是本经典,经典之书!!!**

一、绪论

1.1 引言

 
   “傍晚小街路面上沁出微雨后的湿润,和煦的细风吹来,抬头看看天边的晚霞,嗯,明天又是一个好天气。走到水果摊旁,挑了个根蒂蜷缩、敲起来声音浊响的青緑西瓜,一边满心期待着皮薄肉厚瓤甜的爽落感,一边愉快地想着,这学期狠下了工夫,基础概念弄得清清楚楚,算法作业也是信手拈来,这门课的成绩一定差不了!”
 
  机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在这里,“经验”,即“数据”。
 
   机器学习的主要研究内容是关于在计算机上从数据中产生“模型”的算法,即“学习算法”。
 

1.2 基本术语

 
1、一组记录的集合称为一个“数据集”,其中每条记录是关于一个事件或对象的描述,称为一个“示例”或“样本”。
  由于空间中的每个点对应一个坐标向量,因此一个示例也称为一个“特征向量”。
 
2、反映事件或对象在某方面的表现或性质的事项,称为“属性”或“特征”。
  属性上的取值称为“属性值”。
  属性张成的空间称为“属性空间”、“样本空间”或“输入空间”。
 
3、从数据中学得的模型的过程称为“学习”或“训练”。这个过程通过执行某个学习算法来完成。
  训练过程中使用的数据称为“训练数据”,其中每个样本称为一个“训练样本”,训练样本组成的集合称为“训练集”。
  学得模型对应了关于数据的某种潜在的规律,因此亦称为“假设”。这种潜在规律自身,则称为“真相”或“真实”。
  学习的过程就是为了找出或逼近真相。
 
4、关于示例结果的信息称为“标记”,拥有了标记信息的示例称为“样例”。所有标记的集合称为“标记空间”或“输出空间”。
 
5、若欲预测的是离散值,此类学习任务称为“分类”;若欲预测的是连续值,则此类学习任务称为“回归
  对只涉及两个类别的“二分类”任务,通常称其中一个类为“正类”,另一个类为“反类”。涉及多个类别师,则称为“多分类”任务。
  一般地,预测任务是希望通过对训练集{ ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . . . . ( x m , y m ) {(x1,y1),(x2,y2),......(xm,ym)} (x1,y1),(x2,y2),......(xm,ym)}进行学习,建立一个从输入空间X到输出空间Y的映射 f f f : X X X ⟶ \longrightarrow Y Y Y
 
6、学得模型后,使用其进行预测的过程称为“测试”,被预测的样本称为“测试样本”。
 
7、根据训练数据是否拥有标记信息,学习任务可大致划分为两大类:“监督学习”(主要代表:分类和回归)和“无监督学习”(主要代表:聚类)。
 
8、机器学习的目标是使学得的模型能很好地适用于“新样本”,而不是仅仅在训练样本上工作得很好。学得模型适用于新样本的能力,称为“泛化能力”,具有强泛化能力的模型能很好地适用于整个样本空间。

   通常假设样本空间中全体样本服从一个未知“分布” D D D,我们获得的每个样本都是独立地从这个分布上采样获得的,即“独立同分布”。一般而言,训练的样本越多,得到的关于 D D D的信息越多,越有可能通过学习获得具有强泛化能力的模型。

 

1.3 假设空间

 
  归纳和演绎是科学推理的两大基本手段。
 
  前者是从特殊到一般的“泛化”过程,即从具体的事实归结出一般性规律; E x a m p l e Example Example:在数学公理系统中,基于一组公理和推理规则推导出与之相恰的定理,这是“演绎”。
  后者则是从一般到特殊的“特化”过程,即从基础原理推演出具体情况。 E x a m p l e Example Example:“从样例中学习”是一个归纳的过程,因此也称“归纳学习”。
 
  归纳学习分广义和狭义。广义的归纳学习相当于从样例中学习,而狭义的归纳学习为则要求从数据中学得概念,因此也称“概念学习”或“概念形成”。概念学习中最基本的是布尔概念学习,即对“是”“不是”这样的可以表示为0/1布尔值的目标概念的学习。
 
  学习过程可以看作一个在所有假设组成的空间中进行搜索的过程,搜索目标是找到与训练集“匹配”的假设。即能够将训练集中的内容判断正确的假设。
 
  需要注意的是,现实问题中我们常面临很大的假设空间,但学习过程是基于有限样本训练集进行的,因此,可能有多个假设与训练集一致,即存在着一个与训练集一致的假设集合,称之为“版本空间”。

 

1.4 归纳偏好

 
  对于一个具体的学习算法而言,它必须要产生一个模型。这时,学习算法本身的“偏好”就会起到关键的作用。
  机器学习算法在学习过程中对某种类型假设的偏好,称为“归纳偏好”。或简称为“偏好”。
  任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上“等效”的假设所迷惑,而无法产生确定的学习效果。
  归纳偏好可看作学习算法自身在一个可能很庞大的假设空间中对假设进行选择的“价值观”。“奥卡姆剃刀”原则作为一般性的原则来引导算法确立“正确的”偏好,即“若有多个假设与观察一致,则选最简单的那个”。
  事实上,归纳偏好对应了学习算法本身所做出的关于“什么样的模型更好”的假设。在具体的现实问题中,这个假设是否成立,即算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。
  根据相关公式推导可证明:无论学习算法 A A A多聪明、学习算法 B B B多笨拙。它们的期望性能是相同的!这就是“没有免费的午餐”定理,简称NFL定理。
  NFL定理有一个重要的前提:所有“问题”出现的机会相同、或所有问题同等重要。但事实上很多时候我们只关注自己正在试图解决的问题,希望为它找到一个解决方案,至于这个解决方案在别的问题、甚至在相似问题上是否为好方案,我们并不关心。
  所以,NFL定理最重要的寓意是让我们更清楚地认识到:脱离具体问题,空泛地谈论“什么学习算法更好”毫无意义,因为若考虑所有潜在的问题,则所有学习算法都一样好。要谈论算法的相对优劣,必须要针对具体的学习问题;在某些问题上表现更好的学习算法,在另一些问题上却可能不仅如人意,学习算法自身的归纳偏好与问题是否相匹配,往往会起到决定性作用。
 

1.5 发展历程

 
  1、推理期:基于逻辑和事实规则,出现了几何定理证明器、语言翻译等;
  2、知识期:意识到只是对与人工智能系统的重要性,构建专家知识库,出现专家系统;
  3、学习期:让计算机自动从数据中分析并获取规律,然后进行预测,出现了机器学习,伴随着计算机运算能力的提高,神经网络重新兴起,并促进了深度学习的发展。
 

1.6 应用现状

 
  计算机视觉、自然语言处理、数据分析……
 

共勉

一下摘自百度“飞桨”毕然老师的话:

1、机器学习,其实很简单,没有什么是你理解不了的,关键在于实践!
 
2、细节不可忽略,一忽略就误入歧途!
 
3、一切技术都不高深,就是一层窗户纸,捅破了就很easy,捅不破就很hard。所以,绝对的技术壁垒是没有的。
 
4、一切技术,都是因为你经常用,慢慢就熟练了。坑见多了,就比别人厉害一点了,也就成为了专家;而不是你先成为专家。然后再去用。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

Thomas左右

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

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

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

打赏作者

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

抵扣说明:

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

余额充值