Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

提升方法

文章记录的内容是参加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={(x1,y1),(x2,y2),,(xN,yN)},其中xiXRnyiY={1,+1};弱学习算法;
输出:最终分类器G(x)
(1)初始化训练数据的权值分布

D1=(w11,,w1i,,w1N),w1i=1N,i=1,2,,N

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

Gm(x):X{1,+1}

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

em=Ni=1P(Gm(xi)yi)=Ni=1wmiI(Gm(xi)yi)

  (c)计算Gm(x)的系数

αm=12log1emem

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

Dm+1=(wm+1,1,,wm+1,i,,wm+1,N)wm+1,i=wmiZmexp(αmyiGm(xi)),i=1,2,,N

  这里,Zm是规范化因子

Zm=Ni=1wmiexp(αmyiGm(xi))

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

f(x)=Mm=1αmGm(x)

得到最终分类器

G(x)=sign(f(x))=sign(Mm=1αmGm(x))

观察 Gm(x) 的系数 αm=12log1emem,注意到 1emem 是一个几率,回顾一下几率:

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

1emem 表示 Gm(x) 正确分类这个事件(1em)的几率,显然,Gm 的误差越小,其权重越大,而且当 em0 时,αm0,注意所有 αm 之和并不为1。再考察一下 wm+1,i

wm+1,i={wmiZmeαmGm(xi)=yiwmiZmeαmGm(xi)yi

对比数据集中 wmi=wmj 的样本,若 xi 被正确分类,xj 被错误分类,则 wm+1,jwm+1,i=e2αm=1emem,即 wm+1,j=1emem×wm+1,i。如果 em<12,则错误分类的样本的权重会扩大,而正确分类的样本的权重则会缩小。其实对于归一化因子 Zm 可以写为:

Zm=Ni=1wmiexp(αmyiGm(xi))=Ni=1wmiexp(12log1ememyiGm(xi))=iAwmiexp(12log1emem)+jBwmjexp(12log1emem)=iAwmiem1em+jBwmj1emem

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

具体的过程参考这里

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

解答思路

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

本节内容来自这里

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

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

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

Ni=1[1yi(wxi+b)]++λw2

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

L(y(wb+x))=[1yi(wxi+b)]+

被称为合页损失函数,第2项是系数为λwL2范数,是正则化项。

  根据书中第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

  定理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^ny_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  阅读(649)  评论(0)    收藏  举报
编辑推荐:
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 本可避免的P1事故:Nginx变更导致网关请求均响应400
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
阅读排行:
· AI 的力量,开发者的翅膀:欢迎使用字节旗下的 AI 原生开发工具 TRAE
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 千万级的大表如何新增字段?
· 「闲聊文」准大三的我,思前想后还是不搞java了
· 《HelloGitHub》第 112 期
点击右上角即可分享
微信分享提示