基于深度信念网络的DBN+SVM分类预测 ,DBN多分类模型代码,改进的DBN
创始人
2025-05-30 19:04:07
0

目录

背影
DBN神经网络的原理
DBN神经网络的定义
受限玻尔兹曼机(RBM)
支持向量机SVM的原理
DBN+SVM的分类预测
基本结构
主要参数
MATALB代码
结果图
展望

背影

DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,本文用DBN提取特征,用SVM分类,实现二者长处互补

DBN神经网络的的原理

在这里插入图片描述

深度信念神经网络DBN的定义

深度信念网络,DBN,Deep Belief Nets,神经网络的一种。既可以用于非监督学习,类似于一个自编码机;也可以用于监督学习,作为分类器来使用。

从非监督学习来讲,其目的是尽可能地保留原始特征的特点,同时降低特征的维度。从监督学习来讲,其目的在于使得分类错误率尽可能地小。而不论是监督学习还是非监督学习,DBN的本质都是Feature Learning的过程,即如何得到更好的特征表达。

作为神经网络,神经元自然是其必不可少的组成部分。DBN由若干层神经元构成,组成元件是受限玻尔兹曼机(RBM)。

受限玻尔兹曼机(RBM)

RBM是一种神经感知器,由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接,在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。
这样,就可以用下面函数表示一个RBM的能量:
在这里插入图片描述

在一个RBM中,隐层神经元 被激活的概率:

p(v/h) = sum(p(vi/h))

由于是双向连接,显层神经元同样能被隐层神经元激活:

在这里插入图片描述

其中, 为 Sigmoid 函数,也可以设定为其他函数。
值得注意的是,当 为线性函数时,DBN和PCA(主成分分析)是等价的。
同一层神经元之间具有独立性,所以概率密度亦然满足独立性,故得到下式:

支持向量机SVM的详细原理

SVM的定义

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。
(1)支持向量机(Support Vector Machine, SVM)是一种对数据进行二分类的广义线性分类器,其分类边界是对学习样本求解的最大间隔超平面。

(2)SVM使用铰链损失函数计算经验风险并在求解系统中加入了正则化项以优化结构风险,是一个具有稀疏性和稳健性的分类器 。

(3)SVM可以通过引入核函数进行非线性分类。

SVM理论

1,线性可分性

在这里插入图片描述
2,损失函数
在这里插入图片描述

在这里插入图片描述

3,核函数

在这里插入图片描述
在这里插入图片描述

基于dbn+ SVM的分类预测

基本模型

创建经典的三层的DBN神经网络提取特征,SVM分类输出

神经网络参数

maxepoch=1000;%训练rbm的次数
numhid=130; numpen=200; numpen2=10;%dbn隐含层的节点数
disp(‘构建一个3层的深度置信网络DBN用于特征提取’);

MATLAB编程代码

tic;%计时开始
%% 本程序用于煤炭产能预测,所属回归预测类
clear all
close all
clc
format compact
%% 加载数据
load maydata.mat

[input,inputps]=mapminmax(num1’,0,1);
[output,outputns]=mapminmax(num2’,0,1);
input=input’;
output=output’;
%% 划分数据集
%打乱样本 随机抽取1000组作为训练样本,剩下200组作为测试样本
nn= randperm(3120);
% n = 1:400;
num2 = num2(nn);
P=input(nn,:);

