当前位置:网站首页 > 数据挖掘 > 正文

数据挖掘(6.1)--神经网络_神经网络 数据挖掘

目录

神经网络简介

BP算法

Delta学习规则的基本原理

BP神经网络的结构 

BP神经网络的算法描述

神经网络训练一般步骤

后向传播算法的主要步骤 

优缺点

BP算法简单举例


神经网络简介

神经网络是一种计算模型,它受到人脑处理信息的生物神经网络过程的启发。人工神经网络(ANN)一般也称为神经网络(Neural Network,NN)。  

神经网络是由多个神经元组成的,每个神经元都有一个输入和一个输出,它们之间通过权重进行连接。当输入数据经过多个神经元后,输出结果就是由这些神经元的输出加权求和得到的。

BP算法

BP算法(Back Propagation Algorithm)是一种常用的神经网络训练算法,用于在监督学习中对前向传播算法

神经网络是一种计算模型,它受到人脑处理信息的生物神经网络过程的启发。人工神经网络(ANN)一般也称为神经网络(Neural Network,NN)。  

神经网络是由多个神经元组成的,每个神经元都有一个输入和一个输出,它们之间通过权重进行连接。当输入数据经过多个神经元后,输出结果就是由这些神经元的输出加权求和得到的。

进行优化。BP算法基于误差反向传播原理,通过计算每个神经元对于输出结果的误差,然后将误差从输出层反向传播到输入层,逐层更新每个神经元的权重和偏置值,以最小化预测结果与真实结果之间的误差。

Delta学习规则的基本原理

Delta学习规则又称梯度法或最速下降法,其要点是改变单元间的连接权重来减小系统实际输出与期望输出间的误差 

BP神经网络的结构 

BP神经网络是具有三层或三层以上的阶层型神经网络,由输入层、隐含层和输出层构成,相邻层之间的神经元全互连,同一层内的神经元无连接 

BP神经网络的算法描述

BP算法的主要思想是从后向前(反向)逐层传播输出层的误差以间接算出隐层误差。

算法分为两个阶段:

第一阶段(正向传播过程)输入信息从输入层经隐层逐层计算各单元的输出值

第二阶段(反向传播过程)输出误差逐层向前算出隐层各单元的误差,并用此误差修正前层权值

具体来说,BP算法包括以下几个步骤:

  1. 初始化模型参数(如神经元的权重和偏置值)。
  2. 前向传播计算网络的输出结果。
  3. 计算网络输出结果与真实结果之间的误差。
  4. 根据误差反向传播原理,计算每个神经元对于误差的贡献,并根据梯度下降算法更新每个神经元的权重和偏置值。
  5. 重复执行以上步骤,直到达到一定的迭代次数或损失函数收敛。 

神经网络训练一般步骤

初始化权重

将输入元组一个一个注入网络

于每个输入元组,执行如下过程:

每个单元的经输入计算为这个单元所有输入的线性组合

使用激活函数计算输出值

新权重值和阈值(偏差)

向传播算法的主要步骤 

用随机值初始化权重

向前传播输入,对每个隐含层或输出单元,计算其输入和输出,并最终计算出预测结果

单元j的净输入:

假设一个隐藏或输出单元为j,单元j的输人来自上一层的输出,Wij是由上一层单元i到单元j的连接权重,O_{i}是上一层单元i的输出,\theta j是单元j的偏倚。

单元j的净输出:

向后传播误差。更新权重和阈值(从输出层开始)

输出层单元j的误差

隐含层单元j的误差

其中w_{jk},是单元j到下一较高层单元k的连接权重,Errk是单元k的误差。

 

其中\bigtriangleup w_{ij}是权重w_{ij}的改变;l是学习速率,通常取0.0~1.0之间的常数,一种经验的设置是将学习率设置为1/t ,t是当前训练集迭代的次数。

优缺点

优点

  • 非线性映射能力
  • 自学习和自适应能力
  • 泛化能力
  • 容错能力

缺点

  • 结构选择不一
  • 局部极小化、收敛速度慢
  • 预测能力和训练能力的矛盾问题
  • 样本依赖性问题

BP算法简单举例

import numpy as np from sklearn.datasets import load_iris from sklearn.preprocessing import StandardScaler # 定义sigmoid函数 def sigmoid(x): return 1 / (1 + np.exp(-x)) # 定义BP算法 def backpropagation(X, y, hidden_nodes, output_nodes, learning_rate, epochs): # 初始化权重 input_nodes = X.shape[1] hidden_weights = np.random.normal(scale=1 / input_nodes 0.5, size=(input_nodes, hidden_nodes)) output_weights = np.random.normal(scale=1 / hidden_nodes 0.5, size=(hidden_nodes, output_nodes)) # 训练 for i in range(epochs): # 前向传播 hidden_inputs = np.dot(X, hidden_weights) hidden_outputs = sigmoid(hidden_inputs) output_inputs = np.dot(hidden_outputs, output_weights) output_outputs = sigmoid(output_inputs) # 计算误差 output_error = y - output_outputs output_delta = output_error * output_outputs * (1 - output_outputs) hidden_error = np.dot(output_delta, output_weights.T) hidden_delta = hidden_error * hidden_outputs * (1 - hidden_outputs) # 更新权重 output_weights += learning_rate * np.dot(hidden_outputs.T, output_delta) hidden_weights += learning_rate * np.dot(X.T, hidden_delta) return output_outputs # 加载数据集 iris = load_iris() X = iris.data y = iris.target # 数据预处理 scaler = StandardScaler() X = scaler.fit_transform(X) # 将标签转换为one-hot编码 y_onehot = np.zeros((y.size, y.max()+1)) y_onehot[np.arange(y.size), y] = 1 # 训练模型 output = backpropagation(X, y_onehot, hidden_nodes=5, output_nodes=3, learning_rate=0.1, epochs=10000) # 预测结果 y_pred = np.argmax(output, axis=1) # 计算准确率 accuracy = np.mean(y_pred == y) print('Accuracy:', accuracy)

 输出结果:

Accuracy: 0.33333
到此这篇数据挖掘(6.1)--神经网络_神经网络 数据挖掘的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 数据挖掘导论课后习题答案-第四章_数据挖掘导论完整版课后答案第四章2024-10-30 15:52:13
  • 【数据挖掘算法与应用】——数据挖掘导论_数据挖掘导论完整版2024-10-30 15:52:13
  • 数据挖掘1——课后习题_数据挖掘课后答案整合2024-10-30 15:52:13
  • 数据挖掘基础_数据分析师月薪多少2024-10-30 15:52:13
  • 数据挖掘案例_ai数据分析系统2024-10-30 15:52:13
  • 数据挖掘导论课后习题答案-第一章_数据挖掘导论课后答案中文版2024-10-30 15:52:13
  • 数据挖掘_数据分析一般用什么软件2024-10-30 15:52:13
  • 自动驾驶数据库(自动驾驶数据挖掘)2024-10-30 15:52:13
  • 机器学习(机器学习与数据挖掘)2024-10-30 15:52:13
  • 自动驾驶数据挖掘(自动驾驶数据服务)2024-10-30 15:52:13
  • 全屏图片