赫兹股票量化交易软件:神经网络实验(第 5 部分):常规化传输到神经网络的输入参数

概述

在对之前实验的结果进行了一些反思之后,我开始思考如何提高我们之前开发的智能系统的训练性成效和盈利能力。

今天我将强调信号的重要性,即传输数据到神经网络进行分析,和预测未来结果。 这可能是神经网络中最重要的组成部分。 我想向我的读者传达理解信号的重要性,这样您就可以避免恼人的误解,例如“我使用了最先进的函数库,但它却不起作用”。 在之前的文章中,赫兹量化应用了一些有趣的方法。 现在,赫兹量化交易软件将尝试把指标值规范化之后再传输数据。

如往常一样,我将尝试详细解释所有内容,但不会过度复杂。 我认为,每个人都能弄清楚。

规范化输入再传递给神经网络的重要性

输入的规范化是为训练神经网络准备数据阶段的重要步骤。 这个过程允许赫兹量化将数据输入纳入一定范围内,这有助于提高训练收敛的稳定性和速度。

在本文中,赫兹量化将研究为什么规范化是神经网络训练中的重要步骤,以及可以使用哪些规范化方法。

什么是输入的规范化?

输入的规范化包括转换输入数据,如此其具有一定的数值范围。 归一化的两种主要方法是通过平均值和标准差进行(z-归一化),以及通过最小值和最大值归一化(最小-最大归一化)。

Z-归一化使用平均值和标准差来居中和缩放数据。 为此,从平均值中减去每个值,并除以标准差。 最小-最大归一化采用最小值和最大值将数据缩放到给定范围。

为什么输入的规范化很重要?

输入的规范化对于提高训练收敛的稳定性和速率非常重要。 如果输入数据未规范化,则某些参数可能具有较大的数值范围,这可能会导致神经网络训练出现问题。 例如,梯度可能会变得太大或太小,从而导致优化问题和预测精度差。

规范化还允许加快训练过程,因为可以改进优化算法的收敛性。 正确规范化的数据还有助于避免在输入数据缺乏代表性时可能发生的过度拟合问题。

哪些规范化方法可以使用?

规范化方法可能会因数据类型和我们尝试解决的问题而异。 例如,图像最常见的规范化方法是 Z-归一化和最小-最大归一化。 然而,对于其它类型的数据,例如音频信号或文本数据,采用其它规范化方法可能更有效。

例如,对于音频信号,通常采用最大幅度归一化,其中所有信号值都在 -1 和 1 之间缩放。 对于文本数据,按句子中的单词或字符数量进行规范化可能很有用。

此外,在某些情况下,不仅规范化输入数据,而且规范化目标变量也很有用。 例如,在回归问题中,若目标变量具有较大数值范围,规范化目标变量以提升训练稳定性和预测准确性可能很有用。

输入的规范化是为训练神经网络准备数据阶段的重要步骤。 这个过程允许我们将数据输入纳入一定范围内,这有助于提高训练收敛的稳定性和速度。 取决于数据类型和我们尝试解决的问题,可以采用不同的常规化方法。 此外,在某些情况下,不仅规范化输入数据,而且规范化目标变量也很有用。

规范化方法

最小-最大 归一化

在机器学习中,常规化是提升稳定性和训练收敛率的重要数据预处理步骤。 最常见的常规化方法之一是最小-最大归一化,它允许您将数据值纳入 0 到 1 的范围之内。 在本文中,我们将查看如何针对时间序列运用最小-最大归一化。

时间序列是在不同时间点测量的数值序列。 时间序列的示例包括有关热度、股票价格或商品销售数量的数据。 时间序列可用于预测未来值、分析趋势和形态、或检测异常。

时间序列可能拥有不同的数值范围,且随时间变化很可能不均匀。 例如,股票价格可能范围很广,并根据季节性、新闻和其它因素而波动。 为了有效地分析和预测时间序,有必要把数纳入一定的范围。

最小-最大归一化方法根据最小值和最大值缩放值,将数值归一化到 0 至 1 的范围。 最小-最大归一化方程如下所示:

x_norm = (x - x_min) / (x_max - x_min)

其中 x 是数据值,x_min 是整个数据集中的最小值,x_max 是整个数据集中的最大值,x_norm 是归一化值。

将 Min-Max 归一化方法应用于时间序列有助于将数据纳入正常数值范围,并简化分析。 例如,如果我们有 -30 到 +30 度的热度数据,我们可以应用最小-最大归一化将数值纳入 0 到 1 的范围内。 这将令我们能够比较不同时间段的数值,并识别趋势和异常。

然而,在针对时间序列应用最小-最大归一化时,有必要考虑该方法的特征,及其对数据的影响。 首先,运用最小-最大归一化可能会导致有关范围内数值分布的信息丢失。 例如,如果数据集合当中存在异常值或极值,则它们将被强制变换为 0 或 1,并在分析中丢失。 在这种情况下,可以采用其它归一化方法,例如 Z-分数常规化。

