天池竞赛-资金流入流出预测总结
1.竞赛背景
时序问题:根据2013年7月份到2014年8月份的用户数据,预测支付宝每日的资金流入流出情况。
数据集情况
数据集主要包括四个表格:1.用户信息表主要记录用户的性别、城市
2.用户申购赎回数据表包括用户操作时间2013-07至2014-09之间,操作记录包括申购与赎回两个部分
data_balance = pd.read_csv("data/user_balance_table.csv")
data_balance['date'] = pd.to_datetime(data_balance['report_date'],format="%Y%m%d")
data_balance['day'] = data_balance['date'].dt.day
data_balance['month'] = data_balance['date'].dt.month
data_balance['year'] = data_balance['date'].dt.year
data_balance['week'] = data_balance['date'].dt.week
data_balance['weekday'] = data_balance['date'].dt.weekday
print(data_balance.head())
total_balance = data_balance.groupby(['date'])['total_purchase_amt','total_redeem_amt'].sum()
total_balance.reset_index(inplace=True)
fig = plt.figure(figsize=(20,6))
plt.plot(total_balance['date'],total_balance['total_purchase_amt'],label='purchase')
plt.plot(total_balance['date'],total_balance['total_redeem_amt'],label = 'redeem')
plt.legend(loc='best')
plt.title("在2013年7月13到2014年9月14的总出入金额")
plt.xlabel('Time')
plt.ylabel('amount')
plt.show()
3.收益表:余额宝14个月内收益率表
4.银行间拆借利率表: 14 个月期间银行之间的拆借利率表
结果表:主要提供对应日期的申购、赎回总额
评估指标:RE
2.竞赛思路
对数据进行分析
3.传统方法
使用xgboost、STL分解进行时序预测
4.深度学习方法
面对时序问题使用LSTM一般都具有较好的效果,LSTM的优势在于1.有效的解决的梯度消失的问题2.,
def create_data(amt):
mid_time = 50
d = []
for i in range(len(amt)-mid_time):
x = amt[i:51+i]
d.append((x.tolist()))
amt_np = pd.DataFrame(d).values
amt_np = amt_np.reshape((101,51,1))
X_train ,y_train = amt_np[:,:50],amt_np[:,-1]
return X_train,y_train
amt = data[:-1]
X_train,y_train = create_data(amt)
def create_model():
model = Sequential()
model.add(LSTM(units=256,input_shape=(None,1),return_sequences=True))
model.add(LSTM(units=256))
model.add(Dense(units=1))
model.add(Activation('linear'))
model.compile(loss='mse',optimizer='adam')
return model
model = create_model()
model.fit(X_train, y_train, batch_size=20,epochs=101,validation_split=0.1)
下面对数据集进行预处理将(条件进行处理),对网络当中的…参数进行设置,
构建模型,开始训练。
结果判断