一、BP_ Adaboost模型

Adaboost 算法的思想是合并多个“弱”分类器的输出以产生有效分类。其主要步骤为 :

(1)首先给出弱学习算法和样本空间(x, y) ,从样本空间中找出 m 组训练数据,每组训练数据的权重都是 1 /m。

(2)用弱学习算法迭代运算 T 次,每次运算后都按照分类结果更新训练数据权重分布,对于分类失败的训练个体赋予较大权重,下一次迭代运算时更加关注这些训练个体。弱分类器通过反复迭代得到一个分类函数序列 f1, ,f2 , … , fT ,每个分类函数赋予一个权重,分类结果越好的函数,其对应权重越大。

(3)T 次迭代之后,最终强分类函数 F 由弱分类函数加权得 。

BP_Adaboost 模型即把 BP 神经网络作为弱分类器,反复训练 BP 神经网络预测样本输出,通过 Adaboost 算法得到多个 BP 神经网络弱分类器组成的强分类器。

二、BP_ Adaboost模型分类算法流程

基于 BP_Adaboost 模型的 分类算法流程图如下:

算法步骤如下:

step1:数据选择和网络初始化。从样本空间中随机选择 m 组训练数据,初始化测试数据的分布权值 D,(i) = l/m,根据样本输入输出维数确定神经网络结构,初始化 BP 神经网络权值和阈值 。

step2::弱分类器预测。训练第 t 个弱分类器时,用训练数据训练 BP 神经网络并且预测训练数据输出,得到预测序列 g(t)的预测误差和 et,误差和 et的计算公式为

式中, g(t )为预测分类结果,y为期望分类结果 。

step3: 计算预测序列权重 。 根据预测序列 g(t) 的预测误差 et, 计算序列的权重 αt , 权重计算公式为

step4: 测试数据权重调整 。 根据预测序列权重 αt,调整下一轮训练样本的权重,调整公式为

式中, βt是归一化因子,目的是在权重比例不变的情况下使分布权值和为 1 。

step5: :强分类函数 。 训练 T 轮后得到j T 组弱分类函数 f (gt ,at) ,由 T 组弱分类函数 f (gt ,at)组合得到了强分类函数 h(x)

三、BP_ Adaboost模型分类实例   

  现有某公司财务状况数据共1350组,每组数据共有11维,前10维分别代表公司的分费用利润率、资产营运能力、公司总资产、总资产增长率、流动比亘在、营业现金流量、审计意见类型、每股收益、存货周转率和资产负债率十项指标 ,最后1维代表公司的财务状况,其中1代表该公司财务状况良好,-1则代表该公司财务出现问题。

根据要求,选取其中1000组数据作为训练集,剩余的350组作为测试集,采用的BP神经网络结构为10-6-1,共训练生成10个BP神经网络弱分类器,最后用10个弱分类器组成的强分类器对公司财务进行分类。

  利用matlab实现该分类问题,代码如下:

  

%% 清空环境变量
clc
clear %% 下载数据
load data input_train output_train input_test output_test %% 权重初始化
[mm,nn]=size(input_train);
D(1,:)=ones(1,nn)/nn; %% 弱分类器分类
K=10;
for i=1:K %训练样本归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
error(i)=0; %BP神经网络构建
net=newff(inputn,outputn,6);
net.trainParam.epochs=5;
net.trainParam.lr=0.1;
net.trainParam.goal=0.00004; %BP神经网络训练
net=train(net,inputn,outputn); %训练数据预测
an1=sim(net,inputn);
test_simu1(i,:)=mapminmax('reverse',an1,outputps); %测试数据预测
inputn_test =mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
test_simu(i,:)=mapminmax('reverse',an,outputps); %统计输出效果
kk1=find(test_simu1(i,:)>0);
kk2=find(test_simu1(i,:)<0); aa(kk1)=1;
aa(kk2)=-1; %统计错误样本数
for j=1:nn
if aa(j)~=output_train(j);
error(i)=error(i)+D(i,j);
end
end %弱分类器i权重
at(i)=0.5*log((1-error(i))/error(i)); %更新D值
for j=1:nn
D(i+1,j)=D(i,j)*exp(-at(i)*aa(j)*test_simu1(i,j));
end %D值归一化
Dsum=sum(D(i+1,:));
D(i+1,:)=D(i+1,:)/Dsum; end %% 强分类器分类结果
output=sign(at*test_simu); %% 分类结果统计
%统计强分类器每类分类错误个数
kkk1=0;
kkk2=0;
for j=1:350
if output(j)==1
if output(j)~=output_test(j)
kkk1=kkk1+1;
end
end
if output(j)==-1
if output(j)~=output_test(j)
kkk2=kkk2+1;
end
end
end kkk1
kkk2
disp('第一类分类错误 第二类分类错误 总错误');
% 窗口显示
disp([kkk1 kkk2 kkk1+kkk2]); plot(output)
hold on
plot(output_test,'g') %统计弱分离器效果
for i=1:K
error1(i)=0;
kk1=find(test_simu(i,:)>0);
kk2=find(test_simu(i,:)<0); aa(kk1)=1;
aa(kk2)=-1; for j=1:350
if aa(j)~=output_test(j);
error1(i)=error1(i)+1;
end
end
end
disp('统计弱分类器分类效果');
error1 disp('强分类器分类误差率')
(kkk1+kkk2)/350 disp('弱分类器分类误差率')
(sum(error1)/(K*350))

  结果如下:

  分析结果可以看出,强分类器分类误差率低于弱分类器分类误差率,表明BP_Adaboos分类算法效果还是比较好的。对于案例中的数据,可以再加强训练一下第二类分类的数据,最后使得分类效果更加优良。