% T_test=output((1:400)😅;
clear data m n input output
%% 训练样本构造,分块,批量
numcases=3120;%每块数据集的样本个数
numdims=size(P,2);%单个样本的大小
numbatches=1;%将100组训练样本,分成5批,每一批200组
% 训练数据
for i=1:numbatches
train=P((i-1)numcases+1:inumcases,:);
batchdata(:,:,i)=train;
end%将分好的10组数据都放在batchdata中

%% 2.训练RBM
%% rbm参数
maxepoch=2000;%训练rbm的次数
numhid=30; numpen=20; numpen2=9;%dbn隐含层的节点数
disp(‘构建一个3层的深度置信网络DBN用于特征提取’);
%% 无监督预训练
fprintf(1,'Pretraining Layer 1 with RBM: %d-%d ',numdims,numhid);
restart=1;
rbm1;%使用cd-k训练rbm,注意此rbm的可视层不是二值的,而隐含层是二值的
vishid1=vishid;
hidrecbiases=hidbiases;

fprintf(1,'\nPretraining Layer 2 with RBM: %d-%d ',numhid,numpen);
batchdata=batchposhidprobs;%将第一个RBM的隐含层的输出作为第二个RBM 的输入
numhid=numpen;%将numpen的值赋给numhid,作为第二个rbm隐含层的节点数
restart=1;
rbm1;
hidpen=vishid;
penrecbiases=hidbiases;
hidgenbiases=visbiases;

fprintf(1,'\nPretraining Layer 3 with RBM: %d-%d\n ',numpen,numpen2);%200-100
batchdata=batchposhidprobs;%显然,将第二个RBM的输出作为第三个RBM的输入
numhid=numpen2;%第三个隐含层的节点数
restart=1;
rbm1;
hidpen2=vishid;
penrecbiases2=hidbiases;
hidgenbiases2=visbiases;
%%%% 将预训练好的RBM用于初始化DBN权重%%%%%%%%%
w1=[vishid1; hidrecbiases]; %
w2=[hidpen; penrecbiases]; %
w3=[hidpen2; penrecbiases2];%

%% 有监督回归层训练
%=训练过程===========%
%DBN无监督用于提取特征,需要加上有监督的回归层========%
%由于含有偏执,所以实际数据应该包含一列全为1的数,即w0x0+w1x1+…+wnxn 其中x0为1的向量 w0为偏置b
N1 = size(P,1);
digitdata = [P ones(N1,1)];
w1probs = 1./(1 + exp(-digitdataw1));
w1probs = [w1probs ones(N1,1)];
w2probs = 1./(1 + exp(-w1probs
w2));
w2probs = [w2probs ones(N1,1)];
w3probs = 1./(1 + exp(-w2probs*w3‘’));
numdbn = w3probs;
% save maydataDBN1.mat numdbn

[jingduz,fen] = dbnfun(numdbn,num2);
% sum(num1’)
function [jingduz mat] = dbnfun( input,output)
% rand(‘seed’,0)
[m1 n]=sort(rand(1,size(input,1)));

m=floor(size(input,1)*0.8);
train_wine=input(n(1:m)😅;
train_wine_labels=output(n(1:m)😅;
test_wine=input(n(m+1:end)😅;
test_wine_labels=output(n(m+1:end)😅;
%% 建立svm

% t = templateSVM(‘Standardize’,1);
% model=fitcecoc(train_wine,train_wine_labels,‘Learners’,t);
% pred=predict(model,test_wine);

bestc=50;bestg=1.8; %确定的最佳参数
cmd = ['-s 1 -t 2 ‘,’-c ‘, num2str(bestc), ’ -g ‘, num2str(bestg) , ’ -p 0.001’];
% bestc=1.5;%参数C
% bestg=1.3484;%参数G
% cmd = [’-c ‘,num2str(bestc),’ -g ',num2str(bestg)];%训练参数
model = svmtrain(train_wine_labels,train_wine,cmd);
[pred,acc]= svmpredict(test_wine_labels,test_wine,model);

disp(‘总的分类精度’)
jingduz = sum(pred==test_wine_labels)/length(test_wine_labels)
figure
stem(pred)
hold on
plot(test_wine_labels,‘*’)
legend(‘预测’,‘实际’)

mat = confusionmat(pred,test_wine_labels);
% 各类精度
for i=1:2
disp([‘第’,num2str(i),‘类精度为’,num2str(mat(i,i)/sum(mat(i,:)))])
end

效果图

在这里插入图片描述

结果分析

从效果图上看,深度信念网络DBN+svm分类效果准确率高,效果很好

展望

DBN是一种深度信念网络,优点在可以处理大输入数据,能训练中自动降维,训练的过程就是降维的过程,缺点是拟合逼近能力不强,收敛面比较平滑,基于这些,可以和其他拟合能力强的神经网络结合,比如极限学习机,RBF等,结合后的神经网络,即可处理大输入数据,又具有无限逼近的能力,有需要扩展的欢迎扫描文章下面的二维码

相关内容

热门资讯

女生古风伤感个性签名 女生唯美...   01、 相思难追 转动时光的椅背 旧日错过的年华与他来一杯  02、 那时回忆已成痂 初雪染白了...
中学生励志演讲稿范例 演讲稿三... 中学生励志演讲稿范例1  各位老师,各位同学,大家好。今天,我很荣幸站在这个舞台,来表达我从开学到现...
高冷霸气的qq个性签名 高冷霸...   01、 他和她住在同一栋楼 遗憾的是爱擦身而过。  02、 学历或专业而沾沾自喜,也不要因为你的...
高冷伤感个性签名经典 游戏个性... 01、 总归有人看不惯我,我能怎样,百般讨好还是杀人灭口.  02、 下雨了 我想起伞 也想起了你 ...
古风签名女生唯美句子 女生个性...   01、 一杯酒 一世意 了却长相思  02、 纵使相逢应不识  03、 相顾无言  04、 此生...
银行信贷员竞聘演讲稿范文 信贷... 银行信贷员竞聘演讲稿  竞聘人XX,我竞聘的岗位是信贷岗,竞聘理由如下:  我有一定的文字表达能力和...
关爱他人优秀演讲稿范文 关爱他... 关爱他人优秀演讲稿篇1  得到他人的的关爱是一种幸福,关爱他人更是一种美德。在我成长的岁月中,常常得...
颂歌献给党演讲稿范文 我把赞歌... 颂歌献给党演讲稿一  亲爱的党啊,在庆祝您华诞之际,请收下我,一名曾在死亡线上徘徊了好长一段时间后,...
励志演讲稿参考范文 励志演讲稿... 励志演讲稿参考范文【1】  各位领导、各位同事,大家下午好!  今天我要演讲的题目是《青春风采、励志...
银行营销岗位竞聘演讲稿 银行竞...   银行营销岗位竞聘演讲稿1  我是来自观音阁支行的李梦娜,我演讲的题目是学习、创新、团结。  每个...
logstash+elasti... 文章目录一.安装ELK 7.17二.为Elasticsearch设置密码三.配置logstash四....
华为OD机试题,用 Java ... 华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已...
银行竞聘副行长演讲稿 竞聘银行... 银行竞聘副行长演讲稿【1】  尊敬的各位评委、各位领导、同志们:  大家*午好!  首先,真诚的感谢...
关于低碳绿色环保演讲稿 节能低...  尊敬的各位领导,各位评委,敬爱的老师,亲爱的同学们:  大家晚上好!  我演讲的题目是《迈出那一小...
因果推断dowhy之-ihdp... 0x01. 案例背景 IHDP(Infant Health and Developme...
关于银行竞聘演讲稿三篇 银行营... 银行竞聘演讲稿1尊敬的各位领导、同志们:  大家好!  我叫xxx,现年32岁,金融本科文化,中国共...
加强师德师风教育演讲稿 师德师... 加强师德师风教育演讲稿一  今天,我们怀着喜悦的心情迎来了中国共产党的80华诞。中国共产党是中国工人...
环保先进个人演讲稿范文 环保工...   环保先进个人演讲稿  同学们:  我今天发言的主题是《保护环境,珍惜地球》。  我们生活在地球上...
医院借力泛微今承达实现数字化合...   国家卫健委印发的《公立医院内部控制管理办法》中要求“充分利用信息技术加强内部控制建设࿰...
设置jvm参数,验证结果 文章目录前言一、启动java项目二、开始验证设置项目的jvm参数总结 前言 书接上文上个博文 由于...