提升方法

文章记录的内容是参加DataWhale的组队学习统计学习方法(第二版)习题解答过程中的笔记与查缺补漏!
参考解答地址 提升方法

1. 某公司招聘职员考查身体、业务能力、发展潜力这3项。身体分为合格1、不合格0两级,业务能力和发展潜力分为上1、中2、下3三级。分类为合格1 、不合格-1两类。已知10个人的数据,如下表所示。假设弱分类器为决策树桩。试用AdaBoost算法学习一个强分类器。

应聘人员情况数据表

   1 2 3 4 5 6 7 8 9 10
身体 0 0 1 1 1 0 1 1 1 0
业务 1 3 2 1 2 1 1 1 3 2
潜力 3 1 2 3 3 2 2 1 1 1
分类 -1 -1 -1 -1 -1 -1 1 1 -1 -1

解答:

解答思路:

  1. 列出AdaBoost算法;
  2. 采用sklearn的AdaBoostClassifier分类器,构建并训练得到强分类器;
  3. 自编程实现AdaBoost算法,并训练得到强分类器。

回顾一下 AdaBoost 算法,根据书中第156页算法8.1:

输入:训练数据集\(T=\{(x_1,y_1), (x_2,y_2), \cdots, (x_N,y_N)\}\),其中\(x_i \in \mathcal{X} \subseteq R^n\)\(y_i \in \mathcal{Y} = \{-1, +1\}\);弱学习算法;
输出:最终分类器\(G(x)\)
(1)初始化训练数据的权值分布

\[D_1 = (w_{11}, \cdots, w_{1i}, \cdots, w_{1N}), \quad w_{1i} = \frac{1}{N}, \quad i = 1, 2, \cdots, N \]

(2)对\(m=1, 2, \cdots, M\)
  (a)使用具有权值分布\(D_m\)的训练数据集学习,得到基本分类器

\[G_m(x):\mathcal{X} \rightarrow \{-1, +1\} \]

  (b)计算\(G_m(x)\)在训练数据集上的分类误差率

\[e_m = \sum_{i=1}^N P(G_m(x_i) \neq y_i) = \sum_{i=1}^N w_{mi}I(G_m(x_i) \neq y_i) \]

  (c)计算\(G_m(x)\)的系数

\[\alpha_m = \frac{1}{2} \log \frac{1 - e_m}{e_m} \]

  这里的对数是自然对数。
  (d)更新训练数据集的权值分布

\[D_{m+1} = (w_{m+1,1}, \cdots, w_{m+1, i}, \cdots, w_{m+1,N}) \\ w_{m+1,i} = \frac{w_{mi}}{Z_m} \exp(-\alpha_m y_i G_m(x_i)), \quad i = 1, 2, \cdots, N \]

  这里,\(Z_m\)是规范化因子

\[Z_m = \sum_{i=1}^N w_{mi} \exp(-\alpha_m y_i G_m(x_i)) \]

  它使\(D_{m+1}\)成为一个概率分布。
(3)构建基本分类器的线性组合

\[f(x) = \sum_{m=1}^M \alpha_m G_m(x) \]

得到最终分类器

\[\begin{aligned} G(x) &= \text{sign}(f(x)) \\ &= \text{sign}\left(\sum_{m=1}^M \alpha_m G_m(x) \right) \end{aligned} \]

观察 \(G_m(x)\) 的系数 \(\alpha_m = \frac{1}{2} \log \frac{1 - e_m}{e_m}\),注意到 \(\frac{1 - e_m}{e_m}\) 是一个几率,回顾一下几率:

一个事件的几率(odds)是指该事件发生的概率与该事件不发生的概率的比值。如果事件发生的概率是 \(p\),则该事件的几率是 \(\frac{p}{1 - p}\),该事件的对数几率或 logit 函数是:\(logit(p) = \frac{p}{1 - p}\)

\(\frac{1 - e_m}{e_m}\) 表示 \(G_m(x)\) 正确分类这个事件(\(1 - e_m\))的几率,显然,\(G_m\) 的误差越小,其权重越大,而且当 \(e_m \leq 0\) 时,\(\alpha_m \leq 0\),注意所有 \(\alpha_m\) 之和并不为1。再考察一下 \(w_{m+1, i}\)

\[w_{m+1, i} = \begin{cases} \frac{w_{mi}}{Z_m} e^{-\alpha_m} & G_m(x_i) = y_i \\ \frac{w_{mi}}{Z_m} e^{\alpha_m} & G_m(x_i) \neq y_i \end{cases} \]

对比数据集中 \(w_{mi} = w_{mj}\) 的样本,若 \(x_i\) 被正确分类,\(x_j\) 被错误分类,则 \(\frac{ w_{m+1, j} } {w_{m+1, i}} = e^{2 \alpha_m} = \frac{1 - e_m} {e_m}\),即 \(w_{m+1, j} = \frac{1 - e_m} {e_m} \times w_{m+1, i}\)。如果 \(e_m < \frac{1}{2}\),则错误分类的样本的权重会扩大,而正确分类的样本的权重则会缩小。其实对于归一化因子 \(Z_m\) 可以写为:

