一、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. docker配置mysql主从与django实现读写分离

    一.搭建主从mysql环境 1 下载mysql镜像 docker pull mysql:5.7 2 运行刚下载的mysql镜像文件 # 运行该命令之前可以使用`docker images`是否下载成功 ...

  2. day28

    断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断点应该加在报错之前 绿色箭头表示快速跳到下一个断点执行 控制台报错,点击你能看懂的最后一行,光标会 ...

  3. Vue实现mp3音乐播放及动态进度条

    今天碰到一个Vue点击mp3播放及进度条动态走动的小功能,记录一下: 首先是通过HTML5 audio标签引入音频: <template> <div class="x-fo ...

  4. 怎么把宿主机上的镜像推送到hub上

    怎么把宿主机上的镜像推送到hub上: 1.查看系统中存在的镜像: [root@izuf63bjp8ts8nkl13pxh1z devicemapper]# docker imagesREPOSITOR ...

  5. Oracle SCN 详解

    一.简介 scn,system change number 在某个时间点定义数据库已提交版本的时间戳标记,Oracle为每个已提交事务分配一个唯一的scn,scn值是对数据库进行更改的逻辑时间点.sc ...

  6. powerline字体安装

    安装命令 git clone https://github.com/powerline/fonts ./install.sh 了解powerline ->美化自己的命令行环境,增加漂亮的状态行, ...

  7. 暗灰色的圆形按钮.html

    宝宝 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title& ...

  8. HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi

    传统的物联网产品开发步骤复杂,涉及硬件开发.软件开发.云端开发等众多流程.而且产品的开发周期长.开发成本高.产品稳定性不佳.维护成本高.而物联网设备本身市场竞争激烈,价格低,设备更新迭代快,所以在保证 ...

  9. Python协程与Go协程的区别二

    写在前面 世界是复杂的,每一种思想都是为了解决某些现实问题而简化成的模型,想解决就得先面对,面对就需要选择角度,角度决定了模型的质量, 喜欢此UP主汤质看本质的哲学科普,其中简洁又不失细节的介绍了人类 ...

  10. python操作s3服务中的文件

    亚马逊云aws提供了s3服务.国内一些云厂商也用了s3技术.要操作s3服务器中的文件需要用到boto这个python包.下面的代码是一个简单例子. #! /usr/bin/python # -*-co ...