更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/

前向分步算法

一、前向分步算法引入

假设Nick的年龄是25岁。

  1. 第1棵决策树

把Nick的年龄设置成初始值0岁去学习,如果第1棵决策树预测Nick的年龄是12岁,即残差值为\(25-12=13\)

  1. 第2课决策树

    1. 把Nick的年龄设置成残差值13岁去学习,如果第2棵决策树能把Nick分到13岁的叶子节点,累加两棵决策树的预测值加和\(12+13=25\),就是Nick的真实年龄25岁
    2. 如果第2棵决策树的得到的是10岁,残差值为\(25-12-10=3\)
  2. 第3课决策树

把Nick的年龄设置成残差值3岁去学习……

  1. 继续重复上述过程学习,不断逼近Nick的真实年龄

二、前向分步算法详解

2.1 加法模型

加法模型(additive model)一般表示为弱学习器加和
\[
f(x) = \sum_{t=1}^T\theta_tb(x;\gamma_t)
\]
其中\(b(x;\gamma_t)\)为弱学习器,\(\gamma_t\)为弱学习器的参数,\(\theta_t\)为弱学习器的系数。

2.2 加法模型目标函数优化问题

给定训练数据以及目标函数\(L(y,f(x))\),加法模型的经验风险最小化问题既可以变为目标函数最小化问题
\[
\underbrace{min}_{\theta_t,\gamma_t}\sum_{i=1}^mL(y_i,\sum_{t=1}^T\theta_tb(x_i;\gamma_t))
\]
上述加法模型的目标函数优化问题是一个很复杂的优化问题,但是通过前向分布算法(forward stagewise algorithm)可以解决这一问题,它的思想是:因为学习问题是加法模型,所以每一步只学习一个弱学习器及其系数,然后逐步逼近优化目标函数,也就是说,每一步只需要优化如下所示的目标函数
\[
\underbrace{min}_{\theta,\gamma}\sum_{i=1}^mL(y_i,\theta{b(x_i;\gamma)})
\]

三、前向分步算法流程

3.1 输入

有\(m\)个数据\(n\)个特征的训练数据集\(T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\}\);目标函数\(L(y,f(x))\);弱学习模型集\(\{b(x;\gamma_t)\},\quad(t=1,2,\cdots,T)\),在Boosting算法中\(T\)相当于弱学习器的个数。

3.2 输出

加法模型\(f(x)\)。

3.3 流程

  1. 初始化\(f_0(x)=0\)
  2. 对\(t=1,2,\cdots,T\)
    1. 极小化目标函数
      \[
      (\theta_t,\gamma_t)=\underbrace{arg\,min}_{\theta,\gamma}\sum_{i=1}^mL(y_i,f_{t-1}(x_i)+\theta{b(x_i;\gamma)})
      \]
      得到参数\(\theta_t,\gamma_t\)
    2. 更新
      \[
      f_t(x)=f_{t-1}(x)+\theta_tb(x;\gamma_t)
      \]
  3. 得到加法模型
    \[
    f(x)=f_T(x)=\sum_{t=1}^T\theta_tb(x;\gamma_t)
    \]

A-07 前向分步算法的更多相关文章

  1. 前向分步算法 && AdaBoost算法 && 提升树(GBDT)算法 && XGBoost算法

    1. 提升方法 提升(boosting)方法是一种常用的统计学方法,在分类问题中,它通过逐轮不断改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能 0x1: 提升方法的基本 ...

  2. 卷积神经网络 cnnff.m程序 中的前向传播算法 数据 分步解析

    最近在学习卷积神经网络,哎,真的是一头雾水!最后决定从阅读CNN程序下手! 程序来源于GitHub的DeepLearnToolbox 由于确实缺乏理论基础,所以,先从程序的数据流入手,虽然对高手来讲, ...

  3. 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...

  4. 深度神经网络(DNN)模型与前向传播算法

    深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结. 1. 从感知机 ...

  5. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  6. 前向传播算法(Forward propagation)与反向传播算法(Back propagation)

    虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与 ...

  7. 2. CNN卷积网络-前向传播算法

    1. CNN卷积网络-初识 2. CNN卷积网络-前向传播算法 3. CNN卷积网络-反向更新 1. 前言 我们已经了解了CNN的结构,CNN主要结构有输入层,一些卷积层和池化层,后面是DNN全连接层 ...

  8. JavaScript笔记 #07# 用js写算法

    算法盒子初代(为了提高学习算法的热情...) 效果图: 所有代码放在单个html中: <!DOCTYPE html> <html> <head> <meta ...

  9. 隐马尔可夫(HMM)、前/后向算法、Viterbi算法

    HMM的模型  图1 如上图所示,白色那一行描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列,蓝紫色那一行是各个状态生成可观测的随机序列 话说,上面也是个贝叶斯网络,而贝叶斯网络中有这么一种,如下 ...

随机推荐

  1. 基于单细胞测序数据构建细胞状态转换轨迹(cell trajectory)方法总结

    细胞状态转换轨迹构建示意图(Trapnell et al. Nature Biotechnology, 2014) 在各种生物系统中,细胞都会展现出一系列的不同状态(如基因表达的动态变化等),这些状态 ...

  2. Leetcode:合并两个有序链表

    class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { if (l1 == null) { return ...

  3. mariadb+haproxy实现负载均衡(一)

    根据实际情况,数据生产无论是量还是使用地方都在稳步增加,单一服务器的稳定性也越来越受到关注,所以想提前做好技术准备. 因为之前就安装好了数据库,现在只讨论haproxy的安装及相关使用. haprox ...

  4. 基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

  5. Rocksdb基本用法

    rocksdb 用法 rocksdb 介绍 RocksDB是使用C++编写的嵌入式kv存储引擎,其键值均允许使用二进制流.由Facebook基于levelDB开发, 提供向后兼容的levelDB AP ...

  6. 24 (OC)* 加密

    一 .MD5加密 MD5加密是最常用的加密方法之一,是从一段字符串中通过相应特征生成一段32位的数字字母混合码. MD5主要特点是 不可逆,相同数据的MD5值肯定一样,不同数据的MD5值不一样(也不是 ...

  7. vue2.0搭建vue手脚架(vue-cli)

    1.安装node.js 从node官网下载并安装node,安装步骤很简单,只要一路“next”就可以了.安装完成后,打开命令行工具输入命令node -v,如下图,如果出现对应版本号,就说明安装成功了. ...

  8. tcp居然会数据延迟40ms被发送

    tcpdump是很好的tcp分析工具,在此配合nc命令来学习tcpdump nc -l 8000 tcpdump -S -n -i lo tcp and host 127.0.0.1 and port ...

  9. 【数据结构】什么是AVL树

    目录 什么是AVL树 1. 什么是AVL树 2. 节点的实现 3. AVL树的调整 3.1 LL旋转 3.2 RR旋转 3.3 RL旋转 3.4 LR旋转 什么是AVL树 二叉查找树的一个局限性就是有 ...

  10. 【深入学习MySQL】MySQL的索引为什么使用B+树?

    前言 在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引).本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明M ...