IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 模型纠偏之保序回归 -> 正文阅读

[人工智能]模型纠偏之保序回归

模型纠偏背景

广告系统和推荐系统有个显著的不同,广告模型要求预估值绝对的准确,而推荐模型大部分只要求序一致就行,主要是因为广告的模型设计到计费逻辑,所以需要保证预估绝对值的准确性,模型层面上,可以尽量保证特征、数据样本要做到准确,尽管如此,仍然模型可能存在预估的偏差,那么在模型层面之外,就需要一个更加强有力的纠偏策略,这也是本文介绍的点
reference

本文主要参考

[1]Predicting Good Probabilities With Supervised Learning
[2]ACTIVE SET ALGORITHMS FOR ISOTONIC REGRESSION; A UNIFYING FRAMEWORK
[3]1.15. Isotonic regression

两种纠偏方法

Platt Calibration

对于某个模型输出值f(x),platt calibration的方法是将f(x)当做输入,再去训练交叉熵模型
?在这里插入图片描述
f为原始模型预估值,A和B为训练参数
?在这里插入图片描述
相当于再套了一层模型来做参数调整

保序回归 Isotonic Regression

保序回归问题定义:
这里用sklearn的定义:
?在这里插入图片描述
上式 w i w_i wi? 为样本i的权重, y i y_i yi? 为样本真实值(实际一般是后验), y i ^ \hat{y_i} yi?^? 为要求解的值, x i x_i xi?为样本i的模型预估值,需要保证的是对于任意的 x i ≤ x j x_i \le x_j xi?xj?都有 y i ^ ≤ y j ^ \hat{y_i} \leq \hat{y_j} yi?^?yj?^? 这也就是保序的由来
保序的场景:在广告系统中,模型预估值会作用到后面的ranking排序,对于一个pv有n条候选,会预估出n个预估值 x i x_i xi? ,同时会有对应的n个历史统计后验值 y i y_i yi?(一般是离线统计存在redis或者其他的存储介质里),保序回归需要在不能影响模型预估的序的情况下,做到纠偏值 y i ^ \hat{y_i} yi?^? 尽量接近后验 y i y_i yi?
求解方法
求解上述问题的方法又多种,这里介绍常见的一种,称之为PAVA的算法(reference[2]),PAV求解步骤如下
?在这里插入图片描述

翻译成人话,举个例子
5个样本,模型 x i x_i xi? 预估值分别是 0.1 0.2 0.3 0.4 0.5,假设样本 w i w_i wi? 权重都是1,真实后验 y i y_i yi? 值是 0.3 0.4 0.2 0.0 0.6,求解步骤如下:

  • 对元组 ( x i , y i ) (x_i,y_i) (xi?,yi?)先按照 x i x_i xi?从小到大排序(以增序为例)
  • x 0 x_0 x0? 对应的 y 0 y_0 y0?开始,观察其后面的后验值是否大于前面,观察到0.3<0.4是递增序,那么 y i ^ \hat{y_i} yi?^?=0.3记为第一个 b l o c k 0 block_{0} block0? ,同时将索引移动到 x 1 x_1 x1?
  • 发现0.2<0.4, 则将 y 1 y_1 y1? y 2 y_2 y2? 都记为 b l o c k 1 block_{1} block1?,计算 b l o c k 1 block1 block1的平均值为0.3(如果权重不是1的话,那么计算加权平均值),再往后面观察,发现0.1仍然小于0.3,那么将0.1 也加到 b l o c k 1 block1 block1中,同时重新计算平均值为0.2,继续观察0.2<0.6,则 b l o c k 1 block1 block1停止拓展,其预估值为0.2
  • 继续移动索引,到0.6,因为是最后一个元素且是新的 b l o c k block block,则 b l o c k 3 block3 block3为0.6
  • 现在有3个 b l o c k block block,每个 b l o c k block block对应的值为0.3 0.2 0.6,显然仍然需要继续计算,重复上面计算过程最终会得到2个 b l o c k block block,第一个 b l o c k block block包含前4个元素,值为0.225,第二个 b l o c k block block包含一个元素,值为0.6

代码验证一下:

from sklearn.isotonic import IsotonicRegression
from matplotlib.collections import LineCollection
x = [0.1,0.2,0.3,0.4,0.5]
y = [0.3,0.4,0.2,0.0,0.6]
ir = IsotonicRegression()
y_ = ir.fit_transform(x, y)
y_
array([0.225, 0.225, 0.225, 0.225, 0.6 ])
其纠偏图如下
?在这里插入图片描述

最后补充一个比较生动展示纠偏过程的动图,作为总结(图片来自Isotonic Regression,非营利性目的使用,若有侵权,请联系该账号简介中的邮箱,速删 ):
?

在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:28:52  更:2022-02-28 15:32:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:36:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码