威尔·库尔特《趣学贝叶斯统计:橡皮鸭、乐高和星球大战中的统计学》学习笔记(1):以A/B测试为例学习贝叶斯统计

news2025/1/11 20:49:47

主要是新学期的概率论的作业要求:Write a summary (no more than ¾ of a page) of your experience with an application of probability to a real-life situation (e.g., an engineering problem.

–How was probability used to model the phenomena/situation?

–How was it measured?

–Did you perceive any useful outcomes or interesting insights?

基础知识

β分布

β分布 - 知乎 (zhihu.com),入门就是理解概率密度曲线的含义吧。至于说β分布的原理(为什么有效,我还不清楚)。

参数估计(2)正态分布、有先验概率的参数估计 - 知乎 (zhihu.com) 还有这篇也是讲到β分布。

什么是A/B测试?

各公司经常使用A/B测试对产品网页、电子邮件和其他营销材料进行测试,以确定哪种方法对客户最有效。

假设我们想检验的是增加图片对博客的转化率是有帮助还是会拖后腿。此前,每周的邮件都会包含一些图片。在测试中,我们会发送两封电子邮件:一封像往常一样包含图片,另一封则没有图片。这个测试之所以被称为A/B测试,就是因为我们在对一个变量的不同值(这里是有图片和无图片)进行比较,以确定哪一个表现更好。

我们把要进行测试的300人分成A、B两组:A组会收到与往常一样的电子邮件,最上面有一张大图片;B组则会收到没有图片的电子邮件。希望简洁的电子邮件不会让用户认为它是“垃圾”邮件,还能鼓励用户点击其中的内容。

之前我们每周都会群发一次邮件,根据目前得到的数据,我们有以下合理的预期:对任何给定的邮件,用户点击其中链接的概率应该在30%左右。为简单起见,我们将对这两个变体使用相同的先验概率。我们还将选择一个较弱的先验分布,这意味着转化率的概率范围很大。

之所以使用一个弱的先验,是因为我们并不知道自己期望的变体B会表现得怎么样,而且这是一个新的电子邮件活动,所以其他因素也会影响转化率,结果有可能更好也有可能更差。这里,我们将用Beta(3, 7)作为先验概率分布。这个β分布的均值是0.3,且能够表示转化率的概率范围很大。

点击未点击观察到的转化率
A(收到有图片)361140.24
B(没收到图片)501000.33

从上述的结果来看,我们很自然会觉得“收到图片”会降低转化率,但到底是不是这样呢?

我们可以将这两个变体视为想要估计的单独参数。为了得出每个变体的后验分布,需要分别结合它们各自的似然分布和先验分布。

我们已经决定,这些变体的先验分布是Beta(3, 7),它代表了一个相对较弱的信念,即在没有额外信息的情况下,我们对转化率的可能值期望较低。之所以说这是一个较弱的信念,是因为我们并不十分相信某个特定的数值范围,而是考虑了具有高概率的所有可能的转化率。对每个变体的似然,我们也同样使用β分布,其中参数α等于链接被点击的次数,而β则等于链接没有被点击的次数


Beta(α后验,β后验)=Beta(α先验+α似然,β先验+β似然)
因此,变体A用分布Beta(36+3,114+7)来表示,变体B则用分布Beta(50+3,100+7)表示。

显然,我们的数据表明,变体B更胜一筹,因为它有更高的转化率。从之前关于参数估计的讨论中,我们知道真实的转化率只是一系列可能值中的一个。


但如果在处理A时只是我们的运气不好,而其真实转化率实际上要高得多呢?又或者,在处理B时我们只是运气好,而其真实转化率要低得多呢?变体A可能其实要更好,虽然它在我们的测试中表现很差。

所以这里真正的问题是:我们有多确定变体B更好?这正是蒙特卡罗模拟的意义所在

蒙特卡罗模拟

蒙特卡罗模拟是一种利用随机抽样来解决问题的方法。具体到这个例子,我们要从两个分布中随机抽样,每个样本都是根据其在分布中的概率选择的,这样高概率区域的样本就会出现得更频繁

取样的频率越高,就越能准确地判断出在取样的所有情况中,到底有多少种情况下的变体B更好。一旦有了样本,就可以计算变体B更好的情况与所有样本总数的比例,进而得到变体B好于变体A的准确概率。

批注:高中的几何概型就是一种蒙特卡罗方法吧~

在多少种情况下,变体B表现更好?比变体A好多少?

我们可以看上面这个比例:B样本/A样本

变体B有大约25%的概率能比变体A提高50%以上,甚至有不小的概率其转化率是变体A的一倍以上!现在,在选择变体B而不是变体A时,我们可以通过表述“变体B比变体A差20%的概率与它比变体A好1倍的概率大致相同”来解释我们的选择。在我听来,这是一个不错的选择,要比“变体B和变体A之间有统计学上的显著性差异”这样的陈述更能表达我们所掌握的知识。

反思与总结 

  1. 和“贝叶斯”有什么关系?
  2. 如何根据统计学分布来给建议呢?
  3. 待续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1388207.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣刷题(无重复字符的最长子串)

3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是…

【Emgu.CV教程】5.3、几何变换之金字塔变换

这一段文字描述来自百度百科: 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的图像金字塔是一系列以金字塔形状(自下而上)逐步降低,且来源于同一张原始图的图像分辨率…

6、CLIP:连接文本和视觉世界的预训练模型

目录 一、论文题目 二、背景与动机 三、创新与卖点 四、技术细节 模型结构 简易代码 clip实现zero shot分类 五、为什么是CLIP?为什么是对比学习? 六、一些资料 在人工智能领域,文本和图像是两个极其重要的数据形式。传统上,机器学…

python 集合的详细用法

当前版本: Python 3.8.4 简介 Python中的集合是一种无序、可哈希的且不重复的数据类型,用于存储唯一的元素。集合的实现基于哈希表,因此在插入、查找和删除元素时具有高效性能。集合的每个元素都必须是不可变的,可以是数字、字符…

阿里AnyText:多语种图像文字嵌入的突破

模型简介 随着Midjourney、Stable Difusion等产品的兴起,文生图像技术迅速发展。然而,在图像中生成或嵌入精准文本一直是一个挑战,尤其是对中文的支持。阿里巴巴的研究人员开发了AnyText,这是一个多语言视觉文字生成与编辑模型&a…

SpringBoot 全局异常统一处理:BindException(绑定异常)

概述 在Spring Boot应用中,数据绑定是一个至关重要的环节,它负责将HTTP请求中的参数映射到控制器方法的入参对象上。在这个过程中如果遇到任何问题,如参数缺失、类型不匹配或验证失败等,Spring MVC将会抛出一个org.springframewo…

安达发|APS工序排程甘特图功能介绍

工序排程甘特图的主要功能 1. 显示工序时间安排:工序排程甘特图可以清晰地展示生产过程中各个工序的开始时间、结束时间和持续时间,从而帮助企业了解生产过程中各个环节的时间安排。 2. 显示工序进度情况:通过工序排程甘特图,企业…

通过myBatis将sql语句返回的值自动包装成一个java对象(3)

1.如果sql字段和java字段名字不一样怎么办? 之前我们将sql返回值转换为java对象时,每条sql的返回值的字段名和java类中的字段名是一一对应的,ie:sql选择的user有username和password两个字段,java中的user对象也有两个…

开源项目CuteSqlite开发笔记(七):CuteSqlite释放BETA版本啦

经过大半年的开发,CuteSqlite程序代码不知不觉来到了6万行,有效行数4万行,CuteSqlite开发完成了一个小版本,进入下一个阶段,并于2024元旦释放BETA版本,有兴趣的朋友可以下载试用。 GitHub下载https://gith…

Linux系统下编译MPlayer

一、编译MPlayer 在 http://www.mplayerhq.hu/design7/dload.html 下载MPlayer源码 执行命令: tar -xf MPlayer-1.5.tar.xz cd MPlayer-1.5 ./configure --prefix$(pwd)/install --yasm make make install 然后在install/bin目录下即会生成mplayer的可执行文件 二…

基于Java+SSM的技术的社区人口管理系统详细设计和实现【附源码】

基于JavaSSM的技术的社区人口管理系统详细设计和实现 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 …

elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增)

elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增) 1、初始化 RestClient 在 elasticsearch 提供的 API 中,与 elasticsearch 一切交互都封装在一个名为 RestHighLevelClient 的类中,必须先完成这个对象的初始化,…

Vue知识总结-下

VUE-组件间通信 组件的自定义事件 概述:是一种组件间通信的方式,适用于:子组件>父组件使用场景:A是父组件,B是子组件,B给A传递数据,那么需要在A组件中绑定自定义事件(事件的回调也在A中)使用步骤 绑定自定义事件: 第一种方式…

2024年AMC8历年真题练一练和答案详解(9),以及全真模拟题

“熟读唐诗三百首,不会作诗也会吟”,反复做真题、吃透真题、查漏补缺并举一反三是在各类考试、比赛中得高分的重要学习方法之一,参加AMC8竞赛也是如此。 六分成长继续为您分享AMC8历年真题,最后几天,通过高质量的真题来体会快速思…

dp--62. 不同路径/medium 理解度A

62. 不同路径 1、题目2、题目分析3、复杂度最优解代码示例4、抽象与扩展 1、题目 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1&…

Rust-NLL(Non-Lexical-Lifetime)

Rust防范“内存不安全”代码的原则极其清晰明了。 如果你对同一块内存存在多个引用,就不要试图对这块内存做修改;如果你需要对一块内存做修改,就不要同时保留多个引用。 只要保证了这个原则,我们就可以保证内存安全。 它在实践…

IOC之Spring统一资源加载策略

前言 在学 Java的时候,我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Resource Locator),但是我们知道它的实现基本只限于网络形式发布的资源的查找和定位。然而,实…

Linux环境搭建FastDFS文件服务器(附带Nginx安装)

本文主要介绍在linux服务器如何搭建FastDFS文件服务器。大概分为9个步骤,由于内容较为繁琐。下面带你入坑! 首先简单介绍一下FastDFS是淘宝资深架构师余庆老师主导开源的一个分布式文件系统,用C语言编写。适应与中小企业,对文件不…

【教3妹学编程-算法题】3008. 找出数组中的美丽下标 II

3妹:呜呜,烦死了, 脸上长了一个痘 2哥 : 不要在意这些细节嘛,不用管它,过两天自然不就好了。 3妹:切,你不懂,影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊, 工作…

Python - 深夜数据结构与算法之 LRUCache

目录 一.引言 二.LRU Cache 简介 1.实现特性 2.工作流程 三.LRU Cache 实战 1.HashMap ListNode 2.OrderedDict 四.总结 一.引言 LRU 即 Least Recently Used 意为最近使用,它是一种局部 Cache 的缓存方法,用于存储最近使用的元素,…