周志华《机器学习》课后习题解析(第一章)绪论

周志华老师的《机器学习》(西瓜书)一书,没有公布答案,于是我们从网上搜集了各题目的答案,供大家参考。

参考答案 第一章 绪论

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

表1.1 西瓜数据集(精简)

编号色泽根蒂敲声好瓜
1青绿蜷缩浊响
2乌黑稍蜷沉闷

本题解答:CSDN博主「四去六进一」

原文链接:https://blog.csdn.net/icefire_tyh/java/article/details/52065224

答:

假设空间指的是问题所有假设组成的空间,我们可以把学习过程看作是在假设空间中搜索的过程,搜索目标是寻找与训练集“匹配”的假设。

假设数据集有 种属性,第 个属性可能的取值有 种,加上该属性的泛化取值 ,所以可能的假设有 。再用空集表示没有正例,假设空间中一共 种假设。现实问题中常面临很大的假设空间,我们可以寻找一个与训练集一致的假设集合,称之为版本空间。版本空间从假设空间剔除了与正例不一致和与反例一致的假设,它可以看成是对正例的最大泛化。版本空间的可以通过搜索假设空间来得到,这样需要遍历完整的假设空间。如果数据集中有正例,则可以先对一个正例进行最大泛化,得到 个假设,然后再对这些假设进行剔除操作,可以适当精简计算量。数据集有3个属性,每个属性2种取值,一共 种假设,分别为

  • 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.空集Ø
    编号1的数据可以删除(不包含数据 )
    编号1的数据可以删除 (包含了数据 )
    所以版本空间为:

  • 1.色泽=青绿 根蒂=蜷缩 敲声=浊响

  • 9.色泽=青绿 根蒂=蜷缩 敲声=*

  • 13.色泽=青绿 根蒂=* 敲声=浊响

  • 17.色泽=* 根蒂=蜷缩 敲声=浊响

  • 21.色泽=青绿 根蒂=* 敲声=*

  • 23.色泽=* 根蒂=蜷缩 敲声=*

  • 25.色泽=* 根蒂=* 敲声=浊响

    一般情况下版本空间是正例的泛化,但由于数据集中只有1个正例,所以在版本空间中依然包含了这个样本的假设(假设1)。


1.2.与使用单个合取式来进行假设表示相比,使用“析合范式”将使得假设空间具有更强的表示能力。例如:

会把“(色泽=青绿)^(根蒂=蜷缩)^(敲声=清脆”以及“(色泽=乌黑)^(根蒂=硬挺)^(敲声=沉闷)”都分类为“好瓜”,若使用最多包含k个合取式的析合范式来表达1.1的西瓜分类问题的假设空间,试估算有多少种可能的假设。

本题解答:CSDN博主「weixin_41587767」

原文链接:https://blog.csdn.net/weixin_41587767/java/article/details/86290695

答:

表1.1包含4个样例,3种属性,假设空间中有3∗4∗4+1=493∗4∗4+1=49种假设。最多包含k个合取式来表达假设空间,显然k的最大值是49。

不考虑空集的话,剩下48种可能:

全部不泛化 2∗3∗3=182∗3∗3=18种假设

一个属性泛化:2∗3+3∗3+2∗3=212∗3+3∗3+2∗3=21种假设

两个属性泛化:2+3+3=82+3+3=8种假设

三属性泛化:1种假设

用这48种假设的排列组合来组成析合范式,展开序列为(也就是杨辉三角的一排):

1, 48, 1128, 17296,...... 17296, 1128, 48, 1 共49个数, 左边的1代表‘空’,一个都不选,右边的1代表全部选。

如果k=48,就是说最多采用48种合取式来组成析合范式,排除一种都不选的情况,就是2^48 - 1种。(2^48是根据二项式定理得的)

如果0<k<48,那就把展开序列的前k+1(因为展开序列从0开始数)项全部加起来再减1

如果指定了k的个数,那就是展开序列的第k+1(因为展开序列从0开始数)项的数

但是,这个结果得去重才行,因为泛化是对若干种假设的包含(包容),它本身不是某种假设。把泛化的 * 展开后,

就是若干种具体的假设。如果此题采取48,那么把 * 展开后,假设集合中一定有重复,而且一种具体假设还不止重复一次。

此题应该采用18种具体假设来计算, 就是:2^18 - 1

以下python代码没有考虑全部为空的情况(-1),且没有考虑去重。

# -*- coding: utf-8 -*-

def strige(max):#杨辉三角
    S = [1]
    while max: 
        N = S[:]
        N.append(0)
        S = [N[i-1]+N[i] for i in range(len(N))]
        max -= 1
    return S 

def cal_Permutations(total_num =0,select_num= 0,most_num = 0):
    re_total_num = 0
    re_select_num = 0
    re_most_num = 0
    if total_num == 0:
        raise ValueError,'pls indicate total numbers'
        return

    if select_num>total_num or most_num>total_num:
        raise ValueError,'select_num or most_num can not bigger than total_num'
        return

    s = strige(total_num)

    for x in s:
        re_total_num += x

    re_select_num = s[select_num]

    for y in range(0,most_num+1):
        re_most_num += s[y]

    return {'input_parameter':{'total_num':total_num,'most_num':most_num,'select_num':select_num},'output_permutations':s,'output_usual_count':{'total_num':re_total_num,'most_num':re_most_num,'select_num':re_select_num}}

result = cal_Permutations(48,40,48)
print (result)

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

本题解答:CSDN博主「四去六进一」

原文链接:https://blog.csdn.net/icefire_tyh/java/article/details/52065224

答:

通常认为两个数据的属性越相近,则更倾向于将他们分为同一类。若相同属性出现了两种不同的分类,则认为它属于与他最临近几个数据的属性。也可以考虑同时去掉所有具有相同属性而不同分类的数据,留下的数据就是没误差的数据,但是可能会丢失部分信息。


4.本章1.4节在论述“没有免费的午餐”定理时,默认使用了“分类错误率”作为性能度量来对分类器进行评估。若换用其他性能度量 ,则式(1.1)将改为:

,

试证明没有免费的午餐”定理仍成立。

本题解答:CSDN博主「四去六进一」

原文链接:https://blog.csdn.net/icefire_tyh/java/article/details/52065224

答:

还是考虑二分类问题,NFL首先要保证真是目标函数 均匀分布,对于有 个样本的二分类问题,显然f共有 种情况。其中一半是与假设一致的,也就
此时, ,应该是个常数,隐含的条件就该是(一个比较合理的充分条件) 。如果不满足, NFL 应该就不成立了(或者不那么容易证明)。


5.试述机器学习在互联网搜索的哪些环节起什么作用。

本题解答:CSDN博主「四去六进一」

原文链接:https://blog.csdn.net/icefire_tyh/java/article/details/52065224

答:

1.最常见的,消息推送,比如某东经常说某些商品我可能会感兴趣,然而并没有。

2.网站相关度排行,通过点击量,网页内容进行综合分析。

3.图片搜索,现在大部分还是通过标签来搜索,不过基于像素的搜索也总会有的吧。

往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑AI基础下载(pdf更新到25集)机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/yFQV7am本站qq群1003271085,加入微信群请扫码喜欢文章,点个在看
1. 什么是泛化能力?泛化能力和过拟合之间有什么关系? 泛化能力是指模型在新的、未见过的数据上的表现能力。模型的泛化能力与其对训练数据的拟合程度有关,通常来说,过拟合的模型泛化能力较差。 2. 什么是交叉验证?交叉验证的作用是什么? 交叉验证是一种通过将数据集分成若干个子集来进行模型评估的方法。具体地,将数据集分成k个子集,每个子集都轮流作为测试集,其余子集作为训练集,重复k次,最终得到k个模型的评估结果的平均值。交叉验证的作用是提高模型评估的可靠性和泛化能力。 3. 留出法、k折交叉验证和留一法的区别是什么?它们各自适用于什么情况? 留出法是将数据集分成两部分,一部分作为训练集,另一部分作为测试集。留出法适用于数据集较大的情况。 k折交叉验证是将数据集分成k个子集,每个子集都轮流作为测试集,其余子集作为训练集,重复k次,最终得到k个模型的评估结果的平均值。k折交叉验证适用于数据集较小的情况。 留一法是k折交叉验证的一种特殊情况,即将数据集分成n个子集,每个子集都作为测试集,其余子集作为训练集,重复n次。留一法适用于数据集较小且样本数较少的情况。 4. 为什么要对数据进行预处理?数据预处理的方法有哪些? 数据预处理可以提高模型的表现,并且可以减少过拟合的风险。数据预处理的方法包括:标准化、归一化、缺失值填充、特征选择、特征降维等。 5. 什么是特征选择?特征选择的方法有哪些? 特征选择是指从所有特征中选择出对模型预测结果有重要贡献的特征。特征选择的方法包括:过滤式方法、包裹式方法和嵌入式方法。其中,过滤式方法是基于特征间的关系进行特征选择,包裹式方法是基于模型的性能进行特征选择,嵌入式方法是将特征选择嵌入到模型训练中。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值