# 模型选择
参考 sklearn 用户指南 https://scikit-learn.org/stable/model_selection.html
## 交叉验证
通过不同地划分数据集,多次试验,确定较优参数。
1. 最常用交叉验证法是 $k$ 折交叉验证,先将数据集划分为 $k$ 个大小相似的互斥子集.
1. 在训练时,选择其中 $k-1$ 个子集作为训练集,然后将余下的那个子集作为验证集,计算在余下子集的测试误差.
1. 这样,我们有 $k$ 个训练/验证集,我们可以进行 $k$ 次训练和测试,得到 $k$ 个测试误差,最终返回平均测试误差,即这 $k$ 个测试误差的均值.
1. 利用交叉验证进行模型选择就是选择平均测试误差最小的模型作为最优模型. 常用的 $k$ 的取值为 5、10、20 等.
由于时间序列的序列关系限制,划分时序数据集时,需要避免用到未来的数据。
1. 首先将时间序列 $s$ 从后往前划分成 $k$ 个等长且尽可能长的序列,剩下的序列值作为初始训练数据 $x_0$.
1. 即 $s = x_0 \cup x_1 \cup x_2 \cup \cdots \cup x_k,\enspace x_i \cap x_j = \emptyset$.
1. 且 $x_0, x_1, x_2, \ldots, x_k$ 存在时间上的先后关系,将它们首尾相接就得到了序列 $s$.
1. 第一次训练时,用 $x_0$ 作训练集,用 $x_1$ 作验证集;第二次训练时,用 $x_0 \cup x_1$ 作训练集,用 $x_2$ 作测试集.
1. 依此类推,第 $k$ 次训练时,用 $x_0 \cup x_1 \cup x_2 \cup \cdots \cup x_{k−1}$ 作训练集,用 $x_k$ 作验证集.
1. 我们仍然进行了 $k$ 次训练/测试,得到 $k$ 个测试误差,最后返回平均测试误差.
参考
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html
https://tscv.readthedocs.io/en/latest/index.html
https://lonepatient.top/2018/06/10/time-series-nested-cross-validation
## 其他
神经网络模型的规模
https://www.quantamagazine.org/computer-scientists-prove-why-bigger-neural-networks-do-better-20220210/
# 模型评估
量化 “预测的质量(效果)”
## 分类模型的评价指标
参考 [11个模型评估指标(zhihu.com)](https://zhuanlan.zhihu.com/p/80437334)
[精确率、召回率、F1 值、ROC、AUC 各自的优缺点是什么?(zhihu.com)](https://www.zhihu.com/question/30643044)
混淆矩阵 (Confusion Matrix) 也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。
对于二分类(Binary classification),n=2。
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td></td>
<td colspan="2"><p>Actual class (observation)</p></td>
</tr>
<tr class="row-even"><td rowspan="2"><p>Predicted class
(expectation)</p></td>
<td><p>tp (true positive)
Correct result</p></td>
<td><p>fp (false positive)
Unexpected result</p></td>
</tr>
<tr class="row-odd"><td><p>fn (false negative)
Missing result</p></td>
<td><p>tn (true negative)
Correct absence of result</p></td>
</tr>
</tbody>
</table>
- 准确率(Accuracy):判断正确的,
- 精确率、查准率(Precision):正例中判断正确的 $\text{precision} = \frac{tp}{tp + fp},$
- 真负率:负例中判断正确的,
- 召回率、查全率(Recall)、灵敏度(Sensitivity):判断正确中的正例 $\text{recall} = \frac{tp}{tp + fn},$
- 特异度(Specificity):判断正确中的负例
ROC 曲线是灵敏度和(1-特异度)之间的曲线。(1-特异性)也称为 ***假正率***,灵敏度也称为 ***真正率***。
AUC,即 area under the receiver operating characteristic (ROC) curve
## 回归模型的评价指标 or 损失函数
—— 长度与距离的定义,预测效果的量化(几何化)
- 绝对误差 (Absolute Error),预测值与真实值之差的绝对值
$AE = ABS\left(Actual_t - Forecast_t\right)$
1. 平均绝对误差 (Mean Absolute Error/Deviation - MAE 或 MAD),绝对误差的 ***算术平均***;
$$MAE = \frac{1}{N} \sum_{t=1}^N ABS\left(Actual_t - Forecast_t\right)$$
1. 几何平均绝对误差 (Geometric Mean Absolute Error - GMAE),绝对误差的 ***几何平均***;
$$\begin{aligned}
GMAE &= \exp\left(\frac{1}{N} \sum_{t=1}^N \log\left[ABS\left(Actual_t - Forecast_t\right)\right]\right)\newline
&= \left[\prod_{t=1}^N ABS\left(Actual_t - Forecast_t\right)\right]^{1/N}
\end{aligned}$$
1. 根均方误差 (Root Mean Square Error - RMSE),绝对误差的 ***平方平均*** MSE,再开根号;
$$RMSE = \sqrt{\frac{1}{N} \sum_{t=1}^N \left(Actual_t - Forecast_t\right)^2}$$
由均值不等式可知,GMAE ≤ MAE ≤ RMSE 对于任一组真实和预测序列都成立。
这意味着它们三者中 RMSE 对异常值最敏感,GMAE 最不敏感,比较稳定。
因而 GMAE 适合用来比较预测模型的优劣,但要求每项误差非零,且开 n 次根的计算耗时会更长。
- 绝对百分比误差 (Absolute Percentage Error),绝对误差除以真实值,再乘以 100%
$APE = \displaystyle\frac{ABS\left(Actual_t - Forecast_t\right)}{Actual_t}\times 100\\%$
1. 平均绝对百分比误差 (Mean Absolute Percentage Error - MAPE),绝对百分比误差的 ***算术平均***;
$$MAPE = \frac{1}{N} \sum_{t=1}^N \frac{ABS\left(Actual_t - Forecast_t\right)}{Actual_t}\times 100\\%$$
1. 对称的MAPE (Symmetric Mean Absolute Percentage Error - SMAPE),将 MAPE 中的分母 “真实值” 换为 “真实值和预测值两者的算术平均”;
$$SMAPE = \frac{1}{N} \sum_{t=1}^N \frac{ABS\left(Actual_t - Forecast_t\right)}{\left(Actual_t + Forecast_t\right)/2}\times 100\\%$$
1. 反正切绝对百分比误差 (Mean Arctangent Absolute Percentage Error - MAAPE),先用反正切函数把 APE 变换为一个有界量,再求算术平均;
$$MAAPE = \frac{1}{N} \sum_{t=1}^N \arctan\left[\frac{ABS\left(Actual_t - Forecast_t\right)}{Actual_t}\right]\times 100\\%$$
1. 加权(平均)绝对百分比误差 (Weighted (Mean) Absolute Percentage Error - wMAPE 或 WAPE),also called ***MAD/Mean Ratio***.
$$WAPE = \frac{\sum_{t=1}^N ABS\left(Actual_t - Forecast_t\right)}{\sum_{t=1}^N Actual_t}\times 100\\%$$
各种指标定义的汇总 [Statistical Forecast Errors (olivehorse.com)](https://blog.olivehorse.com/statistical-forecast-errors)
几个误差指标的比较 [销量预测中的误差指标分析 - 曹明 - 博客园 (cnblogs.com)](https://www.cnblogs.com/think90/p/11883067.html)
## 解释性
除了定义,理解每个指标的 **几何意义** 或许更重要,就是所谓的 “解释性”。
但是大多误差指标只能 “相对” 地来看。因为不知道它的几何意义,“绝对” 值也没法解释。
一种折中的方案就是把多步的预测值与真实值的走势画到同一张图上,用图形的直观作为辅助。
## 基于有效预测的模型评估
Performance Testing of Effective Forecasting
### 混沌时间序列0
- A data-driven, physics-informed framework for forecasting the spatiotemporal evolution of chaotic dynamics with nonlinearities modeled as exogenous forcings (Khodkar2021)
⭐ Fig. 2. 两种预测方法的对比:走势图(Ground Truth and Prediction)、误差累计图(Error)、Lyapunov timescale $1/\Lambda_{\max}$,其中 $\Lambda_{\max}$ 为最大 Lyapunov 指数(leading Lyapunov exponent).
- Neural machine-based forecasting of chaotic dynamics (Balachandran2019)
Lorenz63 系统、Lorenz96 系统、Kuramoto–Sivashinsk 系统;Lyapunov times $\Lambda_{\max} t$
- 深度学习预测混沌时间序列(熊有成2019)以预测的“有效时间”为预测效果的评价标准
- 长短期记忆网络预测混沌时间序列(熊有成2019)
1. 在仿真实验中, 我们以 ***平均有效预测时间*** 作为度量指标, 使用模型对洛伦兹系统的状态变量进行预测, 并针对混沌系统特殊的动力学性质, 为模型搭配
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
时间序列分析 一个时间序列通常由4种要素组成:趋势、季节变动、循环波动和不规则波动。 趋势:是时间序列在长时期内呈现出来的持续向上或持续向下的变动。 季节变动:是时间序列在一年内重复出现的周期性波动。它是诸如气候条件、生产条件、节假日或人们的风俗习惯等各种因素影响的结果。 循环波动:是时间序列呈现出得非固定长度的周期性变动。循环波动的周期可能会持续一段时间,但与趋势不同,它不是朝着单一方向的持续变动,而是涨落相同的交替波动。 不规则波动:是时间序列中除去趋势、季节变动和周期波动之后的随机波动。不规则波动通常总是夹杂在时间序列中,致使时间序列产生一种波浪形或震荡式的变动。只含有随机波动的序列也称为平稳序列。 时间序列建模基本步骤是:①用观测、调查、统计、抽样等方法取得被观测系统时间序列动态数据。②根据动态数据作相关图,进行相关分析,求自相关函数。相关图能显示出变化的趋势和周期,并能发现跳点和拐点。跳点是指与其他数据不一致的观测值。如果跳点是正确的观测值,在建模时应考虑进去,如果是反常现象,则应把跳点调整到期望值。拐点则是指时间序列从上升趋势突然变为下降趋势的点。
资源推荐
资源详情
资源评论
收起资源包目录
多元预测模型在混沌时间序列上的应用.zip (30个子文件)
deep-learning-multivariate-time-series-forecasting-master
训练技巧(training technique)
.keep 0B
README.md 4KB
my_py38_packages.txt 14KB
LICENSE 1KB
jupyter notebook
lorenz_lsoda002.csv 531KB
chen_lsoda002.csv 530KB
multivariate.py 180KB
model_test4.py 16KB
multivariate_ConvTransformer_baseline.ipynb 895KB
.keep 0B
时间序列数据(timeseries data)
get_bars_30M.py 1KB
my_fundamentals_get.py 2KB
chaos_plotly.py 5KB
单季财务数据字典.xlsx 17KB
.keep 0B
README.md 6KB
模型选择与评价指标(model selcetion and evaluation metrics)
.keep 0B
README.md 16KB
README.md 8KB
模型(models)
tcn.py 5KB
transformers.py 39KB
mtgode.py 25KB
seq2seq.py 6KB
rnn.py 2KB
mtgnn.py 24KB
mtgode_r.py 20KB
.keep 0B
README.md 13KB
FNN_RNN_TCN.ipynb 44KB
mtgnn_r.py 23KB
共 30 条
- 1
资源评论
野生的狒狒
- 粉丝: 2503
- 资源: 2142
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功