手上有个项目,预测给某货物定价为某值的时候,某顾客是否购买。第一个目标是看预
测概率的area under a curve,我第一个尝试是logistic regression ,大概在cross
validation数据上正确率85%,AUC也是0.85。用上random forest,能达到两个接近0.
9. 然后我再试着跑xgboost(objective = "binary:logistic"),能做到0.95. 这样
显然xgboost表现最好。
接下来问题来了,假设我们给所有用户同一个定价,要求优化一个盈利最大的定价,盈
利是单位商品的获利乘以顾客可能购买的概率。这个函数不难写,可是如果我用random
forest 或者xgboost的模型,会出现一个问题,就是假如我定价很大的时候,所有顾
客都已经只有很小概率购买(0.01甚至以下),可是这些概率就不变了,不再随定价的
升高而减小。那么随着价格不断抬高,盈利反而会变大,最后在某个高价的情况下,会
成为盈利最大的定价。这显然是不合理的。
如果用logistic regression 的模型,最大盈利的定价是在中间某合理定价上,高价和
低价时候盈利都会很快减小,这个答案看起来合理多了。(这个最优定价还和random
forest 或者xgboost的模型在中间价格时候的最优定价不完全一样。)
我感觉这个问题的原因是,random forest 或者xgboost的目标是把分类分清,那么它
预测概率小于0.5很多的时候,分类已经分清了,所以这两个模型就没有继续降低预测
的概率。random forest和xgboost似乎都是基于树的,主要关注于分类边界情况,对于
extreme cases并不敏感。理论上我可以手动cutoff一下,认为高价或者低价情况的
random forest或者xgboost的模型计算,可是这样形同作弊啊。
求教一下我的理解对不对,已经这种情况下用什么模型更加合理。