【学习笔记】集成学习-基础与算法 第一章(2)

本文是基于《集成学习 基础与算法》的学习笔记。
文章大部分内容来自于网络的各种博客总结,本博文仅仅作为本人学习笔记,不做商业用途。



1.2 常用学习算法

1.2.3 神经网络

在这里插入图片描述
神经网络 (Neural Network), 上图所示的是多层前馈网络 (multi-layer feed-forward network)。输入层接收输入特征向量,输出层输出标记,输入层和输出层之间的层被称为隐层。

最常用的训练思路是梯度下降 (gradient descent) 方法。

误差逆传播算法 (BP) 是最为成功的神经网络训练算法。输入经过输出层、隐层前馈计算到达输出层,在输出层种对网络输出和样本标记进行比较并计算误差;然后,这些误差再经过隐层反向传播回输入层,在传播的过程中算法会调整连接权重和激发阈值以降低误差。整个过程按梯度方向调节各个参数的值,并执行多轮,直到训练误差减小到预定目标范围。

1.2.4 朴素贝叶斯

​为了对测试样例 x \mathbf{x} x 进行分类,学习算法可以通过构建概率模型来估计后验概率 P ( y ∣ x ) P(y|\mathbf{x}) P(yx),并选取具有最大后验概率值的 y y y 作为输出;这就是最大后验概率 (maximum a posteriori, MAP) 准则。基于贝叶斯定理,
P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) \begin{aligned} &P(y|\mathbf{x}) ={P(\mathbf{x}|y)P(y)}\over{P(\mathbf{x})}\\ \end{aligned} P(x)P(yx)=P(xy)P(y)
P ( y ) P(y) P(y) 可以通过计算训练数据集中每个类的比例获得。
P ( x ) P(\mathbf{x}) P(x) 由于是在同一个 x x x 上比较不同 y y y​,可被忽略。
仅需考虑 P ( x ∣ y ) P(\mathbf{x}|y) P(xy) ,为此,需要引入一些假设

朴素贝叶斯分类器 (naive Bayes classifier) 假设给定类别标记, n n n 个特征之间是独立的。因此,
P ( ( x ) ∣ y ) = ∏ i = 1 n P ( x i ∣ y ) \begin{aligned} &P((\mathbf{x})|y) =\prod_{i=1}^nP(x_i|y) \\ \end{aligned} P((x)y)=i=1nP(xiy)这意味着,仅需在每个类内部计算每个特征取值的比例,从而避免了对联合概率的估计。

在训练阶段,朴素贝叶斯分类器对所有类比 y ∈ Y y \in Y yY 估计 P ( y ) P(y) P(y),并对所有特征 x i x_i xi 估计 P ( x i ∣ y ) P (x_i|y) P(xiy)。在测试极端,在所有类别标记中,朴素贝叶斯分类器通过最大化
P ( y ∣ x ) ∝ P ( y ) ∏ i = 1 n P ( x i ∣ y ) \begin{aligned} &P(y|\mathbf{x}) \propto P(y)\prod_{i=1}^nP(x_i|y) \\ \end{aligned} P(yx)P(y)i=1nP(xiy)选择测试样例 x \mathbf{x} x 的类别标记。

1.2.5 k-近邻

k-近邻 (k-NN) 算法的基本假设是输入空间中相似的样本在输出空间中也应该相似。是一个懒惰学习 (lazy learning) 方法。测试时,对测试样例 x x x ,k-近邻算法在训练样本中寻找与测试样本最近的 k 个近邻。对分类任务,测试样例被分类为 k 个近邻样本中的投票最高的类别;对回归任务,测试样例被预测为 k 个近邻样本的标记的均值。
在这里插入图片描述
k = 3时,绿圆被分类为红色三角形;k = 5时,绿圆被分类为蓝色正方形。

1.2.6 支持向量机和核方法

参考 https://zhuanlan.zhihu.com/p/91349895

在这里插入图片描述
假设数据如上图所示,我们希望找到一条位于红聚类和绿聚类之间的直线来分割数据。
在这里插入图片描述
显然右侧的分割线比左侧的好,第二条线在正确分割训练数据的前提下,尽可能地同时远离两个聚类。因而能在测试集上取得更好的概括性。

SVM 试图找到第二条线:

  1. 找到正确分类训练数据的一组直线。
  2. 在找到的所有直线中,选择那条离最接近的数据点距离最远的直线。

