首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

神经网络——BP神经网络

昨天介绍了单层感知器,今天为BP神经网络部分,该网络也是最常用的多层感知器。BP神经网络结构特点为多层全连接与误差反向传播。可以用于分类和回归问题。下面以MATLAB自带的葡萄酒数据来做案例讲解。

该数据的变量包括葡萄酒的十三个特征,以及三个酒厂(如果是该酒厂的酒,则值为1,否则为0).十三个特征包括:

Alcohol 、Malic acid、Ash、Alkalinity of ash、Magnesium、Total phenols、Flavanoids、Nonflavanoid phenols、Proanthocyanidins、Color intensity、Hue、OD280/OD315 of diluted wines、Proline。

x的数据如下(共178列13行)

t如下(共三行178列)

下面我们来构造BP神经网络解决该样本识别问题

net =feedforwardnet(20); %建立一个有20层的BP神经网络

view(net) %未训练前的BP神经网络

[xx,settings]=mapminmax(x); %将数据全部归一化

trainxx = xx(1:13,1:100);

traint = t(1:3,1:100); %设置前100个样本为训练集

[net,tr] = train(net,trainxx,traint); %训练后的神经网络

testx = x(1:13,101:178);

testt = t(1:3,101:178); %看看用于测试集合的效果

testy = net(testy);

plotconfusion(testt,testy)%生成混淆矩阵图

如果模型正确,那么混淆矩阵图应该红色部分概率及其小,很显然这个预测很糟糕。接下来可以先考虑如下几个原因:

1 数据整理是否有问题

2 隐藏层设置是否有问题

3 BP网络的训练函数是否有问题

考虑到feedforwardnet本身可以归一化数据归一化,可能前期的归一化会误导。

在此不做预先的归一化进行对照实验。

调整以后有改善,但依然不够。接下来考虑节点,我们把节点数下调到10

模型继续得到改善

下面考虑,原feedforwardnet函数默认的BP学习函数是LM方法,该

方法更多用于拟合而非分类,我们单独使用分类函数patternet,得到下图混淆矩阵。

这次的结果更加何意。模型基本有效。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180422G001CP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券