推荐系统中保序回归校准方案

校准目标是:使用户行为的预估值尽可能逼近真实概率值,众所周知,在推荐系统中,很多情况下,我们的点击率通常会被错误的估计(通常会被高估),所以需要进行校准。

一、保序回归

保序:只影响CTR的绝对值,但不影响多条数据CTR之间的相对大小,即不影响商品最终的排序结果
分桶:将所有数据按模型输出的预估值(pCTR)进行分桶,对桶内数据的label(0/1值)求平均,作为近似的真实CTR
回归:通过分段线性回归将pCTR映射到CTR上

二、校准评价指标

1、predict click over click(PCOC)

PCOC指标是校准之后的点击率与后验点击率(近似真实概率)的比值,越接近于1,意味着在绝对值上越准确,大于1为高估,小于1为低估,是一种常用的高低估评价指标。

2、calibration-N(cal-N)

cal-N将样本集合按照自定义规则划分出多个簇分别计算PCOC,并计算与1的偏差作为标准误差。举个例子,将pctr根据值大小划分为多个桶,每个桶为一个簇,计算每个簇的PCOC及其与1的偏差 数学公式:
在这里插入图片描述
参考:https://zhuanlan.zhihu.com/p/460061332

MATLAB 中并没有直接内置 Pool Adjacent Violators Algorithm (PAVA) 的函数来进行保序回归,因为这通常用于数据分析领域,而并非机器学习的常见任务。然而,PAVA 是一种离散优化算法,常用于排序和分配问题。如果你想手动实现这个算法,你可以按照以下步骤来编写一个简单的函数: 1. **创建数据**: 首先,假设你有一个有序的数据集 `y` 和一些连续的输入变量 `x`。 ```matlab % 假设 x 和 y 都是列向量 nObservations = length(y); x = rand(nObservations, nFeatures); % 生成随机输入数据 y = sort(randi([1, 10], nObservations, 1)); % 随机生成1到10的有序标签 ``` 2. **初始化**:设置初始估计和边界条件,比如最小值和最大值。 ```matlab yEstimated = zeros(nObservations, 1); minY = min(y); maxY = max(y); ``` 3. **PAVA 算法**: a. 循环遍历每个观测值 `yi`,找到当前估计 `yEstimated(i)` 对应的下标 `j`(即第一个大于等于 `yi` 的估计值的下标)。 b. 如果 `x(i) < x(j)`,说明当前估计的位置不对,更新估计到 `yi` 的位置。 c. 更新 `j`,如果还有其他更大的估计值。 ```matlab for i = 1:nObservations j = find(yEstimated >= y(i), 1, 'first'); if isempty(j) j = nObservations; end if x(i) < x(j) yEstimated(i) = y(i); else % 如果 x(i) > x(j),说明 j 可能不是最优的下标,需要继续搜索 while j > 1 && x(i) < x(j - 1) j = j - 1; end yEstimated(i) = y(j); end end ``` 4. **结果检查**:最后,确保排序正确。 ```matlab if all(diff(sort(yEstimated)) == 1) disp('PAVA算法成功实现了保序回归!'); else disp('PAVA算法未能完全实现保序回归,检查算法是否正确执行.'); end ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值