周志华《机器学习》读书笔记--第一章 绪论

附上西瓜书解读–南瓜书
南瓜书 Pumpkin-book

写读书笔记之前说说自己的心理感受:关于机器学习其实在研一的时候由于好奇,和同学去旁听计算机专业选修课,当时那个老师上的就是机器学习,印象里偏神经网络多一些。记得当时,每次都在黑板上手推公式,虽然觉得自己考研的时候高数、线代、概率论还算学的可以,但经不住那么多公式。我只知道当时真没听懂,当时那个老师推荐的课本也是这个书。我曾经试着去看,结果看了几页就放弃了,觉得里面的公式晦涩难懂,跟自己之前学的数学一点都不一样,很别扭。但这次看了,而且还看进去了,虽然前后就花了半个月吧,大概看了两遍,程度只能说是,对于里面每个算法的公式大概能知道个一知半解。但如果问自己,特征选择有哪几个方式,每个方式的原理是什么?我只能这么回答:有三种方式,过滤式、包裹式和嵌入式。但关于具体的原理,emmmm… 所以想在这整理一下自己的想法,来提醒一下自己。虽然网上的大神们整理得比我好很多,但还是想自己亲手过一遍,加深自己的理解。同时,想说一句,这种啃自己之前最不敢啃的书的感觉真好…(希望秋招能有好的结果[双手合十]~)
好啦好啦,开始正文吧…
第一章主要是关于一些基础概念的介绍,主要有:

学习算法–在计算机上从数据中产生“模型(model)”的算法;
(模型–从数据中学得的结果(本书),有的文献中 “模型”–全局性结果,“模式”–局部性结果)
示例–关于一个事件或对象的描述,数据集中的每条记录(特征向量);
属性值(特征)–反映事件或对象在某方面表现或性质的事项;
训练数据–训练过程中使用的数据(训练样本、训练集);
假设–学得模型对应了关于数据的某种潜在的规律(真相、真实);
标记–关于示例结果的信息;
样例–拥有标记信息的示例;
连续–回归;离散–分类;
泛化能力–学得模型适用于新样本的能力;
通常假设样本空间的全部样本服从一个未知分布D,获得的每个样本都是独立地从这个分布上采样获得的,即**“独立同分布”**;
版本空间–可能有多个假设与训练集一致,即存在着一个与训练集一致的“假设集合”;
归纳偏好–机器学习算法在学习过程中对某种类型假设的偏好;
奥卡姆剃刀(Occam’s razor)–“若有多个假设与观察一致,则选最简单的那个”;

算法的归纳偏好是否与问题本身匹配,大多数时候直接决定了算法能否取得好的性能。

