• log loss与ctr预估


    ctr预估是工业界做推荐、广告等的基本问题,下面以熟悉的推荐场景为例,目标是提高abtest的线上指标,时长、互动和留存,反应到ctr模型的评估指标,可以是auc,logloss,ngcd等,auc反映了模型区分正负例的能力,auc提高不一定对应到线上指标提示,可能只是对item的预估分更准,对一个user来说排序能力并没有提高,这里很有考究,可以看看其他博客。

    通常判断一个模型性能,除了auc、rigloss还要看 calibration,训练数据集的正负里比例和预估分均值是否一致,接近1才认为模型没有问题,比如全体样本的点击率是5%,模型的预估分均值也应该是0.05。calibration对广告做竞价是有明确用处的,在推荐场景只需要排序用处可能不大。
    问题:为什么lr模型的输出均值和真实点击率一致呢?好的模型,拆开各种维度看,比如新用户,操作系统,预估均值都和各维度真实点击率一致。
    困惑的原因是,每个样本的label是0 或 1,甚至相同样本有不同的label。
    解释:这是由 log loss的性质保证的。loss = sum { y log p + (1-y) log (1 -p),p是预估分,yin {0, 1}是label,设想如果有N个样本,其中M个是正样本,如果我们的模型很糟糕,特征只有1个bias,对每个样本预估值是相同的,那么对loss 求极小值就可以得到 p = M/N, 等于真实点击率!

    另外一个问题,为什么分类不用square loss要用log loss?
    看到个两个解释,一个是logloss 如果错误分类的梯度更大,比如label=1,pred接近0,那么梯度绝对值 1/pred 极大,而square loss梯度为 |pred - 1|,可能过小难以收敛;另外一个解释是,

    另外再补充一个问题,工业届系统会用online learning,保证模型实时更新,可以及时捕获用户反馈。为什么online learning每个样本只训练就可以收敛,背后理论是有严格保证的吗?
    思考这个问题后,在深度学习一书的优化那章看到了 机器学习优化与数学的最优化的差异,才豁然开朗。机器学习优化有几个近似,全样本空间预估准确率 <> 测试集准确率 <> 测试集合loss函数最小 <> 训练集loss最小,最优化是直接优化最终目标,无约束凸函数最优解这些的收敛性和收敛速度都是有明确结论的。
    在机器学习用的sgd是简化了计算每次更新的梯度,mini-batch 视作分布的随机采样,计算得到的梯度也是真实梯度的无偏估计。
    online-learning场景适用于训练集数据量很大,一遍也能优化好。

  • 相关阅读:
    python类变量与成员变量,及模块中类变量共享
    python制作GUI界面---搞定软件界面编程
    pycharm运行PyQt5出现错误This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    pycharm安装包下载慢的问题解决
    DNS隧道实验
    关于虚拟机win Server 2003只能打开百度网页其他网页都打不开??
    Python如何将决策树dot文件转化为png文件
    如何将虚拟机win7成功联网
    关于虚拟机win2003忘记登录密码(待解决)
    虚拟机kali忘记密码后问题解决&&kali用桥接模式成功联网
  • 原文地址:https://www.cnblogs.com/lessmore/p/logloss_ctr_predict.html
Copyright © 2020-2023  润新知