金融统计学方法:神经网络

news2024/11/8 19:26:36

目录

1.神经网络

2.深度神经网络

3.案例分析


1.神经网络

神经网络是模仿人脑神经元工作原理而设计的一种算法模型。在一个基本的神经网络中,存在多个“神经元”或称为“节点”,这些节点被组织成多个层次。每个节点都接收前一层的输入,进行加权求和,并通过一个激活函数产生输出。

神经网络主要由以下几个部分组成:

  1. 输入层:这是神经网络的第一层,用于接收外部数据。
  2. 隐藏层:位于输入层和输出层之间的层,可以有一个或多个。
  3. 输出层:将神经网络的结果输出给外部环境。
  4. 权重与偏置:每个连接都有一个权重,每个节点都有一个偏置。
  5. 激活函数:决定神经元是否应该被“激活”或输出其值。

2.深度神经网络

深度神经网络(DNN)基本上是一个有很多隐藏层的神经网络。这些额外的层使得DNN能够学习和表示更复杂的特征和模式。简而言之,一个“深”的网络意味着它有更多的层次和更多的能力,但同时也意味着它需要更多的数据和计算资源来进行训练。

深度学习的兴起归功于几个关键因素:

  • 大数据:深度网络需要大量的训练数据。
  • 计算能力的增强:如GPU的出现,使得大规模矩阵操作更为高效。
  • 算法进步:如ReLU激活函数、Dropout等技术的引入,帮助解决梯度消失和过拟合问题。

3.案例分析

下面利用神经网络来解决XOR问题。

XOR问题是指异或逻辑运算,对于两个二进制输入,XOR运算的定义如下:

 从上面的表格可以看出,只有当两个输入不同时,输出才为1;如果两个输入相同,则输出为0。

XOR问题在神经网络领域的重要性在于:单个感知机(或称为线性单元)不能解决XOR问题,因为XOR函数不是线性可分的。这意味着你不能画一条直线来区分输出为1和输出为0的数据点。但是,使用一个具有至少一个隐藏层的多层神经网络可以解决XOR问题,这证明了引入隐藏层的重要性和多层神经网络的能力。

首先绘制XOR数据点:

import matplotlib.pyplot as plt

# XOR 数据
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])

plt.scatter(X[y[:,0] == 0][:, 0], X[y[:,0] == 0][:, 1], color='blue', label='0')
plt.scatter(X[y[:,0] == 1][:, 0], X[y[:,0] == 1][:, 1], color='red', label='1')
plt.xlabel('Input A')
plt.ylabel('Input B')
plt.legend()
plt.title('XOR Data Points')
plt.show()

结果图;

接下来利用神经网络进行预测:

import numpy as np
import matplotlib.pyplot as plt

# 定义Sigmoid函数及其导数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

# 定义神经网络结构
input_neurons = 2
hidden_neurons = 4
output_neurons = 1

# 初始化权重和偏置
np.random.seed(0)
input_hidden_weights = np.random.rand(input_neurons, hidden_neurons)
hidden_output_weights = np.random.rand(hidden_neurons, output_neurons)
hidden_bias = np.random.rand(1, hidden_neurons)
output_bias = np.random.rand(1, output_neurons)

# 定义训练数据 (XOR problem)
X = np.array([
    [0, 0],
    [0, 1],
    [1, 0],
    [1, 1]
])
y = np.array([
    [0],
    [1],
    [1],
    [0]
])

learning_rate = 0.5
epochs = 10000
errors = []

