最近在极客时间学习“程序员的数学基础课”,整理学习笔记如下。

机器学习有不同的算法,如朴素贝叶斯、决策树等,每种算法都会产生不同的效果,如何量化地评价各种算法的结果?

互联网公司一般通过用户的在线行为来测试算法的效果,这种测试有一个问题是如何排除非测试因素的干扰。

图片来源极客时间“程序员的数学基础课”

如上图转换率在2016年1月12日有一个突增,假如当天上线了一个新的算法A,那转化率一定是上线的新算法A造成的吗?现实结果是不一定,2016年1月12日可能是有一个促销打折活动导致转化率上升。假如我们取消1月12日上线的技术方案,转换率用虚线表示,如下图所示。

图片来源极客时间“程序员的数学基础课”

由图可知,取消技术方案A之后,转化率反而上升了,说明技术方案A并不会导致转换率的上升。简单的在线测试可能会导致错误的结果,我们需要一个更健壮的A/B 测试。

所谓A/B测试,就是为同一个目标设置两个或多个测试方案,一部分用户使用测试方案A,另一部分使用测试方案B,最后比较测试方案A的结果和测试方案B的结果,看那两种测试方案好。

那怎么评价A、B两个方案那个更好呢?假如取两种方案的平均值是否可以呢?

我们先看两张正态分布的图

图片来源极客时间“程序员的数学基础课”

图片来源极客时间“程序员的数学基础课”

由上图我们可以知道A的平均值u1,B的平均值为u2,u1<u2,而下图我们会得出相反的结论,原因是采样得到的数据无法反映整体的分布。

因此简单地采用平均值会得出错误的结论。

实际实践中我们会采取统计显著性检验的方式来评价多个方案的结果。为了介绍假设检验,先介绍几个基本的概念。

显著性差异

由上文中两个正太分布图我们可以知道,导致数据差异的两种原因。

第一种是分布导致的差异,A分布的均值小于B分布,方差相差不大,那么分布A随机产生的数据大概率小于分布B随机产生的数据。

第二种是有采样误差导致的差异,也就是说采样数据无法反映数据的整体分布。上文中采样的十个数据导致的误差。

我们把由第一种原因导致的差异称为“显著性差异”,第二种原因导致的差异我们称“无显著性差异”。

显著性差异就是研究多组数据间的差异是由数据分布导致的还是采样导致的。

我们需要区分“差异具有显著性”和“具有显著差异”,前者指的是数据分布导致的差异,后者指的是指标意义上相差较大。

统计假设检验和显著性校验

统计假设检验就是事先对随机变量的参数或整体做出假设,然后利用样本信息来判断假设是否合理。统计学上,这种假设称为原假设或零假设H0,其对立假设为H1。如果通过样本信息判断出H0不成立,那么可以推断出H1成立。

假设检验的一般步骤是 先假定原假设成立,然后计算其会导致什么结果。若在单次实验中产生了小概率事件,则拒绝原假设,接受其对立假设,如果没有产生小概率事件,则不能拒绝原假设。

什么是小概率事件呢?通常把产生概率小于0.05的事件称为小概率事件,当然根据实际需要这个值也可设置成0.1、0.001。统计学上,我们称这个概率为α,称为显著性水平。

显著性检验是统计假设检验的一种,显著性检验可以帮组我们来判断多组数据之间的差异,是由数据分布导致的“必然”还是采样导致的“偶然”(必然与偶然与显著性水平α有关)。显著性假设检验先假设数据分布之间没有差异,如果样本发生的概率小于显著性水平α,则小概率事件发生了,拒绝原假设,也就是认为多组数据之间有分布差异,如果样本发生的概率大于显著性水平,则接受原假设,认为多组数据之间没有分布差异。

P值

已经定义了显著性检验和显著性水平,那么如何为多组数据计算他们之间差异的显著性?我们用P值(P-value)来表示。P是Probability的简称,即原假设H0为真时,样本出现的概率。也就是我们观察到的样本数据符合原假设H0的概率。

如果P值特别小,则认为样本值与假设H0的期望有很大偏差,可以拒绝原假设。P值越小,差异越具有显著性。反之,则接受原假设。

在显著性检验中,原假设是认为多组数据之间无显著性差异,来源于同一个分布,如果计算的P值很小,则我们有理由拒绝原假设,认为多组数据来源于不同的数据分布。实际中,我们计算出P值,然后与显著性水平α进行比较,从而决定是否接受原假设。

本次我们仅仅介绍了统计假设检验的相关概念,下篇我们将介绍具体的统计假设检验方法 方差分析(F检验)

