首页 > 其他分享 >完全搞懂集成学习

完全搞懂集成学习

时间:2023-03-17 19:34:20浏览次数:38  
标签:集成 分类器 分类 frac 权重 样本 学习 alpha 搞懂

本文未完成,会持续更新

目录

集成学习是一种利用多个基础模型来构建更加准确、稳定的预测模型的机器学习技术。集成学习的基本思想是将多个模型组合起来,通过集体决策来提高模型的预测性能。它能够有效地降低单个模型的过拟合风险,提高模型的泛化性能。

主要概念

  1. 基学习器
  2. 弱学习器
  3. 强学习器

串行集成学习

AdaBoost

AdaBoost算法是一种经典的串行式集成学习方法。在每次迭代中,AdaBoost算法会根据当前加权样本集训练一个弱分类器,并计算其错误率。然后,根据错误率计算分类器的权重,然后更新样本权重,并将更新后的样本集用于下一次迭代中。这样,每个分类器都是在当前加权样本集上训练的,而不是原始的训练集。

理解1:样本和分类器的加权

可以把AdaBoost算法类比为一个错题本,每个弱分类器都会形成一个错题本,在下一轮学习中,我们会针对错题本中的错误题目,更加用心地进行学习,以避免再犯相同的错误。

但需要注意的是,AdaBoost在每次迭代的时候并不只选取错题(错分类的样本),也会选择之前正确的题。就类似复习的时候不能只看错题,也得看看之前做对的题,只是权重更偏向错题。每个弱分类器都是在前一轮弱分类器分类错误的样本加权后训练的,以此更加关注分类错误的样本,从而提高分类性能。

那么,如何进行样本集的加权呢?

以下是具体的思路:

我们为了更聚焦与错误分类的那些样本,要设计一种形式使得当分类错误的时候更大,分类正确的时候更小。因此,可以考虑下面这种形式。

如果第\(t\)个分类器\(G_t\)错误分类了第\(i\)个样本,则第\(i\)个样本在第\(t+1\)轮中的权重为:

\[w_{i,t+1} = w_{i,t} \times e^{\alpha_t} \]

其中\(\alpha(t)\)是第\(t\)个分类器的权重。反之,如果第\(t\)个分类器正确分类了第\(i\)个样本,则第\(i\)个样本在第\(t+1\)轮中的权重为:\(w_{i,t+1} = w_{i,t} \times e^{-\alpha_t}\)。这样就可以保证

这两种情况可以统一为:

\[w_{i,t+1} = w_{i,t} \times e^{-\alpha_t y_i G_t(x_i)} \]

\(y_i G_t(x_i)\)在正确分类时为\(-1\),错误分类时为\(1\)。为了保证权重求和为\(1\),这样计算之后还会对整个权重进行归一化,即都除以\(\Sigma({w_{i,t}\times e^{-y_i\alpha(t)}})\)。

然后我们考虑如何计算\(\alpha_t\),\(\alpha_t\)是基本分类器的权重,它的计算如下:

  1. 计算\(G_t\)在训练集上样本加权后的分类误差率:

\[e_t = \Sigma P(G_t(x_i)\neq y_i) = \Sigma w_{i,t}I(G_t(x_i)\neq y_i) \]

  1. 取自然对数

\[\alpha_t = \frac{1}{2}log\frac{1-e_t}{e_t} \]

第二步的公式怎么来的呢?

这是因为我们希望正确分类的样本的权重比上错误分类的样本的权重恰好是正确率和错误率的比值的反比,如果用上面的式子的话,就有

\[\frac{e^{-\alpha_t}}{e^{\alpha_t}} = \frac{e^{-\frac{1}{2}log\frac{1-e_t}{e_t}}}{e^{\frac{1}{2}log\frac{1-e_t}{e_t}}} \\ = \frac{(\frac{1-e_t}{e_t})^{-\frac{1}{2}}}{( \frac{1-e_t}{e_t})^\frac{1}{2}} \\ = \frac{e_t}{1-e_t} \]

假设两个弱分类器a和b,\(e_{a} = 0.8\)和\(e_{b} = 0.1\),在这两种情况下,正确分类的样本的权重比上错误分类的样本的权重分别是\(8:2\)和\(1:9\)。前一种情况的错误率很高,也就是大部分都是误分类的样本时,这时反而会提高分类正确的样本的权重。

AdaBoost算法在得到最终的分类器时,会对之前所有的分类器进行加权。以上面的分类器为例,a和b的\(\alpha\)的比值:

\[\frac{\alpha_a}{\alpha_b} = \frac{log\frac{1-e_a}{e_a}}{log\frac{1-e_b}{e_b}} \\ = \frac{log(\frac{1}{4})}{log (9)} \]

可知\(log(\frac{1}{4})\)是负数,\(log (9)\)是正数,此处可以看出,分类性能越好的分类器,计算出的权重会更大,对最终结果影响的程度越高。

