统计学习方法(二)

首先:李航——统计学习方法课后答案

感知机

notebook 实现

属于比较简单的二分类模型,其思想是:错误驱动、梯度下降。且解不唯一(只要能满足样本点正确分类就视为成功),与初始状态和优化过程有关。其由输入空间到输出空间的函数如下:

f ( x ) = s i g n ( w T x + b ) f(x) = sign(w^Tx + b) f(x)=sign(wTx+b)

因此,对于给定的训练数据集: T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) T = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)} T=(x1,y1),(x2,y2),...,(xN,yN),其中 x i ∈ X = R N x_i \in \mathbb{X} = R^N xiX=RN y i ∈ Y = { + 1 , − 1 } y_i \in \mathbb{Y} = \{+1, -1\} yiY={+1,1} i = 1 , 2 , 3 , . . . N i=1, 2, 3, ... N i=1,2,3,...N,则其任务的损失函数如下:

L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) L(w, b) = -\sum_{x_i \in M} y_i (wx_i + b) L(w,b)=xiMyi(wxi+b)

显然该目标损失函数为非负的,因为当错分类时( y i ( w x i + b ) < 0 y_i(wx_i+b) < 0 yi(wxi+b)<0),正确分类时(=0)。而且,误分类点越少时,误分类点距离超平面也越近,损失函数值越小。一个特定样本点的损失函数:

  • 在误分类时是参数 w , b w, b w,b 的线性函数;
  • 当正确分类时是0

因此,对于给定的数据集 T T T,损失函数 L ( w , b ) L(w,b) L(w,b) 是关于 w , b w, b w,b 的连续可导函数。

在得到了任务的损失函数后,我们的任务目标就是最小化损失函数,即:

m i n L w , b ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) minL_{w, b}(w, b) = - \sum_{x_i \in M} y_i(wx_i+b) minLw,b(w,b)=xiMyi(wxi+b)

其中 M M M误分类 点的集合。最小化方法采用 梯度下降法 L L L 关于 w , b w, b w,b 的梯度为:

Δ w L ( w , b ) = − ∑ x i ∈ M y i x i Δ b L ( w , b ) = − ∑ x i ∈ M y i \Delta_w L(w, b) = - \sum_{x_i \in M} y_i x_i\\ \Delta_b L(w, b) = - \sum_{x_i \in M} y_i ΔwL(w,b)=xiMyixiΔbL(w,b)=xiMyi

其伪代码实现如下:

epochs = 50
eta = 1e-2
w = 0.01
# 梯度下降
for _ in range(epochs):
    error_sum = 0
    np.random.shuffle(x_y)
    for index in range(0, n_samples):
        x_i = x_y[index, :-1]
        y_i = x_y[index, -1:]
        # 更新错分点的参数
        if (x_i.dot(w) * y_i)[0] < 0:
            dw = (-x_i * y_i).reshape(-1, 1)
            w = w - eta * dw
            error_sum += 1
    if error_sum == 0:
        break

K近邻算法(KNN)

K近邻算法是将数据划分为不同的 单元(cell),当:

  1. 训练集
  2. 距离度量(如:欧氏距离,曼哈顿距离等)
  3. K 值(常用小k值)
  4. 决策规则(如:多数表决(常用)、最近表决等)

确定之后,任何一个新的输入实例,其所属单元(类别)也将唯一确定。

距离度量

L p ( x i , x j ) = ( ∑ l = 1 N ∣ x i ( l ) − x j ( l ) ∣ p ) 1 p L_p(x_i, x_j) = (\sum_{l=1}^N|x_i^{(l)} - x_j^{(l)}|^p)^{\frac{1}{p}} Lp(xi,xj)=(l=1Nxi(l)xj(l)p)p1

  • p = 1 p=1 p=1 时,为曼哈顿距离
  • p = 2 p=2 p=2 时,为欧氏距离。

k 值的选择

较小的 k k k 值:

  • 优点:
    • 学习的近似误差减小,只有与输入实例较近的(相似的)训练实例才对预测起作用。
      -缺点:
    • 学习的估计误差增大,预测结果对近邻的实例点将非常敏感
    • k k k 值的减小意味着,模型将变得复杂,容易发生过拟合。

较大的 k k k 值:

  • 优点:
    • 学习的估计误差减小。
      -缺点:
    • 学习的近似误差增大。因为这时与输入实例较远的(不相似的)训练实例也将对预测起作用。
    • k k k 值的增大意味着,模型将变得简单。

分类决策规则

KNN 中往往采用多数表决。

优化方式

对输入的实例 x x x,其最近邻的 k k k 个训练样本组成集合 N k ( x ) N_k(x) Nk(x)。如果涵盖 N k ( x ) N_k(x) Nk(x) 的区域的类别是 c j c_j cj,那么误分类率是:

1 k ∑ x i ∈ N k ( x ) I ( y i ≠ c j ) = 1 − 1 k ∑ x i ∈ N k ( x ) I ( y i = c j ) \frac{1}{k} \sum_{x_i \in N_k(x)}I(y_i \ne c_j) = 1-\frac{1}{k} \sum_{x_i \in N_k(x)}I(y_i = c_j) k1xiNk(x)I(yi=cj)=1k1xiNk(x)I(yi=cj)

要使误分类率最小,就要使 ∑ x i ∈ N k ( x ) I ( y i = c j ) \sum_{x_i \in N_k(x)}I(y_i = c_j) xiNk(x)I(yi=cj) 最大,所以多数表决规则等价于经验风险(Loss)的最小化。

例: 输入 x x x 2 2 2 类, k = 50 k=50 k=50 N k ( x ) N_k(x) Nk(x) 中有 42 42 42 2 2 2 类,则误分类的率是:

1 − 42 50 1 - \frac{42}{50} 15042

kd-Tree

待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值