样本缺失处理导致xgboost4j-spark生成模型在线上预测出现的问题追查


啊啊啊,被迫重新营业,最近决定把遇到的一些问题及解决方案放到CSDN上,做简单的记录,至于系统性的知识还是自己搭个博客吧~

问题发现

为了使用样本权重,最近将xgboost4j-spark升级到0.9版本,跑了个模型auc看起来还行,生成的模型放到线上,效果惨不忍睹。不应该啊,于是对比了下线上和线下的打分没有一致,线下用的是xgboost4j-spark的transform进行打分,线上用的是开源的xgboost go版本预测,先定位问题吧。

问题追查

线上模型加载会不会有问题啊?那就再找一个其他版本的xgboost都统一个模型进行打分看看到底是spark的问题还是go的问题。于是找了python版本的xgboost,发现python版本的预测跟go版本是一致的。
这时候开始怀疑spark版本的transform是不是和用native booster存储的模型在某些参数上不一致导致了预测分值不一致。
接着对比了同一个模型在transform和native booster的打分,同一个模型打分居然是不同的。

 /** by native booster **/
    var t1 = samplesForLocal.map(_._1)
    val t2 = samplesForLocal.map(_._2).toIterator

    val dMatrix = new DMatrix(t2)
    val ret = xgbClassificationModel.nativeBooster.predict(dMatrix)
    val nativeResult = t1 zip ret
    println("nativeResult:")
    nativeResult.map{
    x 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值