【问题标题】:machine learning model different inputs机器学习模型不同的输入
【发布时间】:2021-01-18 03:49:57
【问题描述】:

我有数据集,数据集包括:日期、ID(事件的 id)、number_of_activities、running_sum(running_sum 是 id 的活动运行总和)。 这是我数据的一部分:


    date       |   id (id of the event)   |   number_of_activities  |    running_sum  |

   2017-01-06  |   156                    |                   1     |             1   |

   2017-04-26  |   156                    |                   1     |             2   |

   2017-07-04  |   156                    |                   2     |              4  | 

   2017-01-19  |   175                    |                   1     |             1   |

   2017-03-17  |   175                    |                   3     |             4   |

   2017-04-27  |   221                    |                   3     |             3   |

   2017-05-05  |   221                    |                   7     |             10  |

   2017-05-09  |   221                    |                   10    |             20  |

   2017-05-19  |   221                    |                   1     |             21  |

   2017-09-03  |   221                    |                   2     |             23  |

我的目标是预测给定事件中未来的活动数量,我的问题是:我可以在所有数据集(所有事件)上训练我的模型以预测下一个,如果可以,如何?因为输入的数量存在不平等(每个事件的行数不同),是否也可以利用日期数据。

【问题讨论】:

    标签: machine-learning deep-learning neural-network


    【解决方案1】:

    当然可以。但是需要更多信息,您最了解自己。 我想我们在这里谈论的是时间序列,因为你想预测未来。 您可能想看看递归神经网络和 LSTM:

    循环层将时间序列作为输入并输出一个向量,其中包含有关整个时间序列的压缩信息。因此,让我们以事件 156 为例,它有 3 个步骤: 事件是你的特征,它有 3 个时间步长。每个时间步都有不同数量的活动(或特征)。为了解决这个问题,只需使用出现的最大数量的特征并添加一个填充值(通常简单地为零),以便它们都具有相同的长度。然后你就有了一个适合循环神经网络的形状(LSTMS 目前是一个不错的选择)

    更新

    您在 cmets 中说过,使用填充不是您的选择,让我尝试说服您。 LSTM 擅长于序列长度不同的情况。但是,要使其工作,您还需要更长的序列,模型可以从中学习其模式。我想说的是,当您的某些序列只有几个时间步长(如 3)时,而您有其他时间步长为 50 或更多的序列时,模型可能难以预测这些正确,因为您必须指定您想要哪个时间步长使用。因此,要么为明确的问题准备不同的数据,要么使用 SequenceToSequence Learning 深入研究该主题,该学习非常擅长计算不同长度的序列。为此,您需要设置 Encoder-Decoder 网络。

    编码器将整个序列压缩成一个向量,不管它是什么长度。这个向量以某种方式被压缩,它只在一个向量中包含序列的信息。

    然后解码器学习使用这个向量来预测序列的下一个输出。这是机器翻译的已知技术,但适用于任何类型的序列到序列任务。所以我建议你创建这样一个编码器-解码器网络,这肯定会改善你的结果。看看这个tutorial,它可能会帮助你进一步

    【讨论】:

    • 你好,非常感谢你的回答,但我实际上是在问是否有一种方法可以使输入动态化,以便 lstm 可以接受它们,填充或剪切系列不是我是因为使用填充我在某些系列之间存在巨大差异,这增加了令人难以置信的数据量并让我的预测失败,并且通过减少它我没有得到我想要的东西,这实际上是我这样做的教程如果有人在看:machinelearningmastery.com/…
    • 动态是什么意思?输入的哪一部分应该是动态的?
    • 行的长度:例如:ID为156的事件发生了3次,而ID为221的事件发生了5次
    猜你喜欢
    • 2020-03-01
    • 2020-01-26
    • 1970-01-01
    • 2021-08-01
    • 2018-12-18
    • 2016-10-27
    • 1970-01-01
    • 2022-12-10
    • 2021-02-20
    相关资源
    最近更新 更多