使用神经网络提取模式
Extracting Patterns using Neural Networks
我正在尝试提取每当特定事件发生时总是出现的常见模式。
例如,患者A、B、C均有心脏病发作。使用那里的脉搏读数,我想找到心脏病发作前的常见模式。
在下一阶段,我想使用多个维度来做到这一点。例如,使用患者脉搏、体温和血压的读数,考虑到每个维度之间的时间和顺序,三个维度中出现的常见模式是什么。
使用神经网络解决此问题的最佳方法是什么?哪种类型的网络最好?
(只需要一些正确的方向)
感谢大家阅读
描述的问题看起来像时间序列预测问题。这意味着由某些现有 过程 生成的连续或离散 现象 的基本预测问题。作为这个问题的原始数据,我们将得到一系列样本 x(t), x(t+1), x(t+ 2), ..., 其中 x() 表示所考虑过程的输出,t 表示某个任意时间点。
对于人工神经网络解决方案,我们将考虑时间序列预测,我们将组织我们的原始数据为新序列。如您所知,我们将 X 视为将在 ANN 学习中使用的输入向量矩阵。对于时间序列预测,我们将根据以下模式构建一个新集合。
在最基本的形式中,您的输入向量 x 将是样本序列 (x(t-k), x(t-k+1), ..., x(t-1), x(t) ) 在某个任意时间点 t 获取,附加到它的前身样本来自时间点 t-k、t-k+1、...、t-1。您应该像这样为每个可能的时间点 t 生成每个示例。
但关键是要预处理数据,这样我们才能得到最好的预测结果。
假设您的数据(现象)是连续的,您应该考虑应用一些采样技术。您可以从一些原始采样周期 Δt 的实验开始,但还有更强大的方法。参见示例 Nyquist–Shannon Sampling Theorem,其中的关键思想是允许从离散的 x(Δt) 样本中恢复连续的 x(t)。当我们考虑到我们可能期望我们的 ANN 这样做时,这是合理的。
假设您的数据是离散的...您仍然需要尝试采样,因为这会加快您的计算速度并可能提供更好的泛化。但关键建议是:做实验! 因为最好的架构取决于数据,并且还需要正确地预处理它们。
接下来是网络输出层。从您的问题看来,这将是一个二进制 class 预测。但也许更广泛的预测向量值得考虑?如何预测所考虑样本的未来,即 x(t+1)、x(t+2) 并用不同的 horizons 进行实验(未来的长度)?
进一步阅读:
- 有人在这里提到 Python。这是一些关于使用 Keras 进行时间序列预测的好教程:Victor Schmidt, Keras recurrent tutorial, Deep Learning Tutorials
- 如果你需要一些真实的例子,这篇论文很好:Fessant, Francoise, Samy Bengio, and Daniel Collobert. "On the prediction of solar activity using different neural network models." Annales Geophysicae. Vol. 14. No. 1. 1996.
我正在尝试提取每当特定事件发生时总是出现的常见模式。
例如,患者A、B、C均有心脏病发作。使用那里的脉搏读数,我想找到心脏病发作前的常见模式。
在下一阶段,我想使用多个维度来做到这一点。例如,使用患者脉搏、体温和血压的读数,考虑到每个维度之间的时间和顺序,三个维度中出现的常见模式是什么。
使用神经网络解决此问题的最佳方法是什么?哪种类型的网络最好? (只需要一些正确的方向)
感谢大家阅读
描述的问题看起来像时间序列预测问题。这意味着由某些现有 过程 生成的连续或离散 现象 的基本预测问题。作为这个问题的原始数据,我们将得到一系列样本 x(t), x(t+1), x(t+ 2), ..., 其中 x() 表示所考虑过程的输出,t 表示某个任意时间点。
对于人工神经网络解决方案,我们将考虑时间序列预测,我们将组织我们的原始数据为新序列。如您所知,我们将 X 视为将在 ANN 学习中使用的输入向量矩阵。对于时间序列预测,我们将根据以下模式构建一个新集合。
在最基本的形式中,您的输入向量 x 将是样本序列 (x(t-k), x(t-k+1), ..., x(t-1), x(t) ) 在某个任意时间点 t 获取,附加到它的前身样本来自时间点 t-k、t-k+1、...、t-1。您应该像这样为每个可能的时间点 t 生成每个示例。
但关键是要预处理数据,这样我们才能得到最好的预测结果。
假设您的数据(现象)是连续的,您应该考虑应用一些采样技术。您可以从一些原始采样周期 Δt 的实验开始,但还有更强大的方法。参见示例 Nyquist–Shannon Sampling Theorem,其中的关键思想是允许从离散的 x(Δt) 样本中恢复连续的 x(t)。当我们考虑到我们可能期望我们的 ANN 这样做时,这是合理的。
假设您的数据是离散的...您仍然需要尝试采样,因为这会加快您的计算速度并可能提供更好的泛化。但关键建议是:做实验! 因为最好的架构取决于数据,并且还需要正确地预处理它们。
接下来是网络输出层。从您的问题看来,这将是一个二进制 class 预测。但也许更广泛的预测向量值得考虑?如何预测所考虑样本的未来,即 x(t+1)、x(t+2) 并用不同的 horizons 进行实验(未来的长度)?
进一步阅读:
- 有人在这里提到 Python。这是一些关于使用 Keras 进行时间序列预测的好教程:Victor Schmidt, Keras recurrent tutorial, Deep Learning Tutorials
- 如果你需要一些真实的例子,这篇论文很好:Fessant, Francoise, Samy Bengio, and Daniel Collobert. "On the prediction of solar activity using different neural network models." Annales Geophysicae. Vol. 14. No. 1. 1996.