BP神经网络训练分类器——【机器学习与算法分析 精品资源池】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建立序列模型 为模型添加适当的网络层,设计权重表达方式,
正则化规则(或随机失效),激活函数 定义损失函数,训练模式,提前停止机制
模型训练
模型检验
应用
关于标准化:基于距离的损失函数,一般都需要标准化(如均方误差), 基于离散或者分类数据,则不需要(如贝叶斯,决策树)。神经网络可以 用多种损失函数,视乎问题性质。
• 网络结构如下图:BP神经网络由输入层,隐藏层,输出层组成,其中隐藏层可以有多层,也可以 直接从输入层连接输出层。
• 最简单的神经网络(输入->输出)被称为感知器,当输出层接上线型激活函数,其训练相当于多 元线性回归。
神经网络训练流程
数据清洗,由于本例采用均方误差作为损失指标, 故需要对数据进行标准化,并做必要的转换 划分数据集,测试集
input_shape=(13,), # 输入维度 activation="sigmoid", # 激活函数 逻辑回归函数 use_bias=True, # 使用偏置 kernel_regularizer=keras.regularizers.l2(0.001) # 正则化 ,采用L2正则化 )) model.add(Dense(units=20, # 输出维度,即本层节点数,输入维度自动适配上一层 activation="sigmoid", use_bias=True, kernel_regularizer=keras.regularizers.l2(0.001) )) model.add(Dense(units=2, activation="sigmoid", use_bias=True, kernel_regularizer=keras.regularizers.l2(0.001) ))
关于类别问题:标称变量尽量使用独热编码方式。
关于网络层:根据功能,可分为全连接层,循环层,卷积层,池化层等。 对于BP神经网络,均用全连接层,由于存在梯度消失问题,隐藏层层数一 般不超过4层。
关于样本与正则化:由于模型参数体量巨大,容易会出现模型过分表达的 情况,导致严重的过拟合,目前主要从三个方面规避过拟合问题,一、正 则化或随机失效,使得某些参数不会过分的大,即所有权重参数不会出现 过于悬殊的情况。二、加大样本量。三、模型训练提前停止机制。
种不同成分的数量。成分分别为:Alcohol,Malicacid,Ash,lcalinity of ash, Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins, Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文 件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为 类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的 对应属性的样本值。第1类有59个样本,第2类有71个样本,第3类有48个样本。 • 建模目的:训练分类器并进行评估。
关于激活函数:一般包括线型激活函数(用于回归),逻辑回归函数及其 变种(用于分类),relu函数(用于图形识别),以及自定义的激活函数
关于模型形式:一般分为序列模型(一条路),函数式模型
提纲
BP神经网络算法原理 利用BP神经网络进行分类
TF-IDF实验前提准备
• 系统准备:centos6.8、Spark 2.3.1、Pyrhon3.X,导入pandas,keras,numpy • 数据准备:采用UCI机器学习库中的wine数据集作为算法数据,包括了三种酒中13
实例:启动python,数据预处理
import pandas as pd import numpy as np from keras.models import Sequential from keras.layers import Dense import keras # 数据读取并打乱 df_wine = pd.read_csv("./wine数据集.txt", header=None).sample(frac=1) # 划分60%训练集 p = 0.6 cut = int(np.ceil(len(df_wine) * p)) # 划分数据集 df_wine_train = df_wine.iloc[:cut] df_wine_test = df_wine.iloc[cut:] # 类别标识编码(深度学习常用手段,一般用独热编码实现label的构建,类别1 = (1,0),类别2 = (0,1),类别3 = (0,0)) label_train = pd.DataFrame(df_wine_train[0]) label_train["one-hot_1"] = label_train[0].map(lambda x: 1 if (x == 1) else 0) label_train["one-hot_2"] = label_train[0].map(lambda x: 1 if (x == 2) else 0)
# 构建神经网络需要的数据结构 df_train_net = np.array(df_train_norm) train_data_x = df_train_net[:, 0:13] train_data_y = df_train_net[:, 13:]
实例:构建神经网络结构
# 模型为 13->10->20->2 网络 model = SequentialLeabharlann Baidu) # 序列型神经网络,即网络传播路径只有一条 # 建立全连接层-首层需要输入层维度 model.add(Dense(units=10, # 输出维度,即本层节点数
BP神经网络原理与spark 实践
演讲人:
时间:
提纲
BP神经网络算法原理 利用BP神经网络进行分类
BP神经网络 简介
• 神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。BP神经网络是 一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。 其基本组 成单元是感知器神经元
实例:数据预处理2
# 数据标准化,获取每列均值,标准差 avg_col = df_wine_train.mean() td_col = df_wine_train.std()
# 标准化结果 df_train_norm = (df_wine_train - avg_col) / td_col
# 整理数据 df_train_norm = df_train_norm.drop([0], axis=1).join(label_train[["one-hot_1", "one-hot_2"]])
相关文档
最新文档