02标准建模流程:模型构建

To DN

1.模型构建

1.1 算法选择

常用分类算法:逻辑回归、xgboost和lightgbm

1.2 损失函数选择

对于回归问题常选择MSE和MAE,本节重点讲解分类问题的损失函数
● 二分类问题
log损失函数(log-loss)结果能非常好地表征概率分布。因此在很多场景,尤其是多分类场景下,如果我们需要知道结果属于每个类别的置信度,那这个损失函数很适合。缺点是它的健壮性没有那么强。在lightgbm中可以令objective=binary,调用二分类的log-loss
● 多分类问题
在lightgbm中可以令objective=softmax即可
● 交叉墒 cross-entropy
二分类和多分类问题均可使用,在lightgbm中可以令objective=cross_entropy即可
注:对数损失函数和交叉熵损失函数应该是等价的,因此在实际项目中选其一即可,证明见:https://zhuanlan.zhihu.com/p/58883095

1.3 调参思路

调参可用随机网格搜索
● xgboost调参:
○ 保持learning rate和其他booster相关的参数不变,调节和estimators的参数。learing_rate可设为0.1, max_depth设为4-6之间,min_child_weight设为1,subsample和colsample_bytree设为0.8 ,其他的参数都设为默认值即可。
○ 调节max_depth 和 min_child_weight参数,首先,我们先大范围地粗调参数,然后再小范围地微调。
○ gamma参数调优
○ subsample和colsample_bytree 调优
○ 正则化参数调优,选择L1正则化或者L2正则化
● lightgbm调参:
○ 参考资料:https://blog.csdn.net/u012735708/article/details/83749703
○ 具体代码见:https://creditx.yuque.com/it4hgz/bb8t41/grzacv的《机器学习》章节

2 模型评价

一般根据不同的业务场景,会选择不同的评价指标,常见的评价指标如下:

2.1 KS值

KS值越大,表示模型能够将正、负样本区分开的程度越大。通常来讲,KS>0.2即表示模型有较好的预测准确性。

2.2 ROC曲线和AUC

我们建立ROC曲线的根本目的是找寻Recall和FPR之间的平衡,让我们能够衡量模型在尽量捕捉少数类的时候,误伤多数类的情况会如何变化。曲线越靠近左上角越好,越往下越糟糕,曲线如果在虚线的下方,则证明模型完全没法使用。如果曲线越靠近右下角说明模型的预测结果与真实情况完全相反,此时只要手动将预测结果逆转即可,最糟糕的情况是,曲线位于图像中间,和虚线非常靠近,此时我们就拿它没啥办法。
AUC量化了ROC曲线下方的面积,这个面积越大,代表ROC曲线越靠近左上角,模型越好,即AUC越接近于1,模型效果越好。

2.3 F1-score

同时兼顾精确度和召回率,因此我们追求尽量高的 F1 measure,能够保证我们的精确度和召回率都比较高,即不在区分负样本的同时又不误伤正样本,F1-score越接近1,模型效果越好。

3 常见问题

3.1 标签泄漏

不要把标签当作特征输入模型,例如要预测用户最近三天内的消费额,不要把这三天的消费额放入x中。

3.2 模型训练效果很差

通常是模型特征没做好,没有挖掘出更有价值的特征,也不排除数据质量很差的可能性。所以这个时候应该从数据和特征两方面入手,首先重新做特征工程,然后尝试扩充数据集。

3.3 训练集效果好,跨时间测试效果不好

如果测试集和跨时间测试效果都不好,说明这是一个过拟合问题,可以尝试减少模型复杂度,如减少特征维度或者减少数模型的深度等

3.4 训练集和跨时间测试效果都很好,上线后效果不好

这种情况仍不排除过拟合的嫌疑,可以再取出一部分更‘新’的数据集来训练。还有一种可能是线上模型的特征做错了,和线下的特征逻辑不一致。

3.5 上线后效果好,几周之后模型效果逐渐降低

可以认定为特征稳定性问题,解决方案聚焦在特征的跨时间稳定性上。

3.6 没有明显问题,但模型效果逐月降低

目前比较常规的解决方法是通过频繁迭代来更新模型,只要一直使用比较新的样本,就可以保证在未来的几个月模型效果让人满意。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值