且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《程序员度量:改善软件团队的分析学》一模式、异常点和离群点

更新时间:2022-09-27 17:12:16

模式、异常点和离群点

一般来说,我们收集和保持度量数据持续的时间越久,它们就会变得越有用。度量分析是一个模式识别的过程,意味着寻找一个重复的、可提供洞察力的模式。从单个时间段里收集到的一组度量或许会揭示出一些有趣的信息,并且我们可能会因此而得出一些有趣的假设,然而,从多个时间段里收集多个度量将可以改进我们的推测,或者把推测转化为知识。
我们在寻找模式的时候,很重要的一点是,必须认识到并不是所有的模式都是简单化的。我们必须仔细地寻找,而不仅仅只是关注于表面,因为从一些度量的组合中发现一些模式和解释,比从单个度量中发现,从有效性上来说会更胜一筹。基于这个原因,在很长的时间段中,以不连续的时间间隔收集度量数据是非常有用的,这样可以用各种各样好的度量数据一起来检验我们对事物的看法。
Stephen Wolfran的《A New Kind of Science》尽管篇幅很长,但是作为复杂模式识别和模式多样性方面的重要资料,也值得回顾一下。他的研究关注计算机模型和自然界,但是他的观点是:混沌或极端复杂的事物中或许存在一些待发现的模式,这些模式可以直接应用到任何领域的统计分析中。
在棒球比赛中,一个广泛使用的强大的技术统计是OPS,它代表整体攻击指数(On Base Percentage plus Slugging Percentage)。经过上百位统计学家数十年严密的检验,目前他们一致认为这个公式是用来识别击球运动员有效性和球队整体进攻能力的***方法之一。相对于诸如全垒打(HR)或者得分打(RBI)那些只着眼于单个技术能力的统计来说,OPS更具描述性。我不想在这里深入更多的细节,简单地说,经过复杂的模式分析过程和年复一年的数据使用,发现了这个复杂的公式: [OPS = AB(H + BB + HBP) + TB(AB + BB + SF + HBP) / AB(AB + BB + SF + HBP)]。
随着我们对度量的了解与时俱进,我们也应该尝试区别异常点和离群点。人们常常倾向于丢弃或忽视那些“不寻常”的或者不在正常范围内的数字。例如,如果程序员A一般情况下花几周的时间可以完成一定的工作量,只不过,在其中的一个时间段内,完成的工作量可能会急剧下降,或者急剧上升,通常我们只会关注前者而忽视后者。如果我们一直都在检查平均值的话,那么我们会很快遗忘或者丢失那些已经发生过的事情。但是,“异常点”与“离群点”会有很大的不同,“异常点”一般指的是那些不可解释或不可再现的异常发生事件,“离群点”则表示的是违背常理的事件,并且可能再现,甚至伴随一些“可预知”的模式。通常对它们的定义如下所示。

  • 异常点:不协调性或者不一致性,对标准的偏差。
  • 离群点:那种距离整体较远的某个数值。

Nassim Nicholas Taleb和Malcolm Gladwell分别在其各自的著作《黑天鹅》(Black Swan)和《异类》(Outliers) 中探究过离群点的力量。两位作者都分别在其书中介绍了许多关于离群点扮演重要角色而获得巨大成功的例子。在《异类》中,我们了解到,研究得越紧密,经常就可以发现一些看似意外的成功后面都隐藏着一些可解释的模式。在《黑天鹅》中,我们可发现,离群点常被看做一个复杂系统中可能发生的事件。一个清晰的事实是:忽视离群点将会限制我们对成功模式的理解。
当我们看到一些特别意想不到或不同寻常的结果时,我们首先应该做的是尝试确定这是否是个异常点或离群点。比如,如果是在这个测量周期内,由于程序员A本身遇到了一些个人问题,而导致工作成绩急剧下降,那么我们可以把这看做是异常点。经验法则是:

  • 如果可以清楚地解释为一次性发生的偶然事件,该结果就为异常点。
  • 如果无法清楚地解释为偶然事件,该结果就为离群点,并且需要更严密的检验,持续观察,方能确定其是否有意义或者是模式的一部分。

在1993~2007年间,Ivan Rodriguez是美国职业棒球大联盟中一个相当稳定的捕手。自1988年作为16岁的天才球员签约以来,他14次入选全明星阵容。那段时期,他技术统计数据中的某些下滑大部分可以解释为是由于他的伤病和糟糕的球队影响到Rodriguez的表现机会,并进一步影响到他的技术统计。因此,这些可以看成是异常点。
同时期另一位优秀的捕手Mike Piazza,12次出现在全明星阵容中,同样拥有始终稳定的技术统计数据。Rodriguez和Piazza都毋庸置疑地进入棒球名人堂。可是,Piazza译注5在棒球史上同样值得注意的是因为在1988年的球员选秀中,他落在了第1390顺位,在第62轮才被洛杉矶道奇队选中。虽然在高中时期他打破了学校的击中纪录,但他经历了平凡的大学生涯。他因为不符合球探寻找球员的模式而被忽视。他不像Ivan Rodriguez,没有明星球员的体型,并且在那个时期的棒球运动中,他的名字和种族背景也显得与众不同。至少我们应该认识到,这种肤浅的分析是大错特错的,现在,这名几乎落选的球员成了货真价实的名人堂成员和捕手中的***全垒打击球手。
Mike Piazza和其他像他一样的人就是离群点。在软件开发中,你可以把这个教训应用到你现有的招贤纳士的方法中。你的招聘方式是否可以发现那些“Mike Piazza”,未来的名人堂成员的背景是否符合你的期望,或者说是否符合你之前寻找优秀程序员的模式? 你是否有一个客观的方法来帮助你理解哪些才是团队所真正需要的技能,并且去发现那些拥有或超出这些技能需求的程序员,即使他们或许没有你一般所期望的背景或外表? 在这里,度量并不是全部的答案,但是它们肯定是答案的一部分。
由于依赖自身经验和对事物的认识,我们总是会更倾向于看到那些我们正在寻找的事物。就像许多成功的故事所呈现的一样,这种打破常规的惊人之举几乎没人能够预测到,定期发生的这些事情足以告诉我们,像这样的故事以后还会一次又一次地继续上演。这种惊人之举的出现给我们提供了学习的机会,或许可以发现它们其实一点也不惊奇。如果恰巧你知道得更多,对成功的模式有更深入的理解,那么就你就可能预测到结果,并且结果也将变得不再惊奇。
离群点是惊奇和意外结果的数据表现。在我们收集度量和分析模式时,我们有必要认真分析离群点。