# 训练神经网络
for epoch in range(epochs):
    # 前向传播
    hidden_layer_input = np.dot(X, input_hidden_weights) + hidden_bias
    hidden_layer_output = sigmoid(hidden_layer_input)
    output_layer_input = np.dot(hidden_layer_output, hidden_output_weights) + output_bias
    predicted_output = sigmoid(output_layer_input)
    
    # 计算误差
    error = y - predicted_output
    
    # 记录MSE
    mse = np.mean(np.square(error))
    errors.append(mse)
    
    # 反向传播
    d_predicted_output = error * sigmoid_derivative(predicted_output)
    error_hidden_layer = d_predicted_output.dot(hidden_output_weights.T)
    d_hidden_layer = error_hidden_layer * sigmoid_derivative(hidden_layer_output)
    
    # 更新权重和偏置
    hidden_output_weights += hidden_layer_output.T.dot(d_predicted_output) * learning_rate
    output_bias += np.sum(d_predicted_output, axis=0, keepdims=True) * learning_rate
    input_hidden_weights += X.T.dot(d_hidden_layer) * learning_rate
    hidden_bias += np.sum(d_hidden_layer, axis=0, keepdims=True) * learning_rate

print(predicted_output)

# 绘制误差曲线
plt.plot(errors)
plt.title('Error (MSE) over Epochs')
plt.xlabel('Epochs')
plt.ylabel('Mean Squared Error (MSE)')
plt.show()

预测结果:

[[0.01707759]
 [0.98487483]
 [0.98482722]
 [0.01675426]]

误差曲线如下;

可见,随着迭代次数的增加, 均方误差MSE越来越小,最终收敛到0。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python实现的一个通用的二进制数据分析工具源码,分析任意格式的二进制数据,还能同时查看协议文档

这是一个通用的二进制数据分析工具。 它能做什么 分析任意格式的二进制数据,还能同时查看协议文档逐字节、逐位分析手动、自动分析对分析结果建透视图,发现规律,学习协议 怎么做到的 工具以插件化方式扩展协议的支持定义了易用的API供插件…

【vue3】踩坑日记,vite与node版本对应(mac环境)

创建vue3vitets项目时,报错The requested module ‘vue’ does not provide an export named ‘computed’; node版本问题, Vite 需要 Node.js 版本 14.18,16; 升级node版本步骤: 先查看node的版本&#…

qt配置halcon环境实现读入图像显示

首先,在Halcon里面写流程。 *读入图像 read_image (Image, cat) *获取图片大小 get_image_size (Image, Width, Height) *设置适应大小显示 dev_set_part (0, 0, Height-1, Width-1) *显示图像 dev_display (Image) 菜单栏的文件->导出程序备用。 QT新建工程&a…

Jmeter测试关联接口

Jmeter用于接口测试时,后一个接口经常需要用到前一次接口返回的结果,本文主要介绍jmeter通过正则表达式提取器来实现接口关联的方式,可供参考。 一、实例场景: 有如下两个接口,通过正则表达式提取器,将第一…

小白学习c++的的第一节课

初识c 目录:一、c关键字(c98)二、命名空间2.1 命名空间的定义2.2 命名空间的使用 三、c输入与输出四、缺省参数五、函数重载六、引用6.1引用特性6.2常引用6.3使用场景6.4传值和传引用效率比较6.5引用和指针的区别 七、内联函数7.1 概念7.2特性 八、auto关键字&…

Mock 测试详解:什么是 Mock 测试

Mock测试 什么是 Mock ? Mock 的意思就是,当你很难拿到源数据时,你可以使用某些手段,去获取到跟源数据相似的假数据,拿着这些假数据,前端可以先行开发,而不需要等待后端给了数据后再开发。 Mo…

通过尖端技术创造价值:释放生成式 AI 的力量

塔曼纳 一、说明 近年来,世界见证了人工智能(AI)的重大进步,生成式AI是最具革命性的技术之一。生成式人工智能已成为一种强大的方法,使机器能够创建新的原创内容,使其成为不同行业各种应用背后的驱动力。在…

An Embarrassingly Easy but Strong Baseline for Nested Named Entity Recognition

原文链接: https://aclanthology.org/2023.acl-short.123.pdf ACL 2023 介绍 问题 基于span来解决嵌套ner任务的范式,大多都是先对span进行枚举,然后对每个span进行分类,实际就是得到一个分数矩阵,矩阵中每个元素表示一…

uniapp map地图实现marker聚合点,并点击marker触发事件