理解2:前向分步算法

AdaBoost最后生成的强分类器可以认为是一个加法模型,即:

\[f(x) = \left(\sum_{t=1}^{T} \alpha_t h(x;\theta_t)\right) \]

其中,\(f(x)\)表示最终的强分类器,\(h(x;\theta_t)\)表示第\(t\)个弱分类器,\(\theta_t\)是该分类器的参数,\(\alpha_t\)是该分类器的权重。

学习这个模型可以最小化损失函数,但是这个问题非常复杂, 前向分步算法是用来解决这个优化问题。它通过从前向后每次学习一个基函数和系数,然后逐步逼近优化目标函数。

在AdaBoost中,优化的损失函数是指数损失函数,如下:

\[L(y,f(x)) = \exp(-yf(x)) \]

其中,\(y \in \{-1, +1\}\)表示样本的真实标签,\(f(x)\)表示模型的预测值。

提升树

加法模型 + 前向分布算法
基函数: 决策

GBDT梯度提升决策树

GDBT, 即Gradient Boosting Decision Tree,梯度提升决策树

每一步的弱预测模型都依据损失函数的梯度方向,就是梯度提升。

XGBoost框架

LGBM框架

并行集成学习

Bagging并行式集成学习

Bagging,即Bootstrap AGGregatING,表示自助抽样集成,将训练集随机有放回地采样得到m个样本的采样集,基于每个采样集训练一个基学习器,再预测时将它们结合得到结果,通常分类问题使用投票法生成结果,回归问题使用平均法作为最终的结果。

以下是集合结果时使用的方法:

  • 投票法
    • 绝对多数投票 majority voting:选取过半数投票的结果
    • 相对多数投票 plurality voting:选取得票数最多的结果
    • 加权投票: 通过训练权重,对每个基分类器的结果加权处理
  • 平均法
    • 简单平均:直接算平均值作为最终结果
    • 加权平均:通过训练权重,对每个基分类器的结果加权处理

​Random Forest随机森林

总结与比较

  • GDBT和XGBoost的区别:GBDT使用梯度下降法,是一次导;XGboost使用牛顿法,使用到了loss function的二次导

  • Bagging

    • 主要关注降低方差,在不容易受样本扰动的学习器上的效用更明显

参考文献

标签:集成,分类器,分类,frac,权重,样本,学习,alpha,搞懂
From: https://www.cnblogs.com/slowlai/p/17226487.html

相关文章

  • 原根学习笔记
    原根学习笔记阶对于\(a\in\mathbb{Z},m\in\mathbb{N}^+,\gcd(a,m)=1\)。满足\(a^n\equiv1\pmodm\)的最小正整数\(n\)被称为\(a\)模\(m\)的阶,记作......
  • 3.17学习总结
    今天上web课上机实验学会了网页html的制作实验代码如下<!DOCTYPE html><html>    <head>        <title>信2105-3尹亚博个人主页</title>      ......
  • Apache Spark学习
    关于ApacheSpark1.2003-2006年,谷歌发表了Googlefilesystem、MapReduce、bigtable三篇重量级系统论文,分别讨论了大规模数据如何存储、处理及结构化组织。之后ApacheHad......
  • Canal学习
    在mysql创建cancel用户#使用CREATEUSER创建一个用户,用户名是canal,密码是canal,主机名是localhost。SQL语句和执行过程如下。createuser'canal'@'%'identified......
  • Vue 学习笔记
      各目录作用{{}}引用data中的值v-html引用data中的值并渲染到页面上v-bind控制属性中的值缩写v-model数据双向绑定v-ifv-on:click监听事件缩写{{message|c......
  • 浅记cas集成
    注意:集成单点登录后,可以完成用户认证逻,需要进一步查询用户中心接口获取用户绑定角色等信息。接入参考CAS官方Github客户端示例SpringBoot项目示例1、springboot项目在pom......
  • SQLite 学习日志
    SQLite 语法SQLite是遵循一套独特的称为语法的规则和准则。本教程列出了所有基本的SQLite语法,向您提供了一个SQLite快速入门。大小写敏感性有个重要的点值得注意,S......
  • 机器学习(二):感知机+svm习题 感知机手工推导参数更新 svm手推求解二维坐标超平面直线方
    作业1:输入:训练数据集\(T={(x1;y1);(x2;y2),...,(xN;yN)}\)其中,\(x\inR^n\),\(y\inY=\{+1,-1\}\),\(i=1,2...,N\),学习率\(η=0.1\).输出:\(w\),\(b......
  • APP学习10(增删改查)
    快速格式化代码:ctrl+alt+l 1.SQList方式存储数据数据关键一:监听器过多的情况下如何优化代码。1.1添加数据1.用db.insert方法caseR.id.add:......
  • Android学习之Intent接收返回数据
    send_main.xml:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/MyLayout"an......