周志华《机器学习》第一章 绪论 笔记及习题解答

基本术语

假设空间

  训练集中的全部特征的可能取值所形成的假设,加上 ∅ \emptyset (指根本不存在“正例”这个概念) 这种极端假设,所形成的集合叫做假设空间。

版本空间

  在假设空间中删除与正例不一致的假设、和(或)与反例一致的假设,最终将会获得一个能够对所有训练集样本正确分类的一个假设集合,这个集合叫做版本空间。

数据集(训练集)

表1.1 西瓜数据集
编号 色泽 根蒂 敲声 好瓜
1 青绿 蜷缩 浊响
2 乌黑 蜷缩 浊响
3 青绿 硬挺 清脆
4 乌黑 稍蜷 沉闷

习题解答

1.1 表1.1中若只包含编号为1和4两个样例,试给出相应的版本空间.

  1. 若只包含1和4,则训练集如下:
编号 色泽 根蒂 敲声 好瓜
1 青绿 蜷缩 浊响
4 乌黑 稍蜷 沉闷
  1. 因为版本空间是假设空间经过删除与正例不一致的假设、和(或)与反例一致的假设所形成的,所以要得到假设空间:
    色泽、根蒂、敲声 分别有2、2、2种可能取值,有可能每个特征的特征值无论取什么值都合适,此外再加上 ∅ \emptyset 情况,所以假设空间规模大小为(2+1) × \times ×(2+1) × \times ×(2+1)+1 = 28,如下:

    假设1 色泽=\*,根蒂=\*,敲声=\*
    假设2 色泽=\*,根蒂=\*,敲声=浊响
    假设3 色泽=\*,根蒂=\*,敲声=沉闷
    假设4 色泽=\*,根蒂=蜷缩,敲声=\*
    假设5 色泽=\*,根蒂=蜷缩,敲声=浊响
    假设6 色泽=\*,根蒂=蜷缩,敲声=沉闷
    假设7 色泽=\*,根蒂=稍蜷,敲声=\*
    假设8 色泽=\*,根蒂=稍蜷,敲声=浊响
    假设9 色泽=\*,根蒂=稍蜷,敲声=沉闷
    假设10 色泽=青绿,根蒂=\*,敲声=\*
    假设11 色泽=青绿,根蒂=\*,敲声=浊响
    假设12 色泽=青绿,根蒂=\*,敲声=沉闷
    假设13 色泽=青绿,根蒂=蜷缩,敲声=\*
    假设14 色泽=青绿,根蒂=蜷缩,敲声=浊响
    假设15 色泽=青绿,根蒂=蜷缩,敲声=沉闷
    假设16 色泽=青绿,根蒂=稍蜷,敲声=\*
    假设17 色泽=青绿,根蒂=稍蜷,敲声=浊响
    假设18 色泽=青绿,根蒂=稍蜷,敲声=沉闷
    假设19 色泽=乌黑,根蒂=\*,敲声=\*
    假设20 色泽=乌黑,根蒂=\*,敲声=浊响
    假设21 色泽=乌黑,根蒂=\*,敲声=沉闷
    假设22 色泽=乌黑,根蒂=蜷缩,敲声=\*
    假设23 色泽=乌黑,根蒂=蜷缩,敲声=浊响
    假设24 色泽=乌黑,根蒂=蜷缩,敲声=沉闷
    假设25 色泽=乌黑,根蒂=稍蜷,敲声=\*
    假设26 色泽=乌黑,根蒂=稍蜷,敲声=浊响
    假设27 色泽=乌黑,根蒂=稍蜷,敲声=沉闷
    假设28  ∅ \emptyset

  1. 版本空间
    删除与编号1(正例)相反的假设:3、6-9、12、15、16-28
    删除与编号4(反例)相同的假设:1
    版本空间为剩余假设:2、4、5、10、11、13、14 七种
    用合取式表示为:
    (色泽=*) ^ (根蒂=*) ^ (敲声=浊响)
    (色泽=*) ^ (根蒂=蜷缩) ^ (敲声=*)
    (色泽=*) ^ (根蒂=蜷缩) ^ (敲声=浊响)
    (色泽=青绿) ^ (根蒂=*) ^ (敲声=*)
    (色泽=青绿) ^ (根蒂=*) ^ (敲声=浊响)
    (色泽=青绿) ^ (根蒂=蜷缩) ^ (敲声=*)
    (色泽=青绿) ^ (根蒂=蜷缩) ^ (敲声=浊响)

1.2 与使用单个合取式来进行假设表示相比,使用“析合范式”将使得假设空间具有更强的表示能力。若使用最多包含k个合取式的析合范式来表达表1.1的西瓜分类问题的假设空间,试估算有多少种可能的假设。

  • 不考虑冗余
    表1.1共3个特征,假设空间中有3∗4∗4+1=49种假设。k的最大值是49,每次从中选出k个来组成析合式,即 Σ \Sigma Σ C 49 k C_{49}^{k} C49k k最大为49,根据二项式定理得249种假设
  • 考虑冗余
    //todo

1.3 若数据包含噪声,则假设空间中可能不存在与所有训练样本都一致的假设。在此情形下,试设计一种归纳偏好用于假设选择。

  • 去掉噪声数据
  • 将噪声值变为特征值最多的值

