前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >仅靠一道简单的数学题,他就变成了Stack Overflow的数据科学家

仅靠一道简单的数学题,他就变成了Stack Overflow的数据科学家

作者头像
AI科技大本营
发布2018-04-26 11:06:11
7490
发布2018-04-26 11:06:11
举报

古语有云,“学好数理化,走遍天下都不怕。”

人工智能时代尤其如此。

比如,写上几句基础的数学概念,天上就能掉下一个工作来……这是真事。

学概率的时候,我们会反复来理解什么是正态分布,什么是均匀分布,什么是二项分布,什么是贝塔分布……不知在座的各位是否还能记起当时做过的习题?是否还能通俗地讲解一下这些概念?

在Stack Overflow,有位学机器学习的同学理解不了贝塔分布,希望有人能帮他解答下。刚好,正在学生物信息学博士的David Robinson现身说法,用一个有关棒球运动的统计数据来解释这个概念。这位博士纯粹是为了消磨时间,觉得好玩。

不过,Stack Overflow数据科学团队的Jason Punyon读完David Robinson的解答后,觉得解释很赞,他在内部会议上突发奇想:

哇!咱们干脆雇了这哥们儿吧。”

于是,一份公开的邀请不期而至:我们十分期待你能拜访一下Stack Overflow。

在好奇心的驱使下,原本打算博士毕业后研究计算生物学的David Robinson,鬼使神差地拜访了这家科技公司。一次拜访、几周面试,Stack Overflow提供给他一个无法拒绝的工作机会,David Robinson从计算生物学博士变成了一个数据科学家。

你一定特别好奇,这到底是个怎样的问题,直接就让这位博士拿到了数据科学家的offer?David Robinson的解释到底又有多精彩?现在我们让来看看这个问题。

问题

首先声明,我并不是统计学家,只是一名软件工程师。我所掌握的大部分统计学知识都来自于自学,因此对于一些别人觉得很简单的概念,我可能会觉得很难理解。因此我希望答案能尽量通俗易懂,少一些专业名词而多一些形象解释。

我之前试图想弄清楚贝塔分布(beta distribution)的本质——它能用于做什么以及如何解释它的应用场景?

例如,当我们谈正态分布时,可以将它描述成火车的到达时间:大多数情况下火车正点到站,有时候会早1分钟或者迟1分钟,但是早20分钟或者迟20分钟的情况则非常罕见;均匀分布可以描述为彩票中奖的机会事件;二项分布可以描述成抛硬币事件等等。那么,贝塔分布有这样的直观解释吗?

例如 α=.99,β=.5,贝塔分布B(α,β)如下图所示(使用R生成):

那么这个图代表什么意思?Y轴是一个概率密度,那么X轴呢?

答案可以基于这个例子来解释,或者任何其他的也行。我将感激不尽。

David Robinson 解释如下:

简而言之,贝塔分布可以看作是一个概率的分布,也就是说,当我们不知道一个东西的具体概率是多少时,它给出了所有概率出现的可能性大小。下面结合一个应用场景来理解:

