我正在尝试在 R 中使用 XGBoost 来训练一个模型,该模型使用以前日期的所有数据以及当前日期的两个分类变量 (Cat1和Cat2) 作为预测变量来预测固定数量的目标变量。原始数据采用以下格式:
╔═════════╦═════════╦══════════╦══════╦══════╦══════╦══════╗
║ Target1 ║ Target2 ║ Date ║ Cat1 ║ Cat2 ║ Var1 ║ Var2 ║
╠═════════╬═════════╬══════════╬══════╬══════╬══════╬══════╣
║ 1 ║ 2 ║ 01/01/20 ║ A ║ B ║ 3 ║ 4 ║
║ 5 ║ 6 ║ 02/01/20 ║ C ║ D ║ 7 ║ 8 ║
║ 8 ║ 7 ║ 03/01/20 ║ A ║ D ║ 6 ║ 5 ║
║ 4 ║ 3 ║ 04/01/20 ║ C ║ B ║ 2 ║ 1 ║
║ ║ ║ ║ ║ ║ ║ ║
╚═════════╩═════════╩══════════╩══════╩══════╩══════╩══════╝
对于数据框的每一行,我将训练数据概念化为如下所示,其中该Train_DataFrame列包含以前日期的所有数据:
╔═════════╦═════════╦══════╦══════╦═════════════════╦═════════╦══════╦══════╦══════╦══════╗
║ Target1 ║ Target2 ║ Cat1 ║ Cat2 ║ Train_DataFrame ║ ║ ║ ║ ║ ║
╠═════════╬═════════╬══════╬══════╬═════════════════╬═════════╬══════╬══════╬══════╬══════╣
║ 4 ║ 3 ║ C ║ B ║ Target1 ║ Target2 ║ Cat1 ║ Cat2 ║ Var1 ║ Var2 ║
║ ║ ║ ║ ║ 1 ║ 2 ║ A ║ B ║ 3 ║ 4 ║
║ ║ ║ ║ ║ 5 ║ 6 ║ C ║ D ║ 7 ║ 8 ║
║ ║ ║ ║ ║ 8 ║ 7 ║ A ║ D ║ 6 ║ 5 ║
║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║
╚═════════╩═════════╩══════╩══════╩═════════════════╩═════════╩══════╩══════╩══════╩══════╝
第一个问题;是否可以将整个数据框作为变量传递给模型?
如果是这样,那么如何以内存有效的方式完成,以避免数据重复?我知道我可以让Train_DataFrame列包含每个“过去”数据的列表,但是,这会导致数据重复和内存使用效率低下。例如,有没有办法让这个列包含一个子设置函数来传递给原始数据框?
还是有更好的方法来解决我可能遗漏的问题?
提前致谢。