python - XGBoost,处理贷款数据集的连续和固定数据
问题描述
背景:
我正在使用 XGBoost 开发一个模型来预测特定贷款是否会违约。我现在已经包含了 Fico 分数的时间序列数据,以及随时间变化的其他变量。因此,我有 13,202 笔独特的贷款,但有超过 300,000 行包含可变和固定数据。
问题:
鉴于我有随时间变化的数据和一些将在整个时间保持固定的数据,例如房产的地块大小和平方英尺,XGBoost 可以区分固定数据和可变数据的混合吗?此外,当将我的数据拆分为训练和测试集时,他们这样做的方式是否可以使贷款本身被相应地拆分,而不仅仅是行?
解决方案
建立机器学习模型进行预测的方法有很多种,每种方法都有优缺点。
但是,我的原则是,无论我做什么以及如何生成新功能,我都不会改变数据的粒度。例如,在这种情况下,如果我预测贷款是否会违约,那么我的行将是唯一贷款,在我的训练/测试数据中不会出现多次贷款。
这导致您应该如何生成新功能。您提到您拥有与时间序列相关的数据(即每笔贷款在不同时间点的特征值)。此时我可能会做的是水平扩展数据而不是垂直扩展。
我会做类似的事情:
loan_id feat1_t1 feat1_t2 feat1_t3 feat2 ...
1 5 7 8 0.2 ...
这样,我仍然为每个loan_id 保留 1 行。feat1
是在不同时间点收集的变量,因此_t1
和。对于固定的变量,我将只有 1 列(即)。_t2
_t3
feat2
希望这能回答你的问题。
推荐阅读
- javascript - 在 vue 道具上绑定 sass 变量
- loops - 在 defmacro 中使用循环
- c# - 使用 AutoMapper (.NET) 将展平对象映射到嵌套对象
- r - R dplyr 计算组和列的百分比
- javascript - 关于 Reactstrap 安装
- haskell - 将 `a -> Maybe b` 函数应用于 `Maybe a`
- algorithm - 寻找 f(x) = a*min(b, x) 形式的函数最大值的算法?
- python - 在sqlite Db中输入数据时,for循环在python shell中不起作用
- python - pygame:屏蔽非图像类型的表面
- javascript - 如何将 PHP 变量传递给外部 javascript 文件