You are on page 1of 8

清华大学《模式识别与机器学习》

(30250293)2020 年春季课程作业

第六章(近邻法、决策树、集成学习与非线性回归方法)作业

【提醒:建于同学们对 python 编程已经逐渐熟悉,从第七章作业开始,编程题


需要和其他题目一样,在一周时间内完成,不再设置单独的作业提交窗口】
【2021.3.23→2021.3.29】
6.1 下表是由 15 个样本组成的贷款申请数据集,数据包括贷款申请人的年龄、
收入情况、是否有车、信用情况四项属性,最后一列为是否同意贷款,作为
我们的预测结果:

序号 年龄 是否有车 收入情况 信用情况 是否同意贷款


1 19 否 一般 非常好 否
2 31 是 一般 一般 否
3 75 否 一般 一般 否
4 21 否 一般 好 否
5 36 否 一般 一般 否
6 40 否 一般 好 否
7 69 是 一般 好 是
8 45 是 良好 好 是
9 52 是 一般 非常好 是
10 66 是 一般 非常好 是
11 25 否 良好 好 是
12 42 是 一般 非常好 是
13 59 否 良好 好 是
14 63 否 良好 非常好 是
15 29 是 良好 一般 是

(1) 假如我们按照小于 30 岁、30 到 60 岁、60 岁以上将申请人的年龄分为三


组,请利用 ID3 算法建立决策树,写出决策树的建立过程并画出最终的
决策树结构。
(2) 将(1)中的 ID3 算法换为 C4.5 算法重新建树(年龄依然按照(1)分为
三组),写出决策树的建立过程并画出最终的决策树结构。
(3) 将(1)中的熵不纯度换为 Gini 不纯度重新建树,写出决策树的建立过
程并画出最终的决策树结构。

6.2 在课堂上我们已经了解到,Bagging 方法可以减小模型的误差,我们现在从


理论上来证明这一点。以回归问题为例,首先我们采用 bootstrap 的方法在
原始数据集上抽样生成𝑀个子数据集,并在这𝑀个子数据集上分别训练预测
模型𝑦𝑚 , 𝑚 = 1, … , 𝑀。对于任意样本𝐱,Bagging 方法的预测结果定义为多个
预测模型输出的平均值:
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

𝑀
1
𝑦𝐶𝑂𝑀 (𝐱) = ∑ 𝑦𝑚 (𝐱) (1)
𝑀
𝑚=1

设样本𝐱的真实回归值为 d(𝐱),则每个预测模型的误差为:
𝜖𝑚 (𝐱) = 𝑦𝑚 (𝐱) − 𝑑(𝐱) (2)
对于𝑀个独立的预测模型,它们的平均均方误差可以表示为:
𝑀
1
𝐸𝐴𝑉 = ∑ 𝔼𝐱 {[𝜖𝑚 (𝐱)]2 } (3)
𝑀
𝑚=1

其中𝔼𝐱 表示在样本𝐱的分布上求期望,0 ≤ 𝑦𝑚 (𝐱) ≤ 1。


类似地,Bagging 方法的期望误差为:
𝑀 2 𝑀 2
1 1
𝐸𝐶𝑂𝑀 = 𝔼𝐱 {[ ∑ 𝑦𝑚 (𝐱) − 𝑑(𝐱)] } = 𝔼𝐱 {[ ∑ 𝜖𝑚 (𝐱)] } (4)
𝑀 𝑀
𝑚=1 𝑚=1

(1) 假设所有预测模型的误差是零均值且互不相关的,即:
𝔼𝐱 [𝜖𝑚 (𝐱)] = 0 (5)
𝔼𝐱 [𝜖𝑚 (𝐱)𝜖𝑙 (𝐱)] = 0 𝑚≠𝑙 (6)
试证明:
1
𝐸 𝐸𝐶𝑂𝑀 =
(7)
𝑀 𝐴𝑉
(2) 在实际情况中,各预测模型的误差往往是高度相关的,请证明在(1)
的假设不成立的情况下,下式仍然成立:
𝐸𝐶𝑂𝑀 ≤ 𝐸𝐴𝑉 (8)
至此我们理论证明了 Bagging 方法在减小模型误差上的有效性。
提示:
琴生(Jensen)不等式:对任意下凸函数𝑓(𝑥),有𝔼[𝑓(𝑥)] ≥ 𝑓(𝔼[𝑥])

