TF 2.0 LSTM:如何用于支出预测?

问题描述

我想在TensorFlow 2.0中使用LSTM来预测下个月所有客户的支出(这可能不是常见的LSTM用例)。我的数据有1万个客户的每月支出数据。

格式:

Customer ID,time(yyyymm),target(spending),age,gender,all other features.....
customer 1,201912,100
customer 1,201911,200
...
customer 1,201402,300
customer 1,201401,100
customer 2,0
....
customer 2,50
customer 3,100
....
customer 10k,201401

它有4个LSTM输入维度:(10k customers * 60 months samples * 3 timesteps (quarterly) * 100 features)。 通常,LSTM具有3个维度:(nb_samples,timesteps,features)

我的问题:

我想我仍然不确定什么是正确的数据处理方法。我将起始代码放在下面,但我认为有些低估是不正确的:

lstm_input = tf.keras.layers.Input(shape=(60,3,100),name='lstm_input') 
x = tf.keras.layers.LSTM(64,name='lstm_0',return_sequences=True)(lstm_input)
x = tf.keras.layers.GlobalMaxPooling1D()(x)
....

我应该更改些什么以使数据适合LSTM或RNN模型?

更新

我想可能需要输入如下内容?还是应该使用RNN / LSTM对其建模?

  [         Month1                    Month2                  ...  Month60
customer 1: [[fe1(1,1)...fe100(1,1)],[fe1(1,2)...fe100(1,2)],...,60)...fe100(1,60)]]
customer 2: [[fe1(2,1)...fe100(2,[fe1(2,2)...fe100(2,60)...fe100(2,60)]]
  ....
customer N: [[fe1(n,1)...fe100(n,[fe1(n,2)...fe100(n,60)...fe100(n,60)]]
  ]

解决方法

也许这种观察有帮助。为每个客户获得每月的总支出。 这样,您将获得恒定数量的时间步长(60个月)和1万个样本。 我假设您知道here中解释的所有术语。

我也不理解* 3(季度)部分,数据是在三个月内采样的吗?

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...