熟悉棒球运动的都知道一个指标就是棒球击球率(batting average-http://en.wikipedia.org/wiki/Batting_average%22),就是用一个运动员击中的球数除以总的击球数(因此它是一个0到1之间的百分比)。我们一般认为0.266是一个平均的击球水平,而如果击球率达到0.3就会被认为非常优秀了。

假设有一个棒球运动员,现在我们想预测他整个赛季的棒球击球率如何。你可能就会直接计算他目前的棒球击球率,用击中数除以击球数,但这在赛季开始阶段时是很不合理的!假如这个运动员就打了一次,还中了,那么他的击球率就是100%,如果他没中,那么就是0%。甚至打5、6次的时候,也可能运气爆棚全中击球率100%,或者运气很糟击球率0%。无论如何,基于这些来做预测是不合理的。

那么,为什么用前几次击中来预测整个赛季击球率不合理呢?当运动员首次击球没中时,为什么没人认为他整个赛季都会一次不中?因为我们有先验期望。根据历史信息,我们知道击球率一般会在0.215到0.36之间。如果一个运动员一开始打了几次没中,那么我们知道他可能最终成绩会比平均稍微差一点,但是一般不可能会偏离上述区间。

对于这个击球率问题,我们可以用二项分布(https://en.wikipedia.org/wiki/Binomial_distribution)表示(一系列的成功或失败事件),一个最好的方法来表示这些先验期望(统计中称为先验(prior))就是贝塔分布,这表示在运动员打球之前,我们就对他的击球率有了一个大概范围的预测。贝塔分布的定义域为(0, 1),与概率是一样的。我们下面继续解释为什么贝塔分布用在这个任务上是合理的。

假设我们预计运动员整个赛季的击球率大概是0.27左右,范围大概是在0.21到0.35之间。那么用贝塔分布来表示,我们可以取参数 α==81,β==219。

curve(dbeta(x, 81, 219))

之所以取这两个参数,原因如下:

  • 贝塔分布的均值
  • 从上图中可以看出,这个分布主要落在(0.2, 0.35)之间,这是从经验得到的合理范围。

你问在贝塔分布的密度图上x轴代表什么,在这里,x轴代表运动员的击球率。注意到在这个例子里,不仅y轴是代表概率(确切说是概率密度),x轴也是(击球率是击中次数的概率分布)。因此贝塔分布可以看作一个概率的分布。

接下来解释为什么贝塔分布适合这个例子。假设运动员一次击中,那么现在他本赛季的记录是“1次打中;1次打击”。那么我们更新我们的概率分布,让概率曲线做一些移动来反应我们的新信息。这里涉及一些数学上的证明(点此查看-https://en.wikipedia.org/wiki/Conjugate_prior#Example),但是结论非常简单。新的贝塔分布为:

其中 α0和β0是初始参数,在这里是81和219。所以,在这个例子里,增加了1(击中了一次),没有增加(没有失误)。因此新的贝塔分布为Beta(81+1,219),如下图:

curve(dbeta(x, 82, 219))

可以看到这个分布与原来相比并没有什么肉眼可见的变化,这是因为仅一次击中球并不能太说明什么问题。

然而,随着整个赛季运动员逐渐进行比赛,这个曲线也会逐渐移动以匹配最新的数据。由于我们拥有了更多的数据,因此曲线(击球率范围)会逐渐变窄。假设赛季过半时,运动员一共打了300次,其中击中100次。那么新的贝塔分布是Beta(81+100,219+200),如下图:

curve(dbeta(x, 81+100, 219+200))

可以看出,曲线现在更尖而且往右移动了(击球率更高),由此我们对于运动员的击球率有了更好的了解。

根据新的贝塔分布,我们得到的期望值通常也是我们的新的估计。贝塔分布的期望值计算公式是

。因此新的贝塔分布的期望值为

,注意到这个值比直接预估要低

,但是比赛季开始时的预计要高

你可能已经注意到了,这个公式就相当于给运动员的击中次数添加了“初始值”,相当于在赛季开始前,运动员已经有81次击中219次不中的记录。

因此,在我们事先不知道概率是什么但又有一些合理的猜测时,贝塔分布能够很好地表示为一个概率的分布。

就这样,靠着一道数学题,就拿到了数据科学家的职位。做机器学习,你的数学准备好吗?

福利

如果你对这位从生物信息学博士变身Stack Overflow数据科学家的David Robinson感兴趣,可在微信公众号后台回复“数据”,即可获得David Robinson的R语言文本挖掘《Text Mining with R》免费电子书。

怎么样?读到这里,对于火车到达时间、彩票中奖机会、抛硬币和棒球击球率所对应的概率分布,你应该都能回想起来了,除非你在《概率论与数理统计》课上所学的东西真的还给老师了。

不过,就算还给概率论老师也没关系,你总是可以重新啃书本把它拾起来,或是重新上一门能让你真正学会概率、统计的课程,比如中科院冒老师这门《机器学习之概率与统计推断》:它不光能让你真正学会概率、统计,还能弄懂这些概念在机器学习中的具体应用场景。

扫描下面的二维码,仅需8小时,你就能拾回早已还给老师的概率论和数理统计,拿到理解机器学习的入门钥匙。

参考链接:

https://stats.stackexchange.com/questions/47771/what-is-the-intuition-behind-beta-distribution http://varianceexplained.org/r/year_data_scientist/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档