为您推荐:
精华内容
最热下载
问答
  • 5星
    7.55MB shaoyezhangliwei 2021-08-11 15:56:51
  • 5星
    7.95MB ZG991205 2021-06-25 09:31:35
  • 5星
    12.14MB bala5569 2021-01-08 02:31:15
  • 5星
    642KB HAIIAKU 2021-08-12 11:50:37
  • 5星
    584KB LILIXING_COM 2020-11-28 17:07:48
  • 5星
    50.85MB l2641535603 2020-12-29 20:29:19
  • 5星
    11.36MB weixin_47202652 2020-11-16 16:03:08
  • 5星
    261KB LILIXING_COM 2020-11-14 12:22:19
  • 而以特殊字符开头命名的文件,一般都有特殊的含义和用处。 资源的字母名称必须全为小写。 在某些大小写敏感的操作系统中,当文件通过工具压缩混淆后,大小写不同导致引用文件不同的错误,很难被发现 需要对...

     

    1. 引言

    1.1  编写目的

    这是一份旨在增强团队的开发协作,提高代码质量和打造开发基石的编码风格规范。目前其中包含了HTMLJavaScript css/scss 几个部分。

     

    1.2  项目背景

    随着IT信息化的高速发展,IT系统已经成为各行业的重要资产与重要保障。业务持续性无中断要求对IT管理提出了更高的诉求。对于IT系统的运行维护已经成为了各行各业各单位领导和信息服务部门普遍关注的问题。随着技术的发展,IT的运维管理已经从系统化、集约化、数据化向着智能化发展。

    高昂的运维成本,逐年增加的报告文档,知识体系的共享缺乏,重复的日常检查,没有权威的问题解决方案可查询……这些日益突出的繁琐问题,也召唤着自动化运维系统的诞生。

     

    1.3  定义

    1.3.1  运维

    运维一般是指对大型组织已经建立好的网络软硬件的维护,其中传统的运维是指信息技术运维(IT运维)。

    运维的最终结果是对软件运行中各种性能的维护。

     

    1.3.2  采集

    运维一般是

     

    【列出文档中用到的专有术语的定义和缩写词的原文】

     

    1.4  参考资料

    【可包括:

    A、项目经理核准的计划任务书、合同或上级机关的批文

    文档所引用的资料、规范等;列出这些资料的作者、标题、编号、发表日期、出版单位或者来源】

     

    1. 一般规范

    2.1  适用范围

    可应用在HTMLJavaScript css 上的通用规则。

    2.2  通用规则详情

    2.2.1  文件/资源命名

    • web项目中,所有的文件名应该遵循同一名名约定。
    • 请确保文件命名总是以字母开头而不是数字。而以特殊字符开头命名的文件,一般都有特殊的含义和用处。
    • 资源的字母名称必须全为小写。

    在某些大小写敏感的操作系统中,当文件通过工具压缩混淆后,大小写不同导致引用文件不同的错误,很难被发现

    • 需要对文件增加前后缀或特定的扩展名(比如 .min.js, .min.css),抑或一串前缀,建议使用点分隔符来区分

     

    实例

    不推荐

    MyScript.js

    myCamelCaseName.css

    i_love_underscores.html

    1001-scripts.js

    my-file-min.css

     

    推荐

    my-script.js

    my-camel-case-name.css

    i-love-underscores.html

    thousand-and-one-scripts.js

    my-file.min.css

     

     

    2.2.2  协议

    • 不要指定引入资源所带的具体协议(http:https:),除非两者都不可用。

    不指定协议使得 URL 从绝对的获取路径转变为相对的,在请求资源协议无法确定时非常好用,而且还能为文件大小节省几个字节。

     

    实例

    不推荐

    <script src="http://cdn.com/foundation.min.js"></script>

    .example {

    background: url(http://static.example.com/images/bg.jpg);

    }

     

    推荐

    <script src="//cdn.com/foundation.min.js"></script>

    .example {

    background: url(//static.example.com/images/bg.jpg);

    }

     

    2.2.3  文本缩进

    一次缩进两个空格

    2.2.4  注释

    注释是了解代码写法和目的的唯一途径。

    最好写你的代码为什么要这么写,背后的考量是什么,而不仅仅是代码都干了什么。

    一些注释工具可以帮助你写出更好的注释。JSDoc  YUIDoc 就是用来写 JavaScript 注释用的。你甚至可以使用工具来为这些注释生成文档,这也是激励开发者们写注释的一个好方法,因为一旦有了这样方便的生成文档的工具,他们通常会开始花更多时间在注释细节上。

    2.2.5  代码检查

    对于 JavaScript,建议使用 JSLint  JSHint

     

    1. 页面的实现规范

    3.1  Html 页面编码规范

    此节为了统一html页面编写规范,使得html 代码简练、清晰,能够页面加载的更为迅速,且能在多种设备中运行良好。

     

    在设计与开发过程中需要遵循的原则

    结构分离:使用html 增加结构,而不是样式内容

    保持整洁:为工作流添加代码验证工具;使用工具或样式向导维护代码结构和格式

    学习新语言:获取元素结构和雨衣标记

    确保可访问

    测试: 是网站在多种设备中能够良好运行

     

    HTML,CSS JavaScript三者的关系

    HTML 是用于调整页面结构和内容的标记语言。HTML 不能用于修饰样式内容,也不能在头标签中输入文本内容,使代码变得冗长和复杂,相反使用CSS 来修饰布局元素和外观比较合适。HTML元素默认的外观是由浏览器默认的样式表定义的,如在Chromeh1标签元素会渲染成32pxTimes 粗体。

    三条通用设计规则:

    使用HTML 来构造页面结构,CSS修饰页面呈现,JavaScript实现页面功能。CSS ZenGarden 很好地展示了行为分离。

    如果能用CSSJavaScript实现就少用HTML代码。

    CSSJavaScript文件与HTML 分开存放。这可有助于缓存和调试。

     

    文档结构方面也可以做优化,如下:

    使用HTML5 文档类型,以下是空文件:

    <!DOCTYPE html>

    <html>

     

    <head>

     <title>Recipes: pesto</title>

    </head>

     

    <body>

     

      <h1>Pesto</h1>

     

      <p>Pesto is good!</p>

     

    </body>

    </html>

     

    在文档起始位置引用CSS文件,如下:

    <head>

      <title>My pesto recipe</title>

     

      <link rel="stylesheet" href="/css/global.css">

      <link rel="stylesheet" href="css/local.css">

     

    </head>

     

    使用这两种方法,浏览器会在解析HTML代码之前将CSS信息准备好。因此有助于提升页面加载性能。

    在页面底部body结束标签之前输入JavaScript代码,这样有助于提升页面加载的速度,因为浏览器在解析JavaScript代码之前将页面加载完成,使用JavaScript会对页面元素产生积极的影响。

    <body>

     

      ...

     

      <script src="/js/global.js">

      <script src="js/local.js">

     

    </body>

    使用Deferasync属性,脚本元素具有async 属性无法保证会按顺序执行。

    可在JavaScript代码中添加Handlers。千万别加到HTML内联代码中,比如下面的代码则容易导致错误且不易于维护:

    index.html:

    <head>

      

      ...

     

      <script src="js/local.js">

     

    </head>

     

    <body οnlοad="init()">

     

      ...

     

      <button οnclick="handleFoo()">Foo</button>

     

      ...

     

    </body>

     

    下面的写法比较好:

    index.html:

    <head>

     

      ...

     

    </head>

     

    <body>

     

      ...

     

      <button id="foo">Foo</button>

     

      ...

     

      <script src="js/local.js">

     

    </body>

    js/local.js:

    init();

    var fooButton =

        document.querySelector('#foo');

    fooButton.onclick = handleFoo();

    验证

    优化网页的一种方法就是浏览器可处理非法的HTML 代码。合法的HTML代码很容易调试,且占内存少,耗费资源少,易于解析和渲染运行起来更快。非法的HTML代码让实现响应式设计变得异常艰难。

    当使用模板时,合法的HTML代码显得异常重要,经常会发生模板单独运行良好,当与其他模块集成时就报各种各样的错误,因此一定要保证HTML代码的质量,可采取以下措施:

    在工作流中添加验证功能:使用验证插件如HTMLHintSublineLinter帮助你检测代码错误。

    使用HTML5文档类型

    确保HTML的层次结构易于维护,要避免元素嵌套处于左开状态。

    保证添加各元素的结束标签。

    删除不必要的代码 ;没有必要为自关闭的元素添加结束标签;Boolean 属性不需要赋值,如果存在则为True;

    <video src="foo.webm" autoplay controls>

    代码格式

    格式一致性使得HTML代码易于阅读,理解,优化,调试。

    语义标记

    语义指意义相关的事物,HTML 可从页面内容中看出语义:元素和属性的命名一定程度上表达了内容的角色和功能。HTML5 引入了新的语义元素,如<header><footer><nav>

    选择合适的元素来编写代码可保证代码的易读性:

    使用<h1>(<h2>,<h3>…)表示标题,<ul><ol>实现列表

    注意使用<article> 标签之前应添加<h1>标签;

    选择合适的HTML5语义元素如<header><footer>,<nav>,<aside>;

    使用<p>描述Body 文本,HTML5 语义元素可以形成内容,反之不成立。

    使用<em><strong>标签替代<i><b>标签。

    使用<label>元素,输入类型,占位符及其他属性来强制验证。

    将文本和元素混合,并作为另一元素的子元素,会导致布局错误,

    例如:

    <div>Name: <input type="text" id="name"></div>

    换种写法会更好:

       1:  <div>

       2:    <label for="name">Name:</label><input type="text" id="name">

       3:  </div>

     

    布局

    要提高HTML代码的性能,要遵循HTML 代码以实现功能和为目标,而不是样式。

    使用<p>元素修饰文本,而不是布局;默认<p>是自动提供边缘,而且其他样式也是浏览器默认提供的。

    避免使用<br>分行,可以使用block元素或CSS显示属性来代替。

    避免使用<hr>来添加水平线,可使用CSSborder-bottom 来代替。

    不到关键时刻不要使用div标签。

    尽量少用Tables来布局。

    可以多使用Flex Box

    使用CSS 来调整边距等。

    CSS

    虽然本文讲解的是如何优化HTML,下面介绍了一些使用css的基本技能:

    避免内联css

    最多使用ID类 一次

    当涉及多个元素时,可使用Class来实现。

    以上就是本文介绍的优化HTML代码的技巧,一个高质量高性能的网站,往往取决于对细节的处理,因此我们在日常开发中,能够考虑到用户体验,后期维护等方面,则会产生更高效的开发。

     

     

     

    1. 数据库的实现规范

    4.1  命名规范

    • 在数据库中,所有的表名应该遵循同一命名约定。
    • 数据库中所有字段都采用小写,如果分割使用 _
    • 所有表示时间格式 常用类型 timestamp , 格式为 yyyy-MM:-dd hh:mm:ss

     

     

    1. 其他说明

    本文档未完成部分还代补充。

     

    转载于:https://www.cnblogs.com/panie2015/p/5630378.html

    展开全文
    weixin_30388677 2016-06-30 16:18:00
  • [半成品]T1320 子矩阵求和 本博客仅为半成品,仅仅是提供一个简单的子矩阵求和的思路。本程序所需时间和所占内存过大,无法应用于有时间限制的实际题目 题目 给出一个n行m列的矩阵,矩阵的每个位置有一个非负整数a...

    作者:波纹飞鱼

    [半成品]T1320 子矩阵求和

    本博客仅为半成品,仅仅是提供一个简单的子矩阵求和的思路。本程序所需时间和所占内存过大,无法应用于有时间限制的实际题目

    题目

    给出一个nm列的矩阵,矩阵的每个位置有一个非负整数a[i][j],有q次询问,每次询问求一个左上角为(a,b),右下角为(c,d)的子矩阵的所有数之和。

    输入格式

    第一行两个整数n,m,表示矩阵的行和列的大小。
    接下来n行每行m个整数,为矩阵内容。
    接下来一行为一个整数q,表示询问次数。
    接下来q行每行4个整数a,b,c,d,含义见题面。

    输出格式

    q行,第i行为第i个询问的答案。

    数据范围

    n×m≤100,000a[i][j]≤1000q≤100,0001≤a≤c≤n1≤b≤d≤m

    解题

    一,流程图

    Created with Raphaël 2.2.0 开始 输入矩阵 输入询问次数 输入子矩阵位置 提取子矩阵 计算子矩阵的所有数之和 输出子矩阵的所有数之和 结束

    二,提取关键点

    1.矩阵的存储
    2.提取子矩阵
    3.计算子矩阵的所有数之和

    三,解决关键点

    1.矩阵的存储

    for循环与for循环嵌套,从第一行开始,依次输入每一个数据,一行输入完毕后换行,开始下一行每个数据的输入,以此类推,直到数据全部输入完毕。

    2.提取子矩阵

    设左上角坐标(x1,y1),右下角坐标(x2,y2
    for循环与for循环嵌套,从左上角坐标的行(x1)与列(y1)开始,依次提取每一个数据,到右下角坐标的列(y2)结束,进入下一行,从左上角坐标的列(y1)开始,依次提取每一个数据,再到右下角坐标的列(y2)结束,以此类推,直到抵达右下角坐标的行(x2)与列(y2),则提取完毕。

    3.计算子矩阵的所有数之和

    定义一个空变量,赋初值0。提取子矩阵时,每提取一个数据,便加上此数据。子矩阵提取完毕后,输出最终变量,并且在输出后归零,进入下一个子矩阵的循环。

    编程

    #include<iostream>
    using namespace std;
    int main()
    {
        long n,m,i,j,k,a[1001][1001],q,z1[100001],z2[100001],z3[100001],z4[100001],d=0;
        cin>>n>>m;
        for(i=0;i<n;i++){
            for(j=0;j<m;j++){
                cin>>a[i][j];
            }
        }
        cin>>q;
        for(k=0;k<q;k++){
            cin>>z1[k]>>z2[k]>>z3[k]>>z4[k];
        }
        for(k=0;k<q;k++){
            for(i=z1[k]-1;i<z3[k];i++){
               for(j=z2[k]-1;j<z4[k];j++){
                d+=a[i][j];
               }
            }
        cout<<d<<endl;
        d=0;
        }
        return 0;
    }
    
    展开全文
    lz28noi 2020-02-13 16:19:51
  •   由于出现误报(false positive),这种经验法则的含义很重要。 区分两种类型的误报非常重要:   1.统计所导致的。 因为我们每年进行数千次实验,误报率0.05意味着给定指标的数百个误报结果,如果使用多个不...

    Kohavi R, Deng A, Longbotham R, et al. Seven rules of thumb for web site experimenters[C]// ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2014:1857-1866.

    1. 小的变化能对关键指标做出巨大的影响( Small Changes can have a Big Impact to Key Metrics)
    2. 改动很少会对关键指标带来大的积极影响(Changes Rarely have a Big Positive Impact to Key Metrics)
    3. 别人的经验对你可能没用(Your Mileage WILL Vary)
    4. 速度非常重要(Speed Matters a LOT)
    5. 增加点击率很简单,但降低放弃率很难(Reducing Abandonment is Hard, Shifting Clicks is Easy)
    6. 避免复杂实验设计的方法:迭代(Avoid Complex Designs: Iterate)
    7. 要有足够多的测试对象(Have Enough Users)

      这些是我们认为在网页优化和受控实验之外的分析具有广泛适用性的原则,然而,它们不是可证明为完全正确的,并且在某些情况下有例外。

    一.介绍

      第二部分主要提供一个控制实验的简要介绍,并介绍数据源和其中使用的KDD过程,第三部分是经验法则,文章的核心,第4部分是结论。
      参考阅读:Online Controlled Experiments at Large Scale

    二.控制变量实验,数据和KDD过程

      参考阅读:Controlled experiments on the web: survey and practical guide
      我们参与了很多对照实验结果最初是不正确的,并花了很大力气理解为什么并纠正它们,很多细节记录在《Seven Pitfalls to Avoid when Running Controlled Experiments on the Web》,《Trustworthy online controlled experiments:Five puzzling outcomes explained》。
      我们想强调一些关于在线示例中使用的数据和KDD过程的事情:

    1. 原始的用户产生的数据(去除机器人)
    2. 随机选取用户样本
    3. 样本数必须足够多,至少几十万
    4. Results noted were statistically significant with p-value<0.05, and usually much lower. Surprising results (in Rule #1)were replicated at least once more, so the combined p-value, based on Fisher’s Combined Probability Test (or meta-level analysis) [19] has a much lower p-value.
    5. We have personal experience with each example, which was vetted by at least one of the authors and checked against common pitfalls. Each experiment ran for at least a week, the proportions assigned to the variants were stable over the experimentation period (to avoid Simpson’s paradox), and the sample ratios matched the expected ratios.

    三.经验法则

      我们现在陈述七条经验法则。前三个是变化的影响对关键指标的影响:1.小变化可能会有很大的影响; 2.变化很少会产生很大的积极影响; 3.你尝试复制其他人出色的结果可能不会一样成功(your mileage will vary)。后四条规则是独立的,没有特定的顺序,每个都是非常有用的且基于多个实验的推广。

    RULE1:Rule #1: Small Changes can have a Big Impact to Key Metrics

      任何上过在线站点的人都知道一点很小的变化都可能有巨大的负面影响。这里我们关注对关键指标正面的影响。这里有很多这样的例子Bryan Eisenberg《How to Increase Convers,虽然我们还没亲眼见过像上面说的那么巨大的不同,但是我们有从很小的变化中,获得巨大的ROI。
      我们还要强调我们正在讨论持续影响,不是昙花一现的情况,或者表现出强烈的新奇/新奇效果《Data Mining and Knowledge Discovery, Controlled experiments on the web: survey and practical guide.》。
    下面是两个反面例子:
      在《 Yes!: 50 Scientifically proven ways to be Persuasive》书中,作者讨论了Colleen Szot如何创作一个电视节目打破了家庭购物频道近二十年的销售记录。 Szot将标准的商业广告更改了三个字,导致购买产品的人数大幅增加:相较于大家都太熟悉的“运营商正在等待,请立即致电”,改为“如果线路忙, 请再次打电话。“作者解释说这是社会现象:观众认为如果电话线路很忙,那么像我这样看着这个电视购物节目的其他人也会打电话。
      如果用户认识到这样的句子经常被使用,那么如上所述的案例效果将只有很短的保质期。 在对照实验中,分析将显示它的效果快速的衰退,这就是为什么我们建议运行实验两周并看是否会发生这样影响。 在实践中,新颖性和首要效果并不常见[11;18]。 我们观察到这样的情况是在推荐系统中,其中多样性本身会导致短期效应,或者when the Treatment utilizes a finite resource。
      例如,当在LinkedIn上改变“你可能知道的人”的算法时,它引入了一次性多样性,这使得新算法在开始时评估得更好(点击次数更多)。 而且,即使算法推荐了更好的结果,但一个人可能知道的人是有限的。 在点击过推荐后,新算法的效果消失。

    正面例子:在新标签中打开新链接。

      共有3个实验。08年8月MSN UK对超过900k名用户进行了一项实验,即在新tab(对旧版浏览器是新窗口)打开hotmail的链接,我们之前曾报道过这个微不足道的变化增加了MSN用户的参与度,触发用户增加了8.9%
      10年6月我们在MSN美国对2700k用户复制了这项实验,结果相似,这就是一个有新奇效果的实验:在向所有用户部署更改的第一天,20%的反馈是关于这一功能,绝大多数都是负面的,在第二周,为4%,第三四周为2%,关键指标的改进是持续的。
      11年4月,MSN美国进行了一项非常大的实验,涉及超过1200万用户,即在一个新的标签/窗口中打开了搜索结果,按用户点击次数计算的参与度增加了5%。这是MSN在提高用户参与度方面实施的最佳功能之一,而且这是一项微不足道的代码修改。
    所有主要的搜索引擎都尝试在新的选项卡/窗口中打开链接,但结果似乎不太有益搜索引擎结果页面(SERP)。

    示例:字体颜色。

      2013年,Bing进行了一系列字体颜色实验,获胜的字体显示在图1的右侧。为了突出差异,进行了三种颜色变化如图所示。做出这样改变的代价只是在CSS文件中更改了几种颜色。结果显示用户更多成功完成任务(the exact definition of success is proprietary),他们的成功时间得到改善,和货币化改善超过1000万美元每年。因为通常会看到这种令人惊讶的结果(这是正确的)会保持怀疑,而这个初步的实验被复制拥有3200万用户的更大样本,并保持了相同的结果。

    示例:在正确的时间提供正确的报价。

      2004年亚马逊主页分为各个插槽,插槽内容自动测试,更好地改进指标的内容会被更多的显示。亚马逊的信用卡优惠赢得了顶级位置,这是令人惊讶的,因为它非常点击率低。它获胜的原因是这个提议是非常有利可图,所以尽管点击率很低,但是预期的价值非常高。但这真的是提供它的合适场所吗?不,此优惠已移至添加到购物车后的一个项目,下面显示了一些简单的数学,突出显示相对于购物车中的商品的节省。用户添加购物车上的商品有明确的购买意图,此优惠来得正是时候。

    示例:反恶意软件。

      广告是一项利润丰厚的业务,用户安装的“免费软件”通常包含污染带有广告的网页的恶意软件。例如,图2显示了Bing的结果页面与具有恶意软件的用户的相似之处,其中多个广告(以红色突出显示)添加到页面中。用户通常甚至没有意识到他们所在的网站上显示的广告数量太多,是他们无意中安装了恶意软件。这个实验对代码来说并不简单,但它相对简单:覆盖修改DOM的基本例程,并限制谁可以修改页面。该实验针对380万触发用户进行了测试,他们有第三方代码修改了DOM,并且对于实验中的用户阻止了更改。结果显示Bing的所有关键指标都得到了改进,包括关键度量指标Sessions / user,即用户来的更频繁。此外,用户在获得搜索结果方面更为成功,更快获得成功,年收入增加了数百万美元。页面加载时间(后面在规则#4中关于速度讨论的关键指标),触发页面数据提高了几百毫秒。
      在Bing,另外两个保密的小变化需要几天的时间才能发展,每年的广告收入增加约1亿美元。微软2013年10月的季度声明指出,“搜索广告收入增长了47%,这主要得益于每次搜索和数量的增长。”这两项变化是这一增长的重要部分。
      鉴于上述例子,人们可能会认为组织应该关注许多小的变化,但正如下一条规则所示,情况并非如此。虽然由于微小的变化而发生突破,但它们非常罕见且令人惊讶:在Bing,或许每500个实验中才有一个符合如此高的ROI和可复制的积极影响。我们也没有声称这些结果将复制到其他领域,我们在下面提出这一点,而是这些和其他易于运行的实验可能值得尝试,万一它们导致突破性的结果呢。
      专注于小变化的风险在于增量主义:组织应该有一个可能具有高ROI的小变化组合,但也有一些大毛茸茸的大胆目标。

    Rule #2: Changes Rarely have a Big Positive Impact to Key Metrics

      胜利是一寸一寸地完成的。 对于像Bing这样的网站,每年进行成千上万的网站实验,大多数都是失败的,那些成功的会提高关键指标0.1%至1.0%。 虽然规则#1中讨论的具有重大积极影响的小变化确实存在,但它们是例外。(PS:张小龙有一句,大致意思是,如果我一直对你的新功能说不行,那么我99%的时间是正确的)
      需要强调的两个关键点是:

      1.关键指标不是某些特定的功能指标,因为它们很容易改进,而是一个全面的组织指标,例如Sessions / user和Time-to-success 。例如,在构建要素时,通过突出显示或将其设置为更大,可以轻松显着增加该功能的点击次数,但提高整体网页点击率,或者改善整体体验才是真正重要的。很多时候,所有功能都在改变或者蚕食页面的其他区域点击。
      2.度量标准应按其细分大小进行稀释。改善小部分的指标要容易得多。例如,团队可以通过引入良好的比较工具来改进Bing上与天气查询或者在亚马逊上购买电视的相关关键指标。但是,关键指标的10%改进必须稀释到整体影响,这会考虑细分市场规模。对1%细分市场的10%改善总体影响约为0.1%(近似因为如果细分市场指标与平均水平不同,影响将会有所不同)。

      由于出现误报(false positive),这种经验法则的含义很重要。 区分两种类型的误报非常重要:

      1.统计所导致的。 因为我们每年进行数千次实验,误报率0.05意味着给定指标的数百个误报结果,如果使用多个不相关的指标,那么效果会加剧。 对于像Sessions / user这样的指标,即使像Bing这样的大型网站也没有足够的流量来提高灵敏度并保证非常低的p值。
      2.那些由于设计不良,数据异常或错误导致的问题,例如仪器错误。

      具有临界统计显着性结果的结果应视为暂定结果,并重新运行以重复结果。 这可以使用贝叶斯规则。 如果真正的积极效果的概率很低,即大多数想法未能在积极的方向上改善关键指标,那么当p值接近0.05时效果真实的概率仍然很低。 形式上,如果 α \alpha α是统计量显着性水平(通常为0.05), β \beta β是II型误差水平(对于80%功率通常为0.2),π是先验概率
    P ( T P ∣ S S ) = P ( S S ∣ T P ) ∗ P ( T P ) P ( S S ) = ( 1 − β ) π ( 1 − β ) π + α ( 1 − π ) P(TP|SS)=P(SS|TP)*\frac{P(TP)}{P(SS)}=\frac{(1-\beta)\pi}{(1-\beta)\pi+\alpha(1-\pi)} P(TPSS)=P(SSTP)P(SS)P(TP)=(1β)π+α(1π)(1β)π

    Ioannidis uses R as the ratio of true relationships to no relationships, so ? = ?/(? + 1) and our formula is equivalent to his Positive Predictive Value.
    25. Why Most Published Research Findings Are False. Ioannidis,John P. 8, 2005, PLoS Medicine, Vol. 2, p. e124.http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124.
    26. Wacholder, Sholom, et al. Assessing the Probability That a Positive Report is False: An Approach for Molecular Epidemiology Studies. Journal of the National Cancer Institute. 2004, Vol. 96, 6.
    http://jnci.oxfordjournals.org/content/96/6/434.long.

      用 α = 0.05 , β = 0.20 \alpha=0.05,\beta=0.20 α=0.05β=0.20,如果我们有之前微软多个实验的平均成功的概率为1/3,那么,给定的统计显着性实验的True Positive的后验概率为89%。 但是,如果规则#1中提到的突破性结果是500分之一,则后验概率下降到3.1%。
      这个经验法则的一个有趣的推论是,跟随尾灯比孤立的创新更容易。 我们能看到,具有统计学意识的公司所引入的特征对我们产生积极影响的可能性更大。 如果Bing的想法成功率约为10-20%,与其他搜索引擎一致,那么实验竞争对手对用户所成功测试和并部署的功能,成功率更高。 这种观察是对称的:其他搜索引擎倾向于测试和部署Bing引入的积极变化。
      随着时间的推移,我们得到的一个最有趣的概括是不要相信那些太好而以至于不真实的结果。 在不同的方面,人体的自然反应不同。 我们倾向于抵制并质疑我们正在尝试的伟大新功能的负面结果,因此我们深入钻探以找到原因。 然而,当效果为正时,倾向于庆祝而不是深入钻探并寻找异常。 当结果非常强烈时,我们学会了泰曼法则《Ehrenberg, A. S. C. The Teaching of Statistics: Corrections and Comments. Journal of the Royal Statistical Society.》:
      任何看起来有趣或不同的数字通常是错误的!
      可以使用贝叶斯定律来解释泰曼法则。我们已经进行了数千次实验,并且知道突破性的结果很少见。例如,很少有实验能够显着改善我们的目标指标-Sessions/user。让我们假设我们在实验中看到的分布是正太的,以0为中心,标准偏差为0.25%。如果实验显示+ 2.0%的对Sessions/user的改进,我们将指出2.0%是“非常有趣”,但也有8个标准偏差,因此排除其他因素的概率为1e-15。即使具有统计上显着的结果,先验对于该结果也是如此强烈,以至于我们避免任何庆祝并且开始努力寻找错误,该错误通常是上述第二种假阳性类型(例如,仪器错误)。 泰曼法则经常适用于?= NP的证明。没有编辑会庆祝这样的提交,反而他们会把它递交给一个审稿人来查出bug,附上“关于你P=NP的证明,第一个大的错误在第X页”。

    示例:Office Online Surrogate指标。

      《 Crook, Thomas, et al. Seven Pitfalls to Avoid when Running Controlled Experiments on the Web.》报道了一个由Microsoft Office Online进行的有趣实验。 该团队测试了,重新设计一个带有强大的号召性用语按钮的页面。 团队想要测试的关键指标是实际购买或购买用户百分比。 但是,要跟踪实际购买需要挂钩到计费系统,这在当时很难。 因此,团队决定假设点击次数*转化率=收入,其中转化率是从点击到购买的比例。
    令他们惊讶的是,每位用户的点击次数减少了64%。 这一令人震惊的结果让他们更深入地了解数据。 事实证明,从点击到购买的稳定转换率的假设是有缺陷的。 显示产品价格的页面吸引更少的点击,但这些用户的质量更高,转化率更高。

    示例:较慢页面中的更多点击次数。

      JavaScript代码被添加到Bing的搜索结果页面。通常这个附加脚本会让一切变慢,所以人们预计会对衡量用户参与度的关键指标,例如每用户点击次数,产生一个小的负面影响。然而,结果显示相反:用户点击更多了。尽管有积极的效果,我们遵循了特曼的定律并解决了这个难题。点击跟踪基于网络信标,而一些浏览器在用户导航时消除了呼叫页面。额外的JavaScript有副作用提高点击跟踪保真度,而非实际用户点击次数有所提高。

    示例:Bing Edge。

      在2013年的几个月内,Bing从Akamai的CDN搬迁到它自己的Bing Edge。在这个时期,流量增加到Bing’s Edge,同时Bing在此期间部署的许多其他的改进。几个团队报告说关键指标有所改善时间:Bing首页点击率正在提高,功能被更多地使用,我们的abandonment rates正在下降。事实证明,这些改进与点击有关跟踪保真度:Bing的Edge不仅提高了页面性能,而且还提高了点击跟踪保真度。为了量化影响,我们运行了一个我们用“替换基于信标的点击跟踪”(一种用于跟踪广告点击的技术,可忽略不计点击丢失)的重定向实验,但每次点击引入减速。结果显示某些浏览器的点击丢失率下降超过60%!随着时间的推移,很大一部分收益实际上是来自点击跟踪的改进。

    示例:MSN搜索转Bing。

      自动建议功能会在用户输入时在搜索框下方显示一个下拉框,其中包含可能的完整句子和变体内容。 MSN的一项实验尝试使用一种新的更好的算法来改进此功能(功能团队始终能够解释为什么新功能在实验之前会更好,但结果往往令人失望)。这个功能取得了巨大的成功,从MSN引用的Bing搜索显着改善。根据这个经验法则,我们进行了更深入的调查,结果发现当用户选择了一个自动建议的选项时,新代码实际上发出了两个搜索(一个总是被浏览器断开,因为只显示了一个SERP)。

      尽管对许多积极结果的解释可能并不像改进是真实的那样令人兴奋,但我们的目标是找到真正影响用户的,并且泰曼法则在多种情况下提高了我们底层的理解。

    Rule #3: Your Mileage WILL Vary

      有许多记录的成功使用对照实验的例子。例如,Anne Holland的“Which Test Won?”(http://whichtestwon.com)有数百个关于A / B测试的案例研究,并且每周都会增加一个新案例。虽然这些是伟大的想法发动机,但这些案例存在一些问题。

      1.质量各不相同。在这些研究中,某公司的某些人报告了A / B实验的结果。它是否经过同行评审?它运行得好吗?有异常值吗? p值是否低(我们已经看到发表的测试的p值> 0.05,通常被认为没有统计学意义)。我们已经警告过有些陷阱《Seven Pitfalls to Avoid when Running Controlled Experiments on the Web》并且许多实验没有正确检查问题。
      2.在一个领域中起作用的内容可能在另一个领域中起作用。例如,Neil Patel建议在广告中使用“免费”一词,并提供“30天免费试用”而不是“30天退款保证”。这些可能适用于某些产品和受众,但我们怀疑结果将因领域而异。 Joshua Porter 提到了在网站上号召性按钮“Get Started Now”,“Red Beats Green”的效果。由于我们没有看到很多带有红色号的按钮的网站,我们认为这不是能够复制得很好的结果。
      3.新奇和首要效果(Novelty and Primacy effects)。如前所述,我们正在寻求持续的改进,许多实验的运行时间不足以检查这些影响。
      4.对结果的误解。效果通常归因于特定因素,或者不了解潜在原因。以下是两个例子;第一个是最早记录的对照实验之一。

    历史实例:缺乏维生素C的医学知识。

      坏血病是一种由维生素C缺乏引起的疾病。 它在16-18世纪杀死了超过10万人,其中大多数是出去长途航行并且在海上逗留的时间长于水果腐烂时间的水手。 1747年,James Lind医生注意到地中海船只缺乏坏血病,并给一些水手橙子和柠檬(实验组),其他人吃了常规饮食(对照)。 实验非常成功,但Lind医生不明白原因。 在英格兰的皇家海军医院,他用浓缩柠檬汁治疗坏血病患者,称为“rob”。他通过加热浓缩柠檬汁,结果破坏了维生素C。他对补救措施失去信心,并越来越依赖放血。 1793年,进行了一次正式试验,柠檬汁成为整个海军日常口粮的一部分; Scurvy很快被淘汰,今天英国水手被称为Limeys。

    示例:速度与更多结果。

      在Web 2.0的会谈中,Marissa Mayer,她描述了一个实验,谷歌将SERP上的搜索结果数量从10增加到30。实验组谷歌搜索者的流量和收入下降了20%。她的解释是该页面花费了半秒钟来生成。性能是一个关键因素,但我们怀疑它只占导致损失的一小部分原因。这有三个原因:

      A.在Bing运行的减速实验仅仅分离了性能因素。数据显示,服务器延迟250毫秒会影响收入约1.5%,点击率降低0.25%。虽然这是一个巨大的影响,但500毫秒将影响收入约3%而不是20%,点击率将下降0.50%,而不是20%(假设线性近似是合理的)。 Bing的早期测试,延迟时间长达两秒,具有类似的点击影响和较小的收入影响。
      B.来自谷歌的Jake Brutlag在博客中发表了一项实验,显示将搜索结果页面减慢100到400毫秒,对每位用户的搜索量产生了可衡量的影响,下降了0.2%至0.6%,与我们的搜索非常一致实验,但与Marissa Mayer的谈话结果相差甚远。
      C.在Bing上进行了一项实验,显示20个结果,而不是10个。通过添加另一个主线广告(使页面加载更慢了),收入损失没有发生。我们认为广告与搜索结果的比率比速度更重要。

      我们对文献中报道的A / B测试的许多惊人结果持怀疑态度。 在查看实验结果时,请问自己应以什么样的信任级别来看。并记住,即使该想法适用于特定网站,它也可能不适用于另一个网站。 我们可以做的最好的事情之一是复制报道的实验(无论成功与否)。 这就是科学实验最好的方式。

    Rule #4: Speed Matters a LOT

      使用控制变量实验评估功能的网站开发人员很快就意识到网站性能或速度是至关重要的。 即使页面性能稍有延迟也可能影响实验中的关键指标。 量化性能影响的最佳方法是使用减速实验来隔离该因素,即增加延迟。 图3示出了描绘时间(速度)和兴趣指标(例如,每页点击率,每个会话的成功率或每个用户的收入)之间的共同关系的图表。 通常,站点越快,度量值越好(在此示例中更高)。
      通过减慢控制的实验,您可以衡量其对关键指标的影响。 关于这样的实验有几个关键点:

      1.减速量化了当前点对关键指标的影响,如图3中的垂直虚线所示。如果站点性能发生变化(例如打开网站更快)或者受众变化(例如更多国际用户) ,影响可能不同。
      2.该实验衡量了减速的影响。 当尝试评估第一个实现效率低下的功能时,这非常有用:比如它将指标M移动了X%并且还使站点减慢T%。 使用减速实验,我们可以估计减速对指标M的影响,从而调高特征X%的影响(假设可加性),从而在有效实施时回答其影响的问题。引用的的原文图片
      3.我们可以评估网站更快对关键指标的影响,帮助我们评估此类工作的投资回报率(ROI)。 使用线性近似(1阶泰勒展开),我们可以假设指标的影响在两个方向上相似(减速和加速)。 如图3所示,我们假设右侧的垂直增量与左侧的垂直增量相似。 通过以不同的减速实验,我们已经确认线性近似对于Bing是非常合理的。

      速度有多重要? Greg Linden分享的在亚马逊,0.1s的减速就使销售额减少了1%。 来自Bing和Google的演讲表明了速度对关键指标的重大影响。《Performance Related Changes and their User Impact.》

    示例:服务器减速实验。

      在Bing 的一个减速实验中,10%的用户减速100毫秒,另外10%减速250毫秒两周。这项对照实验的结果显示,每100毫秒加速可将收益提高0.6%。以下言辞在我们的组织中引起了极大的共鸣(基于将上述内容转化为利润):一名提高服务器性能10毫秒的工程师(这是我们的眼睛眨眼的速度的1/30)带来的收益,超过所需支付给他的工资。每毫秒都很重要。上述实验减慢了服务器的响应速度,从而减慢了页面的所有元素。很自然地假设页面的某些区域更重要。例如,用户无法在不滚动的情况下知道“below the fold低于屏幕”的元素(即在当前窗口中可见的内容之下)尚未加载。是否有一些元素可以延迟显示,而对用户影响很小?以下对照实验表明情况确实如此。

    示例:右窗格的性能不太重要。

      在Bing,右窗格中的一些元素(称为snapshot)被加载得很晚(技术上,即在window.onload事件之后)。最近的一项类似于上述实验的减速控制实验发现,右窗格元素显示有250毫秒时延迟。尽管实验规模接近2000万用户,但它无法检测到对关键指标产生的影响。
      页面加载时间(PLT)通常用于使用window.onload来衡量性能,以标记有用的浏览器活动的结束。但是,该指标在现代网页上存在严重缺陷。正如Steve Souders所展示的,亚马逊页面可以在2.0秒内呈现,但是window.onload事件会在5.2秒时触发。 Schurman 报告说,由于能够逐步渲染页面,所以标题显示更快。相反的情况也适用于Gmail,作为一个很好的例子:window.onload在3.3秒触发,此时只有进度条可见,而上面的内容显示在4.8秒。
      还有其他通常衡量的指标,例如首次结果的时间(例如,在Twitter上发布第一个推文的时间,在SERP上的第一个算法结果),但术语“感知性能Perceived performance”通常用于表示直观想法——用户开始认识到页面已经显示足够了。比起在实践中衡量,感知性能的概念更容易抽象地陈述,并且
    perception.ready()不在任何浏览器的roadmap上。目前已经开发了多个指标来估计感知性能,包括:
      1.Above the Fold Time(AFT),它测量到首版像素完全展示的时间。 需要使用启发式方法来处理视频,动画GIF,旋转图库以及其他动态内容,这些内容会在页面上方更改页面。 可以为“绘制的像素百分比”设置阈值,以避免微不足道的元素延长测量时间。
      2.Speed Index是AFT的概括,是显示页面上可见元素的平均时间。 这不会受到显示较晚的琐碎元素的影响,但仍然会受到动态内容变化的影响。
      3.Page Phase Time and User-Ready Time。 页面阶段时间需要确定哪个渲染阶段满足感知性能,并且阶段由像素改变速度确定。 用户就绪时间测量直到页面的基本元素(为每个上下文定义)可以使用的时间。

      新的W3C标准在最新的HTML标准中提供,它们提供对更细粒度事件的访问,并可能有助于更好地理解性能问题。以上实验都是在PC上进行的,移动设备还有很多需要学习的地方。
      在Bing,我们使用多个性能指标进行诊断,但我们的关键时间相关指标是成功时间(TTS),它可以解决测量问题。对于搜索引擎,我们的目标是让用户更快地完成任务。对于可点击的元素,用户点击结果更快,他们不会在30秒内返回被认为是成功的点击。 TTS作为度量标准可以很好地捕获感知性能:如果它得到改进,那么页面的重要区域会更快地呈现,以便用户可以更快地理解页面并点击。这个相对简单的指标不会受到许多性能指标所需的启发式影响。它对变化非常鲁棒,而且非常敏感。它的主要缺点是它只适用于可点击的元素。对于SERP具有答案的查询(例如,对于“时间”查询),用户可以满意并放弃页面而不点击。

    RULE#5:Reducing Abandonment is Hard, Shifting Clicks is Easy

      Bing在受控实验中测量的关键指标是SERP(搜索引擎结果页面)上的放弃率:从不点击任何链接的用户的百分比。 增加用户参与度或减少放弃被认为是积极的,但这是一个难以改变的指标。 大多数实验表明,从页面的一个区域到另一个区域的点击可能会发生显着变化,但放弃率很少改变或改变很少。
    下面我们分享几个实验的例子,进行了重大改变,但放弃率没有在统计上显着改变:

    示例:右列中的相关搜索。

      从Bing的SERP的右栏中删除了一些相关的搜索,用于超过1000万用户的实验。如果用户搜索“数据挖掘”,Bing通常会显示相关搜索,例如“数据挖掘示例”,“数据挖掘的优势”,“数据挖掘的定义”,“数据挖掘公司”,“数据挖掘软件”等等这些可以帮助用户修改他们的查询(例如改进它)并帮助他们获得更好的结果。在实验中,点击转移到页面的其他区域,但放弃率在统计上没有显着变化(p值0.64)。

    示例:底部广告下方的相关搜索。

      Bing显示内联的相关搜索,如果他们的点击率优于其他的算法结果,则允许这些排得更前。在一项实验中,涉及超过500万用户,将这些相关搜索固定在页面底部,位于底部广告下方。点击这些相关搜索的比率下降了17%,但放弃率在统计上没有显着变化(p值0.71)。

    示例:截断SERP。

      Bing动态调整SERP的大小,并不总是显示经典的十个蓝色链接。 这种变化的动机是测试放弃率的稳定性。 例如下面两个实验:
      1.当查询语句是像“ebay”这样存在深层链接的查询时,顶部块的点击率超过75%。显示此类查询的10个结果几乎没有价值,并且在超过800万个触发用户的实验中,这些的SERP被截断只显示四个算法结果(触发意味着至少有一个查询显示带有深链接块的页面 ),这些页面的放弃率在统计上没有显着变化(p值0.92)。 因此这些页面更快,并且此功能已发布。
      2.当用户从SERP导航,但使用浏览器的后退按钮或重新发出查询返回时,Bing会扩展页面并显示更多结果(14个结果)。在一项有超过300万触发用户的实验中,该页面扩展到了20个结果并删除了相关搜索。指标发生了重大变化,包括:收入减少1.8%,页面加载时间增加了30毫秒,分页减少18%,但放弃率在统计上没有显着变化(p值0.93)。此更改未发布。

    示例:广告背景颜色。

      所有主要搜索引擎都在尝试更改广告的背景颜色。在最近一次超过1000万用户的实验中,实验颜色导致收入下降12%(如果做出这种改变,每年损失超过1.5亿美元)。用户将点击次数从广告转移到页面的其他区域,但放弃率没有统计学上的显着变化(p值0.83)。
      我们已经观察到放弃率改善的情况,例如当我们对相关性进行了重大改进时,以及在规则#1中讨论的反恶意软件中,但这些情况并不常见且变化小于人们的预期。
      这个经验法则非常重要,因为我们已经看到许多实验(在Microsoft,亚马逊和其他人报告),其中模块或小部件被添加到具有相关的有良好点击率的页面。声称新模块显然对用户有利,因为用户点击了。但是,如果模块只是蚕食了页面的其他区域,如上面的例子中所示,只有当这些点击更好时才有用,但是这个更好是为整个网站定义的(例如,它们会带来更高的成功率或购买等等)。换句话说:本地改进很容易,全局的改善要困难得多。

    RULE#6:Avoid Complex Designs: Iterate

      良好的实验设计对于从实验中获得最佳结果至关重要。 R. A. Fisher先生曾经说过“在实验结束后咨询统计学家通常只是要求他进行验尸检查。他或许也可以说这个实验已经死了。“我们的经验是,简单的设计在线上网络中是最好的,并且存在许多陷阱(这句是不是写错了?given the many pitfalls),它们更容易理解,运行健全,因此更值得信赖。复杂的设计通常不仅是不必要的,而且可以隐藏错误。我们分享几个LinkedIn的例子。

    示例:LinkedIn统一搜索。

      在LinkedIn,产品发布通常涉及多个功能/组件。 2013年推出的LinkedIn搜索的一个重大升级涉及自动完成和建议的措辞,最重要的是,它引入了跨不同产品类别的统一搜索。在过去,搜索必须限制在一个方面,无论是“人”,“工作”,还是“公司”。通过统一搜索,搜索框足够智能,可以明白您的查询意图并找到相关结果。然而,这并非全部。搜索落地页上几乎每个组件都被改变,从左侧导轨导航,片段到操作按钮。第一个实验是在所有变化集中在一起并且许多关键指标陷入困境的情况下进行的。这是一个漫长的过程,一次恢复一个功能,以实现某些功能(从最终发布中删除),而不是统一搜索,负责降低点击和收入。恢复这些功能后,统一搜索展现出对用户体验的积极意义并部署到所有用户。

    示例:LinkedIn联系人。

      LinkedIn最近推出了新的联系人页面,帮助人们更好地保持联系。它被认为对用户来说是一个很棒的功能。然而,当从实验中得到结果时,它们看起来很恐怖。该实验的设计非常复杂,很难调查出现了什么问题。首先,该实验旨在仅影响不在白名单中的用户。为了达到这个目的,在实验被触发之前进行了资格检查。其次,根据用户是否属于实验或控制,将触发另外两个可能向该用户显示新联系人页面的实验。复杂的设计留下了许多错误的可能性,并且需要花费数天时间才能确定是否通过资格检查,并出现了以下错误:如果用户曾经看过新功能,则将他/她放在白名单上,该白名单完全从实验中移除。难怪我们看到参与度下降,因为实验用户在一次访问后流失了!
      对于离线实验,相对于设计和分析而言,实验是昂贵的,因此最大限度地利用用户(实验单位)是有意义的。但是,在线我们有连续的用户流,我们可以使用并发设计和运行数百个并发实验,一次测试一个或两个变量。虽然关于多变量测试(MVT)的文献很丰富,而且商业产品也有其MVT功能,但我们通常发现运行简单的单变量(例如,一个特征的A / B / C / D变体)或双变量设计更好。
      运行简单的单变量设计的另一个重要原因是与敏捷软件方法一致并构建最小可行产品( minimum viable products MVP)。相较于为复杂的MVT构建代码,在关键功能准备就绪后立即运行实验。向用户公开新功能总是有重要的经验,例如看到意外的指标改变,获得逐字反馈,发现错误等等。依赖于大量新代码的复杂MVT往往无效,因为代码中存在错误就至少是一个变量。
      我们鼓励我们的工程团队快速部署新代码,并使用实验提供一种曝光控制形式:从小的1%实验开始,然后在关键指标没有严重下降的情况下增大比例。随着敏捷方法现在普遍存在,没有通过对照实验提供的曝光控制,你冒着重复部署的风险,就像Knight Capital所做的那样,在2012年8月造成了4.4亿美元的损失,并抹去了Knight 75%的股票价值(骑士资本做市部门技术升级时出现故障)。

    Rule #7: Have Enough Users

      实验方法通常依赖于,假定为正态分布。众所周知的中心极限定理表明,如果样本量足够大,变量的均值近似正态分布。应用统计书籍会建议少数人通常就足够了。例如,《Applied Statistics and Probability for Engineers.》表示“在许多实际情况下,如果?≥30,无论分布的形状如何,正态近似都会令人满意。”因为我们使用分布的尾部来查看统计显着性,所以更大样本量是必需的。我们在之前的文章《Online Controlled Experiments at Large Scale.》中的建议是,您需要在实验中有“成千上万”的用户; Neil Patel建议每月有10,000名访问者,但该指南应该根据关键指标进行细化。
      给定度量的方差和灵敏度(一个人想要检测的变化量)的最小样本量的公式提供了一个下界(Controlled experiments on the web: survey and practical guide.),但是这些假设均值的分布是正常的。我们的经验是,许多对在线实验关键指标都是偏斜的,可能需要比你想的更高的下限。
      对于每个变量,独立和相同分布的观察的均值具有正态分布,所需的最小数量的经验法则是 355 × s 2 355\times s^2 355×s2,其中?是变量X的分布的偏度系数,定义为
    s = E ∣ X − E ( X ) ∣ 3 ∣ V a r ( X ) ∣ 3 2 s=\frac{E|X-E(X)|^3}{|Var(X)|^\frac{3}{2}} s=Var(X)23EXE(X)3
      我们建议在| skewness | > 1时使用此规则.下表显示了根据此经验法对Bing中的一些指标所需的最小样本量,以及这样的样本量提供的灵敏度(可检测到的百分比变化为80%)。
    指标-偏度-样本大小-敏感度
      在商业网站上,购买/客户的偏差> 10,收入/客户> 30。 该经验法则给出平均值的95%置信区间,使得双尾概率(标称值为0.025)不大于0.03且不小于0.02。 这条规则源于Boos和Hughes-Oliver 的工作《How Large Does n Have to be for Z and t Intervals?》。 长尾分布在Web数据中很常见,并且可能非常偏斜。 在上表中,我们发现Revenue / User的偏度为18.2,因此需要114k用户。 图4显示,当我们仅对100和1,000个用户进行抽样时,样本均值的分布非常偏斜,假设正态性的95%双侧置信区间将错过超过5%的真实均值。 当我们将样本量增加到100k时,样本均值的分布在-2到2的范围内非常接近正常。
    Amazing
      当度量具有较大的偏度时,有时可以转换度量或限制值以减小偏度,以便平均值更快地收敛到正态性。在我们将每个用户每周收入/用户限制为10美元之后,我们看到偏差从18降至5.3并且灵敏度(即功率)增加。对于相同的样本大小,可以检测到限制的每个用户收入比每个用户的收入小30%的变化。
      我们的经验法则评估了使均值分布与正态分布很好地近似所需的用户数量。如果控制和实验预计具有相同的分布,我们可以做出重要建议:确保控制和实验组的大小相同。如果分割的大小相等(例如,50%/ 50%),那么delta的分布将近似对称(在Null假设下它将与零偏度完全对称)并且我们的经验法则不提供有用的下界(我们建议在| skewness |> 1时使用该规则)。功率计算通常会提供样本量的下限。对于具有小样本的偏态分布,可以使用bootstrap技术。

    总结

      我们提出了七个网站实验的经验法则,我们基于成千上万的在线控制实验总结了这些经验,并得到了实例的支持。
      前两个表明小的变化可以产生很大的积极影响,但它们很少见,并且随着时间的推移,通过许多小改进取得了大部分进展。当结果看起来好得令人难以置信时,应用Twyman法则并深入研究,然后再宣布为突破性成果;大多数时候,你会发现它是一个bug。
      第三条规则警告说对“其他地方”声称的结果我们要谨慎。确保复制想法,因为它们可能没有相同的效果(甚至是积极的效果)。
      第四条规则是我们热衷的领域:速度。我们进行了多次实验,更好地理解了性能和关键指标之间的关系,表明服务器速度至关重要;此外,更快地显示页面的关键部分比其他部分更重要,例如侧边栏。尽管我们对此充满热情,但回顾第三条规则,我们怀疑有关性能的一些极端结果。
      第五条规则是一个经验观察,我们怀疑它会随着时间的推移而得到改善,但令人惊讶的是它广泛地存在:改变放弃率真的很难,大多数实验只是改变点击率,所以必须小心局部优化。
      第六条规则建议更简单的设计和更快的迭代,这与现代软件敏捷开发方法相一致。
      第七条规则为倾斜度量标准的用户数量提供了下限,这在在线实验中很常见。

      这里分享的大多数例子都是第一次在公共媒体上分享。他们支持经验法则,并加强我们对实验价值的信念,以帮助指导产品开发。我们希望这些经验法则能够为社区服务,并将导致后续研究,以改进它们并提供额外的经验法则。

    展开全文
    juranyaoyingwen 2018-11-12 15:05:12
  • 但同样是这些大词,经过太多人的传递、消费之 后,原本的含义反而像硬币上的图案一样被磨损殆尽:几乎没有人知道这些说法到底是指什么了。在IT业界,“平台(platform)”、“框架 (framework)”、“构架...

    1
    人们总是偏爱“大词”。一个表达方式,如果听起来足够响亮,写在纸上能够吸引眼球,那就会变成很多人的新宠。但同样是这些大词,经过太多人的传递、消费之 后,原本的含义反而像硬币上的图案一样被磨损殆尽:几乎没有人知道这些说法到底是指什么了。在IT业界,“平台(platform)”、“框架 (framework)”、“构架(architecture)”等等就是这种人见人爱的大词。几乎每个厂商都愿意请来其中的一位、甚至多位为自己推销。 久而久之,这些说法似乎适用于各个领域、各个层面:所有的软件系统都是“平台”,所有的开发者都在自矜于独有的“框架”。原本有确切意义的“好词”,经过 这一番争夺和滥用,也只能衰减为所谓的“buzzwords”,供市场营销人士们玩味了。
    我想让这些词中的一个——“框架”——荡污涤垢,重现青春。要完成这样的任务,必须动用重典才行。软件业圣经《设计模式》对框架有如下定义:“A framework is a set of cooperating classes that make up a reusable design for a specific class of software(一个框架,就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计)”。这个定义虽然主要着眼于面向对象的软件开发,但已经基本上给出了这个词的核心含义:框架是软件系统的设计、开发过程中的一个概念,它强调对以完成的设计、代码的重复使用,并且,一个框架主要适用于实现某一特定类型的软件系统。
    为了更好地说明框架是什么,也许还应该看看框架不是什么。
    框架不是现成可用的应用系统。它

    展开全文
    wishfly 2007-04-13 14:19:00
  • 225KB cyg2012 2018-07-04 11:08:41
  • qq_42599235 2020-12-06 16:06:22
  • weixin_39745269 2020-12-21 22:38:00
  • xieyunc 2019-10-19 21:43:03
  • szx940213 2018-06-05 20:18:01
  • qq_42599235 2020-12-09 17:20:27
  • VivianHuang001 2020-03-27 11:05:03
  • yuyueshool 2021-12-11 10:15:39
  • weixin_39909001 2020-12-17 17:30:51
  • FloraCHY 2019-07-07 17:28:45
  • jiang7701037 2020-02-26 22:15:09
  • abu935009066 2020-12-26 19:01:41
  • tony_vip 2020-05-30 16:13:22
  • ERA___ 2020-04-14 09:10:00
  • fengdijiang 2020-10-10 15:21:10
  • weixin_30855761 2018-12-09 21:01:00
  • penriver 2021-07-19 10:52:40
  • weixin_44523387 2019-05-29 21:33:43
  • weixin_30271335 2006-11-18 23:11:00

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,907
精华内容 1,162
关键字:

半成品的含义