No Free Lunch Theorem(NFL定理):所有算法的期望性能相同。
前提:所有“问题”出现的机会相同,或所有问题同等重要。
证明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一章的主要内容比较简单,但属于基础内容,尤其基本的符号表示和概念,对后面的基本算法学习都很有用,所以也需要重视~
总的来说,看完全书的感觉就是,范围很广,内容很多,但是深度不够,作为自己的入门教材,嘻嘻嘻!希望自己下一步可以手推公式,或者找几个项目,自己练练,更扎实一点~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本章主要介绍了概率图模型的基本概念和常见类型,以及如何利用Python实现这些模型。下面是一些笔记和代码示例。 ## 概率图模型的基本概念 概率图模型是一种用于表示和处理不确定性的图形化模型,它能够将一个复杂的联合概率分布表示为多个简单的条件概率分布的乘积形式,从而简化概率推理和模型学习的过程。概率图模型主要包括两种类型:有向图模型和无向图模型。 有向图模型(Directed Acyclic Graph, DAG)又称为贝叶斯网络(Bayesian Network, BN),它用有向边表示变量之间的因果关系,每个节点表示一个随机变量,给定父节点的条件下,每个节点的取值都可以用一个条件概率分布来描述。有向图模型可以用贝叶斯公式进行概率推理和参数学习。 无向图模型(Undirected Graphical Model, UGM)又称为马尔可夫随机场(Markov Random Field, MRF),它用无向边表示变量之间的相互作用关系,每个节点表示一个随机变量,给定邻居节点的取值,每个节点的取值都可以用一个势函数(Potential Function)来描述。无向图模型可以用和有向图模型类似的方法进行概率推理和参数学习。 ## 概率图模型的Python实现 在Python中,我们可以使用`pgmpy`库来实现概率图模型。该库提供了一个简单而强大的接口来定义和操作概率图模型,支持有向图模型和无向图模型的构建、概率推理、参数学习等功能。 ### 有向图模型 以下是一个简单的有向图模型的示例: ```python from pgmpy.models import BayesianModel model = BayesianModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`BayesianModel`是有向图模型的类,`('A', 'B')`表示A节点指向B节点,即B节点是A节点的子节点,依此类推。我们可以使用以下代码查看模型的结构: ```python print(model.edges()) # 输出:[('A', 'B'), ('B', 'D'), ('C', 'B')] ``` 接下来,我们可以为每个节点定义条件概率分布。以下是一个简单的例子: ```python from pgmpy.factors.discrete import TabularCPD cpd_a = TabularCPD(variable='A', variable_card=2, values=[[0.2, 0.8]]) cpd_c = TabularCPD(variable='C', variable_card=2, values=[[0.4, 0.6]]) cpd_b = TabularCPD(variable='B', variable_card=2, values=[[0.1, 0.9, 0.3, 0.7], [0.9, 0.1, 0.7, 0.3]], evidence=['A', 'C'], evidence_card=[2, 2]) cpd_d = TabularCPD(variable='D', variable_card=2, values=[[0.9, 0.1], [0.1, 0.9]], evidence=['B'], evidence_card=[2]) model.add_cpds(cpd_a, cpd_c, cpd_b, cpd_d) ``` 其中,`TabularCPD`是条件概率分布的类,`variable`表示当前节点的变量名,`variable_card`表示当前节点的取值个数,`values`表示条件概率分布的值。对于有父节点的节点,需要指定`evidence`和`evidence_card`参数,表示当前节点的父节点和父节点的取值个数。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import VariableElimination infer = VariableElimination(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`VariableElimination`是概率推理的类,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ### 无向图模型 以下是一个简单的无向图模型的示例: ```python from pgmpy.models import MarkovModel model = MarkovModel([('A', 'B'), ('C', 'B'), ('B', 'D')]) ``` 其中,`MarkovModel`是无向图模型的类,与有向图模型类似,`('A', 'B')`表示A节点和B节点之间有相互作用关系。 接下来,我们可以为每个节点定义势函数。以下是一个简单的例子: ```python from pgmpy.factors.discrete import DiscreteFactor phi_a = DiscreteFactor(['A'], [2], [0.2, 0.8]) phi_c = DiscreteFactor(['C'], [2], [0.4, 0.6]) phi_b = DiscreteFactor(['A', 'C', 'B'], [2, 2, 2], [0.1, 0.9, 0.3, 0.7, 0.9, 0.1, 0.7, 0.3]) phi_d = DiscreteFactor(['B', 'D'], [2, 2], [0.9, 0.1, 0.1, 0.9]) model.add_factors(phi_a, phi_c, phi_b, phi_d) ``` 其中,`DiscreteFactor`是势函数的类,与条件概率分布类似,需要指定变量名、变量取值个数和势函数的值。 接下来,我们可以使用以下代码进行概率推理: ```python from pgmpy.inference import BeliefPropagation infer = BeliefPropagation(model) print(infer.query(['D'], evidence={'A': 1})) # 输出:+-----+----------+ # | D | phi(D) | # +=====+==========+ # | D_0 | 0.6000 | # +-----+----------+ # | D_1 | 0.4000 | # +-----+----------+ ``` 其中,`BeliefPropagation`是概率推理的类,与有向图模型类似,`query`方法用于查询给定变量的概率分布,`evidence`参数用于指定给定变量的取值。 ## 总结 本章介绍了概率图模型的基本概念和Python实现,包括有向图模型和无向图模型的构建、条件概率分布和势函数的定义、概率推理等。使用`pgmpy`库可以方便地实现概率图模型,对于概率模型的学习和应用都有很大的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值