Wilson威尔逊平滑

2024-03-11 23:36
文章标签 平滑 威尔逊 wilson

本文主要是介绍Wilson威尔逊平滑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、威尔逊平滑引入的动机

在曝光很少的情况下,计算出的CTR并不真实可靠,而样本数越大,CTR的比例才越准确,更能反应真实情况。

为了衡量样本数对于CTR信区间的影响,我们引入"威尔逊(Wilson)区间"的概念。Wilson区间的含义就是,就是指在一定置信度下,真实的CTR范围是多少。

2、威尔逊平滑公式

p —— 概率,即点击的概率,也就是 CTR 

n —— 样本总数,即曝光数

z —— 在正态分布里,均值 + z * 标准差会有一定的置信度。例如 z 取 1.96,就有 95% 的置信度。

Wilson区间的含义就是,就是指在一定置信度下,真实的 CTR 范围是多少。

3、置信度区间z参数设置

置信度水平与区间的关系如下

4、威尔逊几种实现代码

设置n小于多少时,认定为小样本,下面默认曝光次数小于10000时为小样本。

class WilsonCorrect(object):def evaluate(self, p, n, z=1.96, threshold=10000):score = pp = min(p, 1)if 0 < n < threshold:try:score = (p + z * z / (2 * n) - z / (2 * n) * math.sqrt(4 * n * (1 - p) * p + z * z)) / (1 + z * z / n)except:passreturn score

当ctr大于某一阈值时,直接归0

import numpy as npdef walson_ctr(num_click, num_pv, z=1.96):p = num_click * 1.0 / num_pvif p > 0.9:return 0.0n = num_pvA = p + z**2 / (2*n)B = np.sqrt(p * (1-p) / n + z**2 / (4*(n**2)))C = z * BD = 1 + z**2 / nctr = (A - C) / Dreturn ctr

全走wilson平滑

double walson_ctr(int num_pv, int num_click) {if (num_pv * num_click == 0 || num_pv < num_click) {return 0.f;}double score = 0.f;double z = 1.96f;int n = num_pv;double p = 1.0f * num_click / num_pv;score = (p + z*z/(2.f*n) - z*sqrt((p*(1.0f - p) + z*z /(4.f*n))/n)) / (1.f + z*z/n);return score;
}

5、威尔逊实例

举个例子,有三个广告:
A:点击数   5     曝光数   10
B:点击数   50     曝光数   100
C:点击数   500     曝光数   1000
这三个广告的CTR 都是0.5 ,但是按照实际表现,从置信的角度分析,应该是C>B>A,因为C的样本数更多,可信度更高。

利用威尔逊平滑后的ctr预估值如下:

walson_ctr(5,10):0.2365895936154873
walson_ctr(50,100):0.40382982859014716
walson_ctr(500,1000):0.4690690341793595

6、参考文献

机器学习之数据处理威尔逊置信区间-CSDN博客

【推荐系统】推荐系统中一些常用的技术方法_威尔逊区间平滑-CSDN博客

这篇关于Wilson威尔逊平滑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799443

相关文章

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

机器学习:opencv图像识别--图片运算、边界、阈值处理、平滑处理

目录 一、图片运算 1.加法 1.+ 2.add 3.加权相加 2.减法 二、图片边界 三、图像阈值处理 四、图像平滑处理 1.生成椒盐噪声 2.滤波器 1.均值滤波 2.方框滤波 3.高斯滤波 4.中值滤波 一、图片运算 1.加法 1.+ 直接将图片上每个像素点的值加上给定值或者两张图片的值相加相加之后超过255的,对256进行取模 import

如何从ActiveMQ平滑迁移到Kafka?

参考视频教程:    **python进阶训练营  ** 直入主题,不讨论为什么迁移,直接谈迁移方案。 既然是从AMQ(AtiveMQ的简称)迁移到kafka,那么迁移过程中肯定需要做到平滑迁移:对于业务没有影响,对于上下游系统没有依赖。由于系统一般会和多个上游,多个下游通过MQ中间件保持依赖关系,迁移的过程中,肯定要做到各个系统上线没有任何依赖。打个比方订单系统发送topic,会

Hinton等人最新研究:大幅提升模型准确率,标签平滑技术 2019-7-8

导读:损失函数对神经网络的训练有显著影响,也有很多学者人一直在探讨并寻找可以和损失函数一样使模型效果更好的函数。后来,Szegedy 等学者提出了标签平滑方法,该方法通过计算数据集中 hard target 的加权平均以及平均分布来计算交叉熵,有效提升了模型的准确率。近日,Hinton 团队等人在新研究论文《When Does Label Smoothing Help?》中,就尝试对标签平滑技术对

es7.13.2平滑下线

临时移除节点 临时移除节点 的步骤是通过更新集群设置来排除特定节点,以便 Elasticsearch 不再在该节点上分配新的分片。你可以执行以下命令来排除 nodename3: PUT /_cluster/settings{"persistent": {"cluster.routing.allocation.exclude._name": "nodename3"}} 这个命令会通知 El

nginx平滑升级与回滚

华子目录 升级实验环境准备测试内容准备实验要求实验步骤1.解压包2.检测1.26版本的环境3.make编译4.备份之前的`nginx`启动脚本5.将1.26中的nginx启动脚本覆盖掉1.24中的6.`kill -USR2 旧主进程pid`7.`kill -WINCH 旧主进程pid` 实验测试 回滚1.`kill -HUP 旧主进程pid`2.`kill -WINCH 新主进程pid`3.

图像处理中锐化和平滑的操作

锐化: 增强高频分量,提高了噪声 平滑: 降低高频分量

Google Earth Engine:对NDVI进行惠特克平滑算法进行长时序分析

目录 简介 函数 ee.Array.identity(size) Arguments: Returns: Array transpose(axis1, axis2) Arguments: Returns: Array matrixMultiply(image2) Arguments: Returns: Image matrixSolve(image2) Arguments