其次,在运用最小-最大归一化时,需要考虑数据变化的动态。 如果数据的变化动态不均匀,则归一化可能会导致时间形态和异常的失真。 在这种情况下,我们可以应用局部规范化,其中判定特定时间区间内每个数据组的最小值和最大值。

第三,在运用最小-最大归一化时,需要考虑样本对分析结果的影响。 如果观测值样本不平衡,或包含峰值,则归一化可能会导致错误的结论。 在这种情况下,可以使用替代数据处理方法,例如峰值消除,或数据平滑。

综上所述,最小-最大归一化方法是机器学习中最常见的归一化方法之一,可以有效地应用于时间序列,令数值达到正常范围。 不过,在运用此方法时,有必要考虑数据的特征,并应用其它处理方法,从而避免基于时间序列的分析和预测失真。

示例:

int OnInit()
  {

// declare and initialize the array
double data_array[] = {1.2, 2.3, 3.4, 4.5, 5.6};

// find the minimum and maximum value in the array
double min_value = ArrayMinimum(data_array, 0, ArraySize(data_array)-1);
double max_value = ArrayMaximum(data_array, 0, ArraySize(data_array)-1);

// create an array to store the normalization result
double norm_array[ArraySize(data_array)];

// normalize the array
for(int i = 0; i < ArraySize(data_array); i++) {
    norm_array[i] = (data_array[i] - min_value) / (max_value - min_value);
}

// display the result
for(int i = 0; i < ArraySize(data_array)-1; i++) {
Print("Source array: ", data_array[i]);
Print("Min-Max normalization result: ", norm_array[i]);
}

return(INIT_SUCCEEDED);
}

该代码创建包含五个浮点数的 data_array 数组。 然后,它调用 ArrayMinimum() 和 ArrayMaximum() 函数查找数组中的最小值和最大值,创建名为 norm_array 的新数组来存储归一化结果,并计算每个元素 (data_array[i] - min_value) / (max_value - min_value) 填充它。 最后,调用 Print() 函数将结果显示在屏幕上 。

结果:

2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Source array: 1.2
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Min-Max normalization result: 0.39999999999999997
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Source array: 2.3
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Min-Max normalization result: 0.7666666666666666
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Source array: 3.4
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Min-Max normalization result: 1.1333333333333333
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Source array: 4.5
2023.04.07 13:22:32.937 11111111111111 (EURUSD,H1)      Min-Max normalization result: 1.5

Z-常规化

时间序列是数据分析的重要工具,特别是在经济、金融、气象、材料科学、等等领域。 主要的时间序列预处理方法之一是 Z-常规化,它有助于提高数据分析的品质。

Z-常规化是一种居中和缩放时间序列的方法。 它的构成会按这样的方式转换时间序列,即时间序列的平均值等于零,标准差等于一。 这对于比较时间序列,以及消除季节性和趋势的影响非常有用。

时间序列的 Z-常规化过程包括以下步骤:

  1. 计算时间序列的平均值。
  2. 计算时间序列的标准偏差。
  3. 针对时间序列的每个元素,计算其值与时间序列平均值之间的差值。
  4. 将每个差值除以标准偏差。

结果值的平均值为 0,标准差为 1。

Z-常规化的益处:

  1. 提升数据分析的品质。 Z-常规化有助于消除季节性和趋势的影响,从而提高数据分析的质量。
  2. 易于使用。 Z-常规化易于使用,可应用于不同类型的时间序列。
  3. 可用于比较时间序列。 Z-常规化允许相互比较时间序列,因为它消除了不同尺度和测量单位的影响。

然而,Z-常规化也有一些限制:

  1. 它不适用于含有极值的时间序列。 如果时间序列包含极值,则 Z-常规化可能会导致结果偏斜。
  2. 它不适用于非稳态时间序列。 如果时间序列是非稳态的(即具有趋势或季节性),则 Z-常规化可以消除这些特征,这可能导致不正确的数据分析。
  3. 不能保证呈正态分布。 Z-常规化能有助于针对时间序列的分布进行常规化,但不能保证分布呈完全正态化。

尽管存在这些限制,但 Z-常规化是一种重要的时间序列预处理技术,可以帮助提高数据分析的品质。 它可用于各个领域,包括经济、金融、气象、和材料科学。

例如,在经济和金融中,Z-常规化可用于比较不同资产或投资组合的表现,并分析风险和波动性。

在气象学中,Z-常规化有助于从天气数据(如温度或降水)分析中消除季节性和趋势。

在材料科学中,Z-常规化可用于分析材料属性的时间序列,例如热膨胀或磁性。

综上所述,Z-常规化是一种重要的时间序列预处理技术,有助于提升各个领域的数据分析品质。 尽管存在诸多限制,但 Z-常规化易于使用,可应用于不同类型的时间序列。

猜你喜欢

转载自blog.csdn.net/herzqthz/article/details/133683845
今日推荐