BP_Adaboost 模型及其分类应用的更多相关文章

  1. MATLAB神经网络(5) 基于BP_Adaboost的强分类器设计——公司财务预警建模

    5.1 案例背景 5.1.1 BP_Adaboost模型 Adaboost算法的思想是合并多个“弱”分类器的输出以产生有效分类.其主要步骤为:首先给出弱学习算法和样本空间($X$,$Y$),从样本空间 ...

  2. R︱Softmax Regression建模 (MNIST 手写体识别和文档多分类应用)

    本文转载自经管之家论坛, R语言中的Softmax Regression建模 (MNIST 手写体识别和文档多分类应用) R中的softmaxreg包,发自2016-09-09,链接:https:// ...

  3. 一步步教你轻松学朴素贝叶斯模型算法Sklearn深度篇3

    一步步教你轻松学朴素贝叶斯深度篇3(白宁超   2018年9月4日14:18:14) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  4. 一步步教你轻松学KNN模型算法

    一步步教你轻松学KNN模型算法( 白宁超 2018年7月24日08:52:16 ) 导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用.本文通过一个模拟的实际案例进行讲解. ...

  5. 基于tensorflow使用全连接层函数实现多层神经网络并保存和读取模型

    使用之前那个格式写法到后面层数多的话会很乱,所以编写了一个函数创建层,这样看起来可读性高点也更方便整理后期修改维护 #全连接层函数 def fcn_layer( inputs, #输入数据 input ...

  6. NLP学习(2)----文本分类模型

    实战:https://github.com/jiangxinyang227/NLP-Project 一.简介: 1.传统的文本分类方法:[人工特征工程+浅层分类模型] (1)文本预处理: ①(中文) ...

  7. Apple的Core ML3简介——为iPhone构建深度学习模型(附代码)

    概述 Apple的Core ML 3是一个为开发人员和程序员设计的工具,帮助程序员进入人工智能生态 你可以使用Core ML 3为iPhone构建机器学习和深度学习模型 在本文中,我们将为iPhone ...

  8. ResNet-50模型图像分类示例

    ResNet-50模型图像分类示例 概述 计算机视觉是当前深度学习研究最广泛.落地最成熟的技术领域,在手机拍照.智能安防.自动驾驶等场景有广泛应用.从2012年AlexNet在ImageNet比赛夺冠 ...

  9. 带你从0到1开发AI图像分类应用

    摘要:通过一个垃圾分类应用的开发示例,介绍AI Gallery在AI应用开发流程中的作用. 本文分享自华为云社区<AI Gallery:从0到1开发AI图像分类应用>,作者: yd_269 ...

随机推荐

  1. Django Form and ModelForm

    Form介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输 ...

  2. 线程池&进程池

    线程池&进程池 池子解决什么问题? 1.创建/销毁线程伴随着系统开销,如果过于频繁会影响系统运行效率 2.线程并发数量过多,抢占系统资源,从而导致系统阻塞甚至死机 3.能够刚好的控制和管理池子 ...

  3. python画樱花

    用python画简单的樱花 代码如下: import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, t): ...

  4. mysql主从架构搭建

    1.配置文件,开启二进制日志 vim /etc/my.cnf 在mysql下增加如下内容 server-id= log-bin=mysql-bin relay-log=mysql-relay 2.登录 ...

  5. Netty实现丢弃服务协议(Netty4.X学习一)

    何为丢弃服务(Discard Protocol),丢弃服务就是一个协议,是最简单的协议,它的作用是接受到什么就丢弃什么,它对调试网路状态有一定的用处.基于TCP的丢弃服务,服务器实现了丢弃丢弃协议,服 ...

  6. 华为云 AI 实战营计划,带你迈上 AI 之路

    当今,AI的开发人才需求呈现极大的供需不平衡.所有开发者都关心,要如何从一名开发者晋升为AI开发者?AI开发能力,是主要的进入障碍.不用慌,华为云推出了 <华为云ModelArts-Lab AI ...

  7. 如何利用 Open Live Writer 在本地发布WordPress博客文章

    [导读] Open Live Writer是由Windows Live WriterWriter更名而来,是由微软推出的一款能够免费使用的博客写作软件. Open Live Writer 可以支持大多 ...

  8. Java修炼——IO流的概念以及其分类

    IO流的基本概念: 流的原理: 1) 在 Java 程序中,对于数据的输入/输出操作以"流" (stream) 方式进行: 2) J2SDK 提供了各种各样的"流&quo ...

  9. 服务容错保护hystrix

    灾难性雪崩效应 如何解决灾难性雪崩效应 降级 超时降级.资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据.实现一个 fallback 方法, 当请求后端服务出现异常的时候, 可以使用 ...

  10. 第六章 jQuery选择器

    jQuery选择器概述: 选择器jQuery基础,在jQuery中,对事件处理,遍历DOM和Ajax操作都依赖于选择器. 什么是jQuery选择器: jQuery选择器拥有良好的浏览器兼容性,不用使用 ...