统计学习方法课后习题

本文详细介绍了统计学习方法中的核心算法,包括感知机的训练过程,K近邻算法的实现细节,以及决策树的生成。针对感知机,通过例题展示了训练模型的过程;在K近邻算法部分,讨论了K值选择对模型复杂度和预测准确率的影响,并介绍了kd树在搜索K近邻中的应用;在决策树构建中,利用信息增益比(C4.5算法)和平方误差准则生成了决策树结构。这些内容涵盖了从分类到回归的统计学习基础模型。
摘要由CSDN通过智能技术生成

第2章 感知机

2.1

模仿例题2.1,构建从训练数据求解感知机模型的例子。

例题 2.1 的数据集如下:

x = [3 3; 4 3; 1 1];
y = [1; 1; -1];

感知机的训练过程为:

(1)选取初值w和b
(2)从训练集中选取数据

(xi,yi) ( x i , y i )

(3)如果
yi(wx+b)0 y i ( w ⋅ x + b ) ≤ 0

ww+ηyixi w ← w + η y i x i

bb+ηyi b ← b + η y i

(4)转至(2),直到训练集中没有误分类点

import numpy as np

def hypothesis(w,x,b):
    a = np.dot(w, x.T) + b
    a[a<=0] = -1
    a[a>0] = 1
    return a


def training(x,y,eta):
    sample_count = len(x)
    feature_count = len(x[1])
    w = np.zeros(feature_count)
    b = 0;
    miss = sum(hypothesis(w, x, b) != y)
    i = 0
    while miss > 0:
        xi=x[i,:]
        yi=y[i]
        if ((np.dot(w, xi.T) + b)*yi <= 0):
            w = w + eta * yi * xi
            b = b + eta * yi
            print(w)
            print(b)
            print(hypothesis(w, x, b))
            miss = sum(hypothesis(w, x, b) != y)
            print("miss:", miss)
            print("---------")
        else:
            i = (i + 1) % sample_count
    return w, b


if __name__ == '__main__':
    x = np.array([[3,3],[4,3],[1,1]])
    y=np.array([1,1,-1])
    (w, b) = training(x,y,0.1)
    print(w)
    print(b)

感知机训练结果如下:

if __name__ == '__main__':
    x = np.array([[3,3],[4,3],[1,1]])
    y=np.array([1,1,-1])
    (w, b) = training(x,y,0.1)
    print(w)
    print(b)

结果如下:

[0.1 0.1]
-0.30000000000000004

第三章 K近邻算法

3.1

参照图 3.1,在 二维空间中给出实例点,画出 k 为 1 和 2 时的 K 近邻法构成的空间划分,并对其进行比较,体会 K 值选择与模型复杂度及预测准确率的关系。

3.3

参照算法 3.3,写出输出为 x 的 K 近邻的算法。

在寻找最近邻节点的时候需要维护一个”当前最近点“,而寻找 K 近邻的时候,就需要维护一个”当前 K近邻点集“。首先定义一个”当前 K 近邻点集“插入新点操作:如果”当前 K近邻点集“元素数量小于K,那么直接将新点插入集合;如果”当前 K近邻点集“元素数量等于K,那么将新节点替换原来集合中最远的节点。

  1. 在 kd 树中找出包含目标点 x 的叶结点:从根结点出发,递归地向下访问树。若目标点 x当前维的坐标小于切分点的坐标,则移动到左子结点,否则移动到右子结点,直到子结点为叶结点为止;

  2. 如果”当前 K 近邻点集“元素数量小于K或者叶节点距离小于”当前 K 近邻点集“中最远点距离,那么将叶节点插入”当前 K 近邻点集“;

  3. 递归地向上回退,在每个结点进行以下操作:
    (a) 如果”当前 K 近邻点集“元素数量小于K或者当前节点距离小于”当前 K 近邻点集“中最远点距离,那么将该节点插入”当前 K 近邻点集“,
    (b) 检查另一子结点对应的区域是否与以目标点为球心、以目标点与于”当前 K近邻点集“中最远点间的距离为半径的超球体相交。如果相交,可能在另一个子结点对应的区域内存在距目标点更近的点,移动到另一个子结点 . 接着,递归地进行最近邻搜索;如果不相交,向上回退;

  4. 当回退到根结点时,搜索结束,最后的”当前 K 近邻点集“即为 x 的 K 近邻点集。

第五章

5.1

根据表 5.1 所给的训练数据集,利用信息增益比(C4.5 算法)生成决策树。
数值比字符串更容易处理,所以在学习过程中需要将字符串映射到数值:

特征(编号) 0 1 2
年龄(0) 青年 中年 老年
有工作(1)
有自己的房子(2)
信贷情况(3) 一般 非常好
类别

训练数据集:

x = [[0,0,0,0],
     [0,0,0,1],
     [0,1,0,1],
     [0,1,1,0],
     [0,0,0,0],
     [1,0,0,0],
     [1,0,0,1],
     [1,1,1,1],
     [1,0,1,2],
     [1,0,1,2],
     [2,0,1,2],
     [2,0,1,1],
     [2,1,0,1],
     [2,1,0,2],
     [2,0,0,0]
     ];
y = [0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0];

计算数据集D的经验熵方法为:

H(D)=k=1K|Ck||D|log2|Ck||D| H ( D ) = − ∑ k = 1 K | C k | | D | l o g 2 | C k | | D |

计算特征A对数据集D的经验条件熵H(D|A):

H(D|A)=i=1n|Di||D|H(Di) H ( D | A ) = ∑ i = 1 n | D i | | D | H ( D i )

计算信息增益比:

gR(D,A)=g(D,A)HA(D) g R ( D , A ) = g ( D , A ) H A ( D )

其中
HA(D)=i=1n|Di||D|log2|
csdn李航的《统计学习方法》课程是一门深入浅出的机器学习课程。这门课程围绕着统计学习的基本原理和方法展开,结合了理论与实践,为学习者提供了全面的知识体系。 首先,课程的内容主要涵盖了统计学习的基本概念、模型和算法。通过对统计学习的基本概念的讲解,学习者可以获得对机器学习的整体认识和理解。课程对于各种常见的统计学习模型如线性模型、神经网络、决策树等进行了详细的介绍,并深入剖析了这些模型的原理和应用场景。此外,通过对常见的统计学习算法如最小二乘法、梯度下降法、支持向量机等的讲解,学习者可以了解到如何实现和优化这些模型。 其次,课程提供了大量的实例来帮助学习者加深对知识的理解。课程中会给出典型的统计学习问题,并针对这些问题提供解决方案。这些实例可以帮助学习者更好地掌握课程内容,同时提供了实践机会,让学习者将理论知识应用到实际问题中。 最后,课后还提供了相关的习题和参考答案,学习者可以通过做题来巩固所学知识,同时参考答案可以帮助学习者在做题过程中发现和纠正错误,提高学习效果。 总的来说,csdn李航的《统计学习方法课后是一门内容全面、难度适中的机器学习课程。通过学习这门课程,学习者可以系统地掌握统计学习的基本原理和方法,为日后的机器学习实践打下坚实的基础。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值