sklearn adaboost_集成学习-从零推导和实现adaboost与3D可视化
今天的主题是集成学习中的
集成学习的一种, 意思是建立多个弱分类器, 然后用这些弱分类器的线性加权组合来形成一个强分类器, 什么是弱分类器呢, 就是只比胡猜稍微好一点的分类器, 训练这些弱分类器是一个迭代的过程, 在这个过程里, 下一个弱分类器总是更加关注上一个弱分类器没有分好的数据样本, 以弥补之前弱分类器的不足,
首先我们先来通过可视化的方法来建立一种直觉, 上面两幅图中, 下面的2D图是一些数据点, 分为两类, 红色的类和蓝色的类, 上面动态图展示的是
没有分对的样本.
源代码: https://github.com/aespresso/a_journey_into_math_of_ml
从零推导
我们首先有一个弱分类器
上式中
强分类器,
然后我们发现只对弱分类器求和好像少了点什么, 没错, 我们要赋予每个弱分类器不同的权重:
上式中
在
前面弱分类器没有分对的数据样本, 比如说第
假设我们有一些数据样本
二项分类问题.
我们需要给每一个数据样本赋一个权重, 以控制每个弱分类器应该更加关注哪些数据样本, 我们需要让下一个弱分类器更加关注它前面的弱分类器没有分对的数据点, 设
初始化错误率为
将
那我们怎么确定下一个弱分类器需要关注哪些数据样本呢? 当我们定义好当前的弱分类器
上式中
注意我们暂且不管
我们现在要求所有未归一的权重的和, 并求出可以使它最小的
上式左边加上
上式中可看出, 上式左边跟我们当前的弱分类器
解上面的式子, 这里省略过程, 因为比较简单, 大概解法是将
将
我们求
将
将
我们通过上式还是很难看出
我们又知道
又因为
上式的意义是, 在我们每次增加一个新弱分类器的时候, 前面的弱分类器分错的样本的权重占总样本权重的
我们把
- 初始化
;
- 在第
步, 选择可以最小化当前错误率的弱分类器, 并添加这个弱分类器, 以降低错误率(如果还没有弱分类器, 那就创建一个), 并计算,, 定义新的弱分类器为
- 计算新的数据样本权重
, 见
- 回到第2步, 直到收敛.
- 得到的模型为:
的特性:
- 易用, 需要调节的参数少;
- 弱分类器可以是任何模型, 比如逻辑回归, 线性回归等等, 最常用的是决策树桩;
- 对数据敏感, 如果数据有很多噪音, 则
会倾向于拟合噪音而最终导致模型的过拟合, 为了解决这样的问题, 可以给每一个弱分类器一个学习率权重, 让每个弱分类器最强分类器造成的影响小一些, 或做交叉验证, 让迭代的过程在合适的时机停止;
- 可以用来做特征选择, 举个例子吧, 比如说要评估人群的信用风险, 然后你会有很多这些人的资料, 比如说性别年龄, 居住地址, 收入, 有无不动产等等, 如果你用
的集成方法来做分类, 在迭代的每一步你需要用一个弱分类器划分数据样本, 假设我们用决策树桩, 决策树桩每次只能选择一个特征值进行划分, 在建模完成之后, 看一下模型里的弱分类器都是靠那些特征进行分类的, 就可以得出每种特征的重要性, 方便我们做特征选择, 剔除多余的特征, 增加计算效率, 减少噪音;
- 注意, 在推导的过程中, 我们对强分类器输出的结果取
, 实际中我们可以不单纯取, 而是找一个分类最好的阈值, 或者说边界, 这个阈值不一定为.
代码解读:
请关注我的b站频道, 课程的视频讲解稍后奉上, 包含对整个推导过程的讲解和代码讲解:
哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibilispace.bilibili.com
import
sklearn adaboost_集成学习-从零推导和实现adaboost与3D可视化相关推荐
- 系列 《使用sklearn进行集成学习——理论》 《使用sklearn进行集成学习——实践》 目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参?
系列 <使用sklearn进行集成学习--理论> <使用sklearn进行集成学习--实践> 目录 1 Random Forest和Gradient Tree Boosting ...
- 使用sklearn进行集成学习——实践
目录 1 Random Forest和Gradient Tree Boosting参数详解 2 如何调参? 2.1 调参的目标:偏差和方差的协调 2.2 参数对整体模型性能的影响 2.3 一个朴实的方 ...
- 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法
机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...
- 机器学习:集成学习之 Bagging、Boosting和AdaBoost
Bagging.Boosting和AdaBoost(Adaptive Boosting)都是Ensemble learning的方法.集成学习其实就是有很多个分类器,概念就是三个臭皮匠,顶过诸葛亮. ...
- 【Python-ML】SKlearn库集成学习器Bagging
# -*- coding: utf-8 -*- ''' Created on 2018年1月19日@author: Jason.F @summary: Bagging,通过bootstrap样本构建集 ...
- 【Python-ML】SKlearn库集成学习器Boosting
# -*- coding: utf-8 -*- ''' Created on 2018年1月19日@author: Jason.F @summary: Boosting,无放回抽样,串行训练基学习器, ...
- 集成学习精讲02 - Bagging方法:多个基模型的聚合(SAP大神黄佳新作《零基础学机器学习》节选)
我们将分为5篇文章介绍集成学习,分别是: 集成学习基础知识:偏差和方差 - 戳此阅读 Bagging - Boosting - 戳此阅读 Stacking/Blending - 戳此阅读 Voting ...
- sklearn快速入门教程:(五)集成学习
sklearn快速入门教程–(五)集成学习 一.集成学习简述 集成学习是目前各类竞赛和工程中应用最广泛的模型提升方法.比如在kaggle中就有关于集成学习的介绍(Kaggle模型融合原文).这里所谓的 ...
- A01_机器学习_3.集成学习
从三种基本决策树到集成学习 决策树是一个非常常见并且优秀的机器学习算法,它易于理解.可解释性强,其可作为分类算法,也可用于回归模型. 本文将分三篇介绍决策树,第一篇介绍基本树(包括 ID3.C4.5. ...
最新文章
- oc58--Category注意事项
- .net怎么读_想考UKVI不知道怎么报名?亲亲,这边建议你阅读全文并收藏呢
- 太好了,一分钟带你分清Python的模块、库、包有什么联系和区别?
- OPA 5 - CreateButtonTest creates CreateButtonSteps
- java callable用法_在Java中使用Callable和Future
- Java一个小练习----String类型转换int类型
- OpenERP 关于页码总页数
- CCF201503-1 图像旋转(100分)【数学计算】
- 在C#中调用另一个应用程序或命令行(.exe 带参数)zz
- 【ANDROID游戏开发二十六】追加简述SURFACEVIEW 与 GLSURFACEVIEW效率!
- qpsk matlab仿真,qpsk的matlab和simulink仿真.pdf
- Excel操作:使用Excel制作甘特图
- Nginx 重定向所有子域名到www
- python 微商城_微商城是自己开发好还是用第三方平台好?
- 断点回归matlab,【独家发布】差分断点回归设计(DIRD)及其在人口断点中的应用...
- 【月光博客】腾讯微信推出广告联盟
- 网络三定律:摩尔定律、吉尔德定律和迈特卡夫定律
- springcloud常见问题
- linux 汇编 push rbp,无法从汇编(yasm)代码调用64位Linux上的C标准库函数
- 算法度量方法——时间复杂度及空间复杂度