\[\begin{align} Z_m &= \sum_{i=1}^N w_{mi} \exp(-\alpha_m y_i G_m(x_i)) \\ &= \sum_{i=1}^N w_{mi} \exp(-\frac{1}{2} \log \frac{1 - e_m}{e_m} y_i G_m(x_i)) \\ &= \sum_{i \in A} w_{mi} \exp(-\frac{1}{2} \log \frac{1 - e_m}{e_m}) + \sum_{j \in B} w_{mj} \exp(\frac{1}{2} \log \frac{1 - e_m}{e_m}) \\ &= \sum_{i \in A} w_{mi} \sqrt{\frac{e_m}{1 - e_m}} + \sum_{j \in B} w_{mj} \sqrt{\frac{1 - e_m}{e_m}} \end{align} \]

其中 \(A, B\) 分别为正确和错误分类的样本集合,从这个式子中也可以看出,错误分类的样本的权重被扩大了(当 \(e_m < \frac{1}{2}\) )。当 \(e_m > \frac{1}{2}\) 时,则相反。

具体的过程参考这里

2. 比较支持向量机、 AdaBoost 、Logistic回归模型的学习策略与算法

解答思路

  1. 列出支持向量机的学习策略与学习算法
  2. 列出AdaBoost的学习策略与学习算法
  3. 列出Logistic回归模型的学习策略与学习算法
  4. 比较三者的学习策略与算法

本节内容来自这里

支持向量机的学习策略与算法

  根据书中第131页7.2.4节(合页损失函数)

  对于线性支持向量机学习来说,其模型为分离超平面\(w^* \cdot x + b^* = 0\)及决策函数\(f(x)=\text{sign}(w^* \cdot x + b^*)\),其学习策略为软间隔最大化,学习算法为凸二次规划。
  线性支持向量机学习还有另外一种解释,就是最小化一下目标函数:

\[\sum_{i=1}^N [1 - y_i(w \cdot x_i + b)]_+ + \lambda \|w\|^2 \]

目标函数的第1项是经验损失或经验风险,函数

\[L(y(w \cdot b + x)) = [1 - y_i(w \cdot x_i + b)]_+ \]

被称为合页损失函数,第2项是系数为\(\lambda\)\(w\)\(L_2\)范数,是正则化项。

  根据书中第142~143页7.4节(序列最小最优化算法)

  SMO算法是一种启发式算法,其基本思路是:如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了。因为KKT条件是该最优化问题的充分必要条件。
  整个SMO算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。

综上所述:

  1. 支持向量机的学习策略:软间隔最大化、最小化由合页损失函数和正则化项组成的目标函数
  2. 支持向量机的学习算法:凸二次规划、SMO算法(序列最小最优化算法)

AdaBoost的学习策略与算法

  根据书中第162页8.3节(AdbBoost算法的解释)

  AdaBoost算法还有另一个解释,即可认为AdaBoost算法是模型为加法模型、损失函数为指数函数、学习算法为前向分步算法时的二类分类学习方法。
  给定训练数据及损失函数\(L(y,f(x))\)的条件下,学习加法模型\(f(x)\)成为经验风险极小化即损失函数极小化问题:

\[\min \limits_{\beta_m ,\gamma_m} \sum_{i=1}^N L \left(y_i, \sum_{m=1}^M \beta_m b(x_i;\gamma_m) \right) \]

  定理8.3 AdaBoost算法是前向分步加法算法的特例。这时,模型是由基本分类器组成的加法模型,损失函数是指数函数。

综上所述:

  1. AdaBoost的学习策略:极小化通过加法模型组成的指数损失函数
  2. AdaBoost的学习算法:学习加法模型的前向分步算法

Logistic回归模型的学习策略与算法

  根据书中第93页6.1.3节(模型参数估计)

  Logistic回归模型学习时,对于给定的训练数据集\(T=\{(x_1,y_1), (x_2,y_2), \cdots, (x_N,y_N)\}\),其中\(x_i \in R^n\)\(y_i \in \{0, 1\}\),可以应用极大似然估计法估计模型参数,从而得到Logistic回归模型。

  根据书中第103页6.3节(模型学习的最优化算法)

  Logistic回归模型、最大熵模型学习归结为以似然函数为目标函数的最优化问题,通常通过迭代算法求解。常用的方法有改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。

综上所述:

  1. Logistic回归模型的学习策略:极大似然估计法
  2. Logistic回归模型的学习算法:改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法

比较支持向量机、 AdaBoost 、Logistic回归模型的学习策略与算法

   学习策略 算法
支持向量机 软间隔最大化、最小化由合页损失函数和正则化项组成的目标函数 凸二次规划、SMO算法(序列最小最优化算法)
AdaBoost 极小化通过加法模型组成的指数损失函数 学习加法模型的前向分步算法
Logistic回归 极大似然估计法 改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法
posted @ 2021-12-31 11:47  Milkha  阅读(554)  评论(0编辑  收藏  举报