1.uniapp官方文档说明 2.关键代码片段 // 仅调用初始化,才会触发 on.("markerClusterCreate", (e) > {})this._mapContext.initMarkerCluster({enableDefaultStyle: false, // 是否使用默认样式zoomOnClick: true, // 点击聚合的点,是否…

高级软件工程师职业发展路径及适学人群

大数据赋能产业,改变人与场景的交互方式,随着大数据在各行各业融合应用的不断深化,预计2020年中国大数据市场市值将突破10000亿元。 未来发展,大数据应用范围越加宽广,包括:新零售、旅游、广告、电商…

【操作系统】MBR主引导目录结构以及作用

一.BIOS和MBR的交接仪式 当BIOS检测完内存、显卡,把硬盘等外设加载进来后,便开始在内存0X00~0X3FF处建立起数据结构、中断向量表,并且填写中断例程。完成这一系列的操作后便开始寻找硬盘(如果硬盘不止一个的话,则会通过…

为什么要在电影院装监控?有什么作用?

近期小编在网上看到有很多人在讨论:电影院的摄像头有多高清?看电影时的小动作放映员都能看得一清二楚?答案是:是的。但大家也不必有心理负担,电影院的监控目的不是为了监控观众,更多的是为了保障观影者的权…

基于Python实现的一款轻量、强大、好用的视频处理软件,可缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕等

Quick Cut 是一款轻量、强大、好用的视频处理软件。它是一个轻量的工具,而不是像 Davinci Resolve、Adobe Premiere 那样专业的、复杂的庞然大物。Quick Cut 可以满足普通人一般的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段…

【C++杂货铺】一文总结C++中的异常

文章目录 一、C语言传统的处理错误的方式二、C异常三、异常的使用3.1 异常的抛出和捕获3.1.1 异常的抛出和匹配原则3.1.2 在函数调用链中异常栈展开匹配原则 3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异常体系五、C标准库的异常体系六、异常的优缺点6.1 优点6.2 …

C# 给List编个序号

给List编个号 int[] numbers { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };int i 0;var q (from n in numbersselect (index:i,number:n)).ToList();foreach (var v in q) {Console.WriteLine($"i {v.index}, v {v.number}"); }

设计模式-单例模式 (Singleton)

单例模式 (Singleton) 单例模式是一种创建型设计模式,它确保类只有一个实例,并提供了一种访问该实例的全局方法。这种模式有助于确保系统中的某些组件只有一个实例,并提供了一种方便的方法来访问该实例。 1、单例类只…

VM16Pro的Win10虚拟机安装Linux子系统Kali

VM16Pro的Win10虚拟机安装Linux子系统Kali 一、启用Windows功能二、配置WSL三、安装Kali四、安装kali基本工具包五、图形化六、适用的报错 一、启用Windows功能 启用后需重启二、配置WSL wsl --update #管理员启动Powershell执行,完成后将下面注册表Start更改为…

VR全景加盟创业,让你多一条赚钱机会

都说打工人,打工魂,那么打工族的你是否每月工资入不敷出呢?是否感觉房贷、车贷、子女、家庭压力大呢?如果你是想创业赚钱,但是没有门路的话,不妨试试看VR全景加盟,VR全景作为一种全新风口项目&a…

Softing为连接PROFIBUS网络提供多种接口产品方案

一 应用广泛的PROFIBUS网络 PROFIBUS是基于统一、标准且独立于应用的通信协议。据PI-China统计,在工业领域里早已有近5090万个PROFIBUS设备被安装在了超过900万节点中。PROFIBUS网络的广泛应用得益于PROFIBUS协议的开放性——用户可以很方便地在PROFIBUS网络的任意…

map和set底层实现【C++】

文章目录 map和set模板参数红黑树结点中的数据模板参数中的仿函数正向迭代器运算符重载--运算符重载 库里的写法setmapRBTree map和set模板参数 set是K模型的容器&#xff0c;而map是KV模型的容器 如何用一棵KV模型的红黑树同时实现map和set template<class K ,class V>…