1.4 试证明"没有免费的午餐"

西瓜书P8说到,一个学习算法 ξ a \xi_a ξa若在某些问题上比算法 ξ b \xi_b ξb好,则必然另存在一些问题算法 ξ b \xi_b ξb比算法 ξ a \xi_a ξa要好,这个结论对任何算法都成立。

以下公式含义:算法 ξ a \xi_a ξa学得的假设在训练集外的所有样本上的误差的期望
E o t e ( ξ a ∣ X , f ) E_{ote}\left (\xi_a|X,f\right) Eote(ξaX,f) = ∑ h \sum_h h ∑ x ∈ χ − X \sum_{x\in \chi-X} xχX P P P( x x x) I I ( II( II( h h h( x x x) ≠ \neq ̸= f ( x ) ) f(x)) f(x)) P P

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴为您解答这个问题!本次我们将学习如何用 Python 实现《机器学习周志华教授第十四章中的概率图模型习题。在这里,我们将使用 Python 的 pgmpy 库来构建和分析概率图模型。 首先,我们需要安装 pgmpy。可以使用 pip 安装: ```python pip install pgmpy ``` 安装完成后,我们就可以开始实现习题了。 #### 习题 14.1 考虑一个三元组 $(X, Y, Z)$,其中 $X$ 是二元随机变量,$Y, Z$ 是一元随机变量,试构造一个无向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个无向图模型。代码如下: ```python from pgmpy.models import MarkovModel # 创建一个空的无向图模型 model = MarkovModel() # 添加变量节点 model.add_nodes_from(['X', 'Y', 'Z']) # 添加边 model.add_edges_from([('X', 'Y'), ('X', 'Z')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y', 'Z'], mean, covariance) # 将因子添加到模型中 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码中,我们首先创建了一个空的无向图模型,然后添加了三个变量节点 $X, Y, Z$ 和两条边 $(X, Y), (X, Z)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型中。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型中的所有因子。 #### 习题 14.2 考虑一个四元组 $(X_1, X_2, X_3, X_4)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image.png](attachment:image.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X3', 'X2'), ('X4', 'X2')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了四个变量节点 $X_1, X_2, X_3, X_4$ 和四条边 $(X_2, X_1), (X_3, X_1), (X_3, X_2), (X_4, X_2)$。最后,我们打印出了模型的边结构。 #### 习题 14.3 考虑一个五元组 $(X_1, X_2, X_3, X_4, X_5)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-2.png](attachment:image-2.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X2'), ('X5', 'X3')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了五个变量节点 $X_1, X_2, X_3, X_4, X_5$ 和五条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_2), (X_5, X_3)$。最后,我们打印出了模型的边结构。 #### 习题 14.4 考虑一个六元组 $(X_1, X_2, X_3, X_4, X_5, X_6)$,它们之间的关系如下图所示。试构造这个有向图结构的贝叶斯网模型。 ![image-3.png](attachment:image-3.png) 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X1', 'X2', 'X3', 'X4', 'X5', 'X6']) # 添加边 model.add_edges_from([('X2', 'X1'), ('X3', 'X1'), ('X4', 'X2'), ('X5', 'X3'), ('X6', 'X4'), ('X6', 'X5')]) # 打印模型结构 print(model.edges()) ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了六个变量节点 $X_1, X_2, X_3, X_4, X_5, X_6$ 和六条边 $(X_2, X_1), (X_3, X_1), (X_4, X_2), (X_5, X_3), (X_6, X_4), (X_6, X_5)$。最后,我们打印出了模型的边结构。 #### 习题 14.5 考虑一个二元组 $(X, Y)$,其中 $X$ 是一元随机变量,$Y$ 是二元随机变量,试构造一个有向图结构,使其成为正态分布的一个合法图模型。 我们可以使用 pgmpy 来创建这个有向图模型。代码如下: ```python from pgmpy.models import BayesianModel # 创建一个空的有向图模型 model = BayesianModel() # 添加变量节点 model.add_nodes_from(['X', 'Y1', 'Y2']) # 添加边 model.add_edges_from([('X', 'Y1'), ('X', 'Y2')]) # 将模型转换成正态分布模型 from pgmpy.factors.continuous import ContinuousFactor from pgmpy.inference import Inference # 定义正态分布的 mean 和 covariance mean = [0, 0, 0] covariance = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] # 创建正态分布因子 factor = ContinuousFactor(['X', 'Y1', 'Y2'], mean, covariance) # 将因子添加到模型中 model.add_factors(factor) # 执行因子分解 inference = Inference(model) factors = inference.factors() ``` 在上面的代码中,我们首先创建了一个空的有向图模型,然后添加了三个变量节点 $X, Y_1, Y_2$ 和两条边 $(X, Y_1), (X, Y_2)$。接着,我们使用 `pgmpy.factors.continuous.ContinuousFactor` 来定义正态分布的 mean 和 covariance,并将其添加到模型中。最后,我们使用 `pgmpy.inference.Inference` 来执行因子分解,得到了模型中的所有因子。 以上就是本次的答案,希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值