QBUS6600 Future Financial Value 建模报告的七处小改动
模型比较表顶上加两行参照
你草稿里的模型比较表,我会在顶上加两行。第一行是常数基线,每个训练折用 log(1 + y) 的均值去猜所有人;第二行是一条店长不用模型也会用的经验规则:未来 24 个月的消费等于过去 24 个月的消费。两行和其他模型用同一组 folds、同一个主指标来算。
Model building 这一栏写着 「a high standard of predictive accuracy in line with what is achievable」。只给一个 RMSLE,marker 判断不了它算好还是算差;有了下限和一条现成的规则,你的模型比它们好多少就能直接读出来。和规则差得不多也照写,再补一句模型多出来的准确度落在哪类会员身上,guide 的示例报告里是 T0 前消费过、之后一分没花的那批会员。
同一张表再加一列训练折误差
验证折的 CV 均值和标准差旁边,我会再放一列训练折上的 RMSLE,最后一列写两者的差。树和 bagging 这类模型的训练折误差通常比验证折低很多,差距列出来,你没选它就有了数字上的理由。
这一列对应 rubric 的 「You are not misled by overfitting」。只写「我们用了交叉验证」,marker 只能确认流程存在;训练和验证的差距摆在表里,表下再用一句话点名差距大的那个模型、说明为什么没选它,这句要求就有了证据。
在 log 尺度训练的,算钱用各层实际平均消费
模型在 log(1 + y) 上拟合、再换回金额时,预测会系统性偏低:对数尺度上的平均值换回去接近几何平均,比算术平均小。这份数据约 34% 的会员未来消费为 0,右尾又长,偏差不小。换回金额是单调变换,排序不受影响,金额却不能直接拿来做预算。
我会在诊断一节加一张小表:按预测值分成十组,每组并排写实际平均消费和预测平均消费。表下写它改变了哪个决定:第 4 节估算收入时用每个价值层训练会员的实际平均消费,模型只负责排序。Rubric 要的是 「You note crucial assumptions and whether they are potentially violated」,这张表检验了假设,表下那句话交代检验结果改了预算的算法。
方向和 EDA 相反的系数单独写一段
Ridge、Lasso 这类透明模型的系数里,常有一两个符号和 EDA 看到的方向相反。guide 的示例报告里是跨品类数:单独看,品类越多未来收入越高,进了 Ridge 系数却是负的。我会把这样的系数挑出来写一段:单独看是什么关系,控制了消费金额和频次以后为什么变号,结论因此只能落在特征组上。
这一段同时对上 「You interpret the estimated models」 和 「crucial assumptions」 两句。变号常见的原因是共线性,报一下 VIF 超过 10 的特征有几个,「没有严重共线性」这个假设有没有被违反就有了数字。
数据处理写成四列表,最后一列写不处理会怎样
每个处理决定写成一行,四列是问题、证据(影响的行数或人数)、处理、不处理会怎样。官方材料里就有现成的几行:数据字典写明 Age 是 data extract 时的年龄,比 T0 晚约两年;活动开始于 T0 之后的预约,AttendedInd 是空的;booking 的 Price 是 rate card,不代表付过钱。Dataset explainer 写了 households were kept together in the train/holdout split,用了家庭特征就按家庭分组做交叉验证,否则同一家人分在训练和验证两边,家庭消费会把验证会员的信息带进训练。