显著性校验与A/B测试相关推荐

  1. dnscat使用——整体感觉这个工具不完善,失败率很高,传文件时候没有完整性校验,我自己测试时通过域名转发失败,可能是其特征过于明显导致...

    git clone https://github.com/iagox86/nbtool make 然后就可以按照下面的官方说明进行操作了. 我的感受:整体感觉这个工具不完善,失败率很高,传文件时候没有 ...

  2. SAP中的发票校验容差控制测试

    在SAP采购业务中,基于收货的发票校验在实际应用中,出现差异的情况比较常见.其差异是指采购订单中价格和实际收到发票中价格之间的差异.这可能来源于价格变动,汇率变动或业务情形变动产生的附加费用等.在SA ...

  3. 白噪声校验matlab,白噪声的测试MATLAB程序.doc

    白噪声的测试MATLAB程序 白噪声的测试MATLAB程序 学术篇 2009-11-13 22:18:03 阅读232 评论0 ??字号:大中小?订阅 clear; clc;%生成各种分布的随机数x1 ...

  4. AB测试平台的那些事

    最近一段时间在负责公司AB测试平台的建设过程中,调研了很多竞品的通用做法,其中涉及到的数据整体解决方案,包括AB测试数据采集与数仓模型.AB测试指标建设.AB测试可视化方案等,借此机会我把自己总结下来 ...

  5. 组合使用Laravel和vfsStream测试文件上传

    核心要点 \ 在应用开发中,测试是很重要的,在诸多的开发工具中,测试驱动开发是很伟大的一项: \ 测试文件上传并不像人们想象的那么简单: \ 目前,有很多很棒,但不为大家所熟知的测试工具: \ Lar ...

  6. 使用Struts2验证框架实现输入校验

    学习了<Struts2权威指南>中关于Struts2的输入校验,自己动手测试了一把,也遇到一些问题,在这里记录一下.直接看代码: login.jsp [xhtml] view plainc ...

  7. oxford5k和paris6k数据集介绍_sklearn函数:KFold(分割训练集和测试集)

    上一篇介绍了train_test_split函数: 橘猫吃不胖:sklearn函数:train_test_split(分割训练集和测试集)​zhuanlan.zhihu.com 主要场景是,我们想要将 ...

  8. 测试面试题集-2.测试用例设计

    ------·今天距2020年67天·------ 这是ITester软件测试小栈第67次推文 大家好 我是coco小锦鲤 上周五给大家分享了测试基础理论题 这个周五给大家分享测试用例设计题 测试用例 ...

  9. WEB测试—功能测试

    1. 链接测试        1.1 测试点: 是否添加链接 链接页面是否存在 链接页面与需求是否一致:页面的正确性.打开方式 等              一般,该链接测试在集成测试阶段(页面均开发 ...

最新文章

  1. android相对布局代码,Android基础_3 Activity相对布局(示例代码)
  2. 被新基建点名的大数据,有哪些书最值得读?
  3. 大幅减少GPU显存占用:可逆残差网络(The Reversible Residual Network)
  4. android androidruntime java,java – Runtime.exec():在Android中重启?
  5. 笨办法学 Python · 续 第一部分:预备知识
  6. at24c16如何划分出多个读写区_漫话:如何给女朋友解释为什么Windows上面的软件都想把自己安装在C盘...
  7. SQLi LABS Less-8 布尔盲注
  8. visio 绘图矢量图素材网站
  9. 保存为UTF-8格式的Txt文件
  10. XRD测试的68个问题(四)
  11. 一文看懂常见域名后缀的含义
  12. 阿里云服务器租用价格表,阿里云服务器优惠
  13. Windows系列操作系统注册表的组成与分析(转)
  14. html实现播放暂停,html如何实现播放和暂停
  15. 一篇很哇塞的MyBatis入门到精通
  16. 为创业者搭建梦想舞台,让技术与创新说话|腾讯数字安全创新大赛 · 嘉宾访谈
  17. 分析pc计算机的性能方面,《腐烂国度2》PC性能表现分析 中档电脑轻松驾驭
  18. 快速傅里叶变换FFT进行频谱分析(matlab)
  19. Fabric单机多节点网络部署方案
  20. web前段网图分类规划

热门文章

  1. 日志logger的使用
  2. Python+requests 有道翻译接口 翻译中英文
  3. Gatling实时监控配置
  4. windows下虚拟环境的安装与使用
  5. 软件测试面试linux笔试题及答案,软件测试人员面试笔试题及答案
  6. 微信小程序 实现地图
  7. 一些在线系统的计时操作的实现(spring-boot计时器使用,时间戳比较先后)
  8. addsectionpic.java_python基础21——json/piclkle模块configparser模块hashlib模块subprocess模块...
  9. c语言换行(c语言换行是什么意思)
  10. 千万不要和一种编程语言厮守终生