6.3 在本题中,我们将证明 softmax 回归也是一种广义线性回归模型。考虑响应


变量𝑦是具有𝑘个不同离散状态的随机变量,并且𝑦取不同状态的概率满足:
𝑘

𝑃(𝑦 = 𝑖) = 𝑝𝑖 , 𝑖 = 1, … , 𝑘 ∑ 𝑝𝑖 = 1
𝑖=1
(1) 试写出随机变量𝑦的概率质量函数,并证明它属于指数分布族。
(2) 仿照广义线性回归模型的构造方法,选择合适的𝑢(𝑦),导出预测输出
𝑓(𝑥)的表达式,比较你的结果与 softmax 回归的形式是否一致。
提示:
一种𝑢(𝑦)的定义方式如下:
𝑢(𝑦) ∈ ℝ𝑘−1
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

1 0 0 0
0 1 0 0
𝑢(1) = 0 , 𝑢(2) = 0 , … , 𝑢(𝑘 − 1) = 0 , 𝑢(𝑘) = 0
… … … …
[0] [0] [1] [0]

【2021.3.23→2021.4.5】

6.4 计算机小实验 1:用 KNN 进行人脸识别


在之前的作业中,我们已经用 softmax regression、多层感知器以及 SVM 设
计了人脸分类器,在本题中,请在十分类情况下,继续讨论以下问题:
(1) 探讨不同的 k 值对分类器性能的影响:分别取𝑘 = 1, 3, 5, 7, 9,列出测试
正确率随 k 值的变化,并分析原因。
(2) 探讨不同的距离度量方式对分类器性能的影响:选取你认为最优的 k 值
,分别以欧氏距离、曼哈顿距离、切比雪夫距离、余弦距离作为距离度
量,分析距离度量方式对测试正确率的影响。
(3) 【选做】自行编程实现压缩近邻法,选取你认为最优的 k 值与距离度量
方式,比较压缩之后,KNN 算法在测试正确率、时空复杂度上的变化。

6.5 计算机小实验 2:用 XGBoost 进行人脸识别


请使用 XGBoost 进行 6.4 中同样的人脸识别实验,在十分类情况下,讨论
以下问题:
(1) 探讨分类器数量对 XGBoost 性能的影响:改变 XGBoost 中决策树的数量
,观察并比较训练正确率与测试正确率的变化,说明产生这种现象的原
因。
(2) 探讨树的最大深度对 XGBoost 性能的影响:选取你认为最优的决策树数
量,调整参数限制随机森林中决策树的最大深度,观察测试正确率随决
策树最大深度的变化。
(3) 探讨样本和特征采样对 XGBoost 性能的影响:调整不同的行、列采样率
,观察测试正确率的变化情况。
提示:
Python 下可以直接 pip install xgboost 安装 xgboost 模块,模块的调用方法
请查阅 xgboost 官方文档 https://xgboost.readthedocs.io/en/latest/python/python_api
.html#xgboost.XGBClassifier

第七章(贝叶斯决策理论)作业
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

【2021.3.30→2021.4.5】
1
7.1 我们现有三类样本,已知它们各自的先验概率分别为𝑃(𝜔1 ) = 2 , 𝑃(𝜔2 ) =
1 1
, 𝑃(𝜔3 ) = 4,并且分别服从以下分布:
4
𝑝(𝑥|𝜔1 )~𝑁(0, 1) 𝑝(𝑥|𝜔2 )~𝑁(0.5, 1) 𝑝(𝑥|𝜔3 )~𝑁(1, 1)
从中随机抽取四个样本点,得到点列𝑥 = 0.6, 0.1, 0.9, 1.1。
(1) 计算点列𝑥分别取自于𝜔1 , 𝜔3 , 𝜔3 , 𝜔2的概率。
(2) 计算点列𝑥分别取自于𝜔1 , 𝜔2 , 𝜔3 , 𝜔3的概率。
(3) 找出点列𝑥最可能取自的分布序列。

7.2 在许多模式识别问题中,我们除了将样本归类为预先指定的𝑐个类别之外,
还可以拒绝对样本进行分类,认为样本是不可识别的,记损失函数:
0 𝑖 = 𝑗 𝑖, 𝑗 = 1, … , 𝑐
𝜆(𝛼𝑖 |𝜔𝑗 ) = { 𝜆𝑟 𝑖 =𝑐+1
𝜆𝑠 𝑜𝑡ℎ𝑒𝑟𝑤𝑖𝑠𝑒
这里𝜆𝑟 就表示拒绝样本所带来的损失,𝜆𝑠 则是分类错误时的损失。
试证明最小风险在以下情况取得:如果对∀𝑗, 𝑃(𝜔𝑖 |𝑥) ≥ 𝑃(𝜔𝑗 |𝑥)成立且
𝑃(𝜔𝑖 |𝑥) ≥ 1 − 𝜆𝑟 /𝜆𝑠 ,则将𝑥归类为𝜔𝑖 ,否则拒绝𝑥。讨论当𝜆𝑟 = 0时,会出
现什么情形?𝜆𝑟 > 𝜆𝑠 呢?

7.3 计算机小实验:非参数估计与贝叶斯决策
请生成 500 个样本数据,其中 250 个数据点采样于𝑁(−2.5, 1),记为正样本
;剩余 250 个数据采样于𝑁(2.5, 2),记为负样本。随机取出 70%的数据作为训
练集,30%的数据作为测试集,完成以下问题:
(1) 利用 Parzen 窗的高斯核,使用训练集中的数据对正样本和负样本分别进
行非参数估计。
(2) 利用(1)中非参数估计的概率密度,请使用最小错误率的贝叶斯决策对
测试集样本进行预测,给出测试集的错误率。
(3) 利用(1)中非参数估计的概率密度,请使用最小风险的贝叶斯决策对测
试集样本进行预测,惩罚矩阵如下:
预测值
正样本 负样本
真实值
正样本 0 10

负样本 1 0

(4) 结合你的实验结果,简述最小风险准则与最小错误率准则有什么不同。
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

第八章(概率密度函数估计)作业

【2021.3.30→2021.4.5】
8.1 请阅读《模式识别(第三版)》49 页,完成以下问题。
在贝叶斯估计中,给定有限样本集合𝑿 = {𝑥1 , 𝑥2 , … , 𝑥𝑛 }的情况下,贝叶斯估
计量可以通过最小化期望风险获得,即

𝜃 ∗ = 𝑎𝑟𝑔 𝑚𝑖𝑛 𝑅(𝜃̂|𝑿) = ∫ 𝜆(𝜃̂, 𝜃)𝑝(𝜃|𝑿)𝑑𝜃


̂
𝜃 𝜃
其中,𝜆(𝜃̂ , 𝜃)是定义的损失函数,当损失函数为平方误差损失函数,即
2
𝜆(𝜃̂ , 𝜃) = (𝜃̂ − 𝜃) 时,请证明,在给定样本集𝑿下,𝜃的贝叶斯估计为:

𝜃 ∗ = 𝐸(𝜃|𝑿) = ∫ 𝜃𝑝(𝜃|𝑿)𝑑𝜃
𝜃

8.2 考虑包含𝑛个独立同分布样本点的训练集𝑿 = {𝑥 (1) , 𝑥 (2) , … , 𝑥 (𝑛) }以及对应的


目标值𝒀 = {𝑦 (1) , 𝑦 (2) , … , 𝑦 (𝑛) },我们想用以下模型去拟合它们之间的关系:
𝑦 (𝑖) = 𝑓𝚯 (𝑥 (𝑖) ) + 𝜀 (𝑖)
其中𝚯是模型参数,𝜀是误差项。
(1) 我们可以采用最小二乘法学习最优的模型参数𝚯,即:
𝑛
1 2
min 𝐸(𝚯) = ∑{𝑓Θ (𝑥 (𝑖) ) − 𝑦 (𝑖) }
𝚯 𝑛
𝑖=1
另一方面,我们也可以求解模型参数𝚯的最大似然估计。假设误差项
服从均值为 0,方差为𝜎 2 的正态分布,利用正态分布的性质,有:
𝑝(𝑦 (𝑖) |𝑥 (𝑖) ; 𝚯, 𝜎2 ) = 𝒩(𝑦 (𝑖) |𝑓𝚯 (𝑥 (𝑖) ); 𝜎2 )
据此,我们可以写出似然函数:
𝑛

𝐿(𝚯) = 𝑝(𝒀|𝑿; 𝚯, 𝜎 ) = ∏ 𝒩(𝑦 (𝑖) |𝑓𝚯 (𝑥 (𝑖) ); 𝜎2 )


2

𝑖=1
试证明在此假设下,求解𝚯的最大似然估计与最小二乘法是等价的。
(2) 为了避免过拟合,我们通常在均方误差后加入正则项,再进行最小化
,即:
𝑛
1 2
min 𝐸(𝚯) = ∑{𝑓𝚯 (𝑥 (𝑖) ) − 𝑦 (𝑖) } + 𝜆‖𝚯‖2
𝚯 𝑛
𝑖=1
另一方面,我们认为𝚯服从正态先验:
𝑝(𝚯|𝛼 2 ) = 𝒩(𝚯|0, 𝛼 2 𝑰)
由贝叶斯理论,𝚯的后验分布与先验分布和似然函数的乘积成正比:
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

𝑝(𝚯|𝑿, 𝒀; 𝛼 2 , 𝜎 2 ) ∝ 𝑝(𝒀|𝑿; 𝚯, 𝜎 2 )𝑝(𝚯|𝛼 2 )


试证明在此假设下,求解𝚯的最大后验概率估计等价于加入正则项的
最小二乘法。

8.3 计算机小实验:参数估计
现有样本数据集𝑿 = {𝑥1 , 𝑥2 , … , 𝑥𝑛 },我们假设其来自于正态分布𝑁(𝜇, 𝜎 2 ),
完成以下问题:
(1) 推导参数{𝜇, 𝜎 2 }的最大似然估计。假设方差已知,均值𝜇满足正态先验
𝑁(𝜇0 , 𝜎02 ),写出参数𝜇的贝叶斯估计和最大后验估计。
(2) 请从标准正态分布𝑁(0,1)中分别抽取 10,100,1000 个样本数据作为𝑿,
利用最大似然估计正态分布假设下的模型参数,分别重复三次实验,将
同一抽样量下的三次重复实验估计的概率密度分布曲线绘制在一张图片
内,并与标准正态分布的概率密度分布曲线比较。
(3) 假设𝜇0 = −5,请利用(2)中样本容量为 1000 的样本集𝑿,绘制出当
𝜎02 = 0.01𝜎 2 , 0.1𝜎 2 , 𝜎 2 , 10𝜎 2 时贝叶斯估计的概率密度函数曲线,并与标
准正态分布进行比较。
(4) 改从均匀分布𝑈(0,1)中抽取 100 个样本数据作为𝑿,但正态分布的假设不
变,重复(2)的实验,绘制出估计得到的概率密度分布曲线图,并与均
匀分布𝑈(0,1)的概率密度分布曲线图比较。
(5) 通过上述实验,讨论模型的选择、样本量以及先验分布对参数估计的影
响。

第九章(贝叶斯网络与隐马尔可夫模型)作业

【2021.4.6→2021.4.12】
9.1 图上的条件独立性
(1) 下图所示的每个网络中,以下陈述是否成立?请说明理由。
 𝐴 ⊥ 𝐶|𝐵, 𝐷
 𝐵 ⊥ 𝐷|𝐴, 𝐶
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

(2) 下图所示的贝叶斯网络中,节点 B 与 C 在所给条件下是否 d-分离?请说


明理由。
 所有节点均未被观测
 节点 E 已被观测
 节点 A 和 E 已被观测

9.2 新型冠状病毒肺炎疫情席卷世界,由于其早期症状与普通感冒类似,使其更
加难以被及时发现,如何及早有效地诊治疾病成为了人们迫切关注的问题。
现有一病人去医院看病,医生怀疑有三种疾病可能是导致这些症状的原因。
三种疾病分别是新冠肺炎(𝐷1 )、普通感冒(𝐷2 )、肠胃炎(𝐷3 ),医生通过检查
病人是否存在五种症状来判断其最可能的病因,五种症状分别是发热(𝑆1 )、
呼吸困难(𝑆2 )、干咳(𝑆3 )、腹泻(𝑆4 )、呕吐(𝑆5 )。已知三种疾病都可能引起发
热、仅有新冠肺炎会引起呼吸困难,仅有肠胃炎会引起呕吐,新冠肺炎和普
通感冒都会引起干咳,新冠肺炎和肠胃炎都可能引起腹泻。
(1) 根据以上描述,请画出此问题的贝叶斯网络图。
(2) 试以条件概率乘积的形式表示出整个网络的联合概率分布。
(3) 请问要描述此联合概率分布,需要多少独立的参数?如果所有的条件
独立性都未知,又需要多少独立参数?
(4) 请写出“干咳”(𝑆3 )的马尔可夫覆盖(Markov Blanket)。
(5) 如果医生检查到病人有呕吐症状(𝑆5 = 1),患哪些疾病的概率会发生
变化?
(6) 医生先前已经检查出病人有腹泻症状(𝑆4 = 1),如果又发现病人还有
呕吐症状(𝑆5 = 1),患哪些疾病的概率会发生变化?
提示:
考虑各种疾病之间独立,而非互斥关系

9.3 计算机小实验 1:作弊骰子


一位赌场老板最近发现,一名玩家在掷骰子的游戏中总能取胜,他怀疑这
名玩家在游戏中将公平骰子偷换成了不公平的骰子,于是他用摄像头拍下了每
局游戏骰子的点数,希望请你帮忙分析出这名玩家是否偷换了骰子以及该骰子
出现各点的概率。
(1) 点数信息存于 sequences.npy 文件中,其中每一行是一局游戏,每一列是
一次掷骰子出现的点数,文件中总共包括 200 局游戏,每局游戏各掷骰
子 30 次,请据此建立并训练 HMM 模型,并在报告中给出拟合得到的初
始、转移、发射概率。
清华大学《模式识别与机器学习》
(30250293)2020 年春季课程作业

(2) 根据你建立的模型,分别采用前向算法和后向算法手动计算序列“6、6
、6、6”出现的概率,比较两次计算的结果是否相同。
(3) 假如这名玩家正在游戏中,目前已经观察到本局游戏前 15 次出现的点数
为:3、2、1、3、4、5、6、5、1、4、2、6、6、2、6,请你根据所建立
的模型,推断该玩家是否正在作弊,如果是,是在何时偷换的骰子?
提示:
(1) HMM 模型的建立可以调用 python 中的 hmmlearn 模块,hmmlearn
可直接通过 pip install hmmlearn 安装,具体使用方法请自行搜索,
也可查看源码中的注释文档。
(2) 友情提醒,赌博伤身,本题背景纯属虚构。

9.4 计算机小实验 2:垃圾邮件分类


在本题中,我们将尝试建立朴素贝叶斯分类器对垃圾邮件进行分类。附件
spambase.data 中共包含 4601 封邮件信息,该文件的前 57 列为邮件特征,最后
1 列为分类标签,每一维特征的详细描述见 spambase.names 文件。请从所有样
本中随机抽取 1000 封邮件作为测试集,用余下的样本作为训练集训练朴素贝叶
斯分类器,并完成以下要求:
 给出测试集正确率
 绘制混淆矩阵,计算出 TPR、FPR、TNR、FNR
 绘制 ROC 曲线,计算 AUC

You might also like