距离最接近的数据点称为支持向量 (support vector)。支持向量定义的沿着分隔线的区域称为间隔(margin)。
在这里插入图片描述
尽管上图显示的是直线和二维数据,SVM 实际上适用于任何维度。在更高维度下,SVM 寻找一个超平面(hyperplane)——二维直线和三维平面在任意维度上的推广。

可以被一条直线(更一般的,一个超平面)分割的数据称为线性可分 (linearly separable) 数据。超平面起到线性分类器 (linear classifier) 的作用。
在这里插入图片描述
SVM 允许我们通过参数 C 指定愿意接受多少误差。C 让我们可以指定以下两者的折衷:

  1. 较宽的间隔
  2. 正确分类训练数据。C 值较高,意味着训练数据上容许的误差较少。

在这里插入图片描述
上图中,C=0.01 的图像看起来更好的捕捉了一般的趋势,尽管和高C值情形相比,他在训练数据上的精确度较低。

接下来来看一个非线性可分的例子:
在这里插入图片描述
其中的斜线是 SVM 找到的线性分类器。显然线性分类不是一个合适的结果,那么我们应该将数据投影到一个线性可分的空间,然后在那个空间寻找超平面

我们将上图中的数据投影到一个三维空间:
在这里插入图片描述
让我们在其上运行SVM:

在这里插入图片描述
现在让我们将这个平面投影到原本的二维空间:
在这里插入图片描述
映射回原始空间后,分割边界不再是线性的了。不过,我们关于线性分割、间隔、支持向量的直觉在投影空间仍然成立。

在这里插入图片描述
下面来介绍 核 (kernals)核函数

假设训练数据集包含 n n n 个数据点,其中每个数据点用一个元组表示 ( x i , y i ) (x_i, y_i) (xi,yi) ,其中 x i x_i xi 为表示数据点的向量, y i y_i yi 为数据点的分类/标签(不妨令 y i y_i yi 的取值为-1或1)。那么,分割超平面就可以表示为:
w x − b = 0 \begin{aligned} &wx-b=0 \\ \end{aligned} wxb=0其中, w w w 为超平面的法向量。
将某一数据点 x i x_i xi 代入 w x − b wx-b wxb 后,根据所得结果的正负,就可以判断数据点的分类。
相应地,确定间隔的两个超平面则可以表示为

w x − b = 1 \begin{aligned} &wx-b=1 \\ \end{aligned} wxb=1
w x − b = − 1 \begin{aligned} &wx-b=-1 \\ \end{aligned} wxb=1
这两个超平面之间的距离,也就是间隔的宽度为 2 / ∥ w ∥ 2/\| w \| 2/w
在这里插入图片描述
SVM 的目标是在正确分类的前提下,最大化间隔宽度,也就是说,在满足 y i ( w x i − b ) > = 1 y_i(wx_i-b)>=1 yi(wxib)>=1 的前提下,最大化 2 / ∥ w ∥ 2/\| w \| 2/w ,也就是最小化 ∥ w ∥ \| w \| w

上式中,所有数据点都要满足。但实际上,并不需要为所有数据点进行计算,只需要为所有支持向量计算即可。另外,上式中,我们乘上了 y i y_i yi ,这就同时保证了间隔两侧的数据点都符合要求。

下面我们需要使用一些更深入的数学。显然,最小化 ∥ w ∥ \| w \| w 等价于最小化
m i n 1 2 ∥ w ∥ 2 \begin{aligned} &min\frac{1}{2}\| w \|^2 \\ \end{aligned} min21w2
不过,通过拉格朗日对偶(Lagrange Duality)变换,可以进一步将其转换为对偶变量(dual variable)优化问题:
在这里插入图片描述
然后可以找出更高效的求解方法:(这里略去具体推导过程)
在这里插入图片描述
另外,在推导过程中,我们得到了一个中间结果, w w w 可以通过下式计算:
在这里插入图片描述
你可以不用在意以上公式的细节,只需注意一点,以上计算都是基于向量的内积。也就是说,无论是超平面的选取,还是确定超平面后分类测试数据点,都只需要计算向量的内积

而核函数 (kernel function) 正是算内积的。核函数接受原始空间中两个数据点作为输入,可以直接给出投影空间中的点积。

在大型数据集上,核函数节省的算力将飞速累积。这是核函数的巨大优势。

大多数SVM库内置了流行的核函数,比如多项式(Polynomial)、径向基函数(Radial Basis Function,RBF)、Sigmoid。当我们不进行投影时(比如本文的第一个例子),我们直接在原始空间计算点积——我们把这叫做使用线性核(linear kernel)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值