正文
很多人会开发模型,但这其实一点用都没有,实习生也会开发模型,稍微会写代码的学过数学的都会开发模型。拿一个现成的数据集,按照某些流程训练一个模型,太容易了。
然后忘了生产。离线做了一堆乱七八糟的特征处理,没想过线上生产的问题,例如
/n
和
/(n-1)
的问题,例如类别变量的
mapping
,例如各种异常值的处理。还有,网格搜索调参,找到了非常离谱的模型结构,其实都是不懂。
怎么解决呢?你得先有这个意识,知就会行,最后通过一致性验证来保证。开发是一套数据处理和模型打分的逻辑,生产是另一套,只有通过真实的样本验证两种打分的一致性,你才能无限接近
100%
地杜绝错误。
异常返回什么,超时返回什么,通过还是拒绝,不同的环节可能都不一样。不是特别强的风险拦截环节其实可以通过,留给决策流中的关键环节去拦截。但关键环节,拿不准的你得拦截。
还有模型所用的字段,解析出现异常,或者接口未查询到,如何处理,不难,但你最好心里有数。
很多时候,你要兼顾某些你当前未知的异常情况,也要优化取数、计算的逻辑,至少得满足超时的性能要求吧。
第三,
数据的存储
,要考虑到数据的分析、利用、排查问题等各种用途。
如果一切都好,模型分是对的,分布是稳定的,效果又好又稳定,业务指标也很好,什么都不做当然也可能没啥问题。但没有人能保证,不,我保证一定不会这样好。
任何环节出现波动,你一定免不了要来分析模型。分布也好,效果也好,意味着线上调用的模型分需要存储。不仅如此,模型分所用到的字段也应该存储。