我几乎更喜欢这些。

2017年美国国家橄榄球联盟(NFL)赛季的前四名球队,按输赢记录,分别是:

  1. 新英格兰爱国者队 (13–3)
  2. 匹兹堡钢人队 ,13–3
  3. 费城老鹰队 13–3
  4. 明尼苏达维京人 ,13–3

那么哪支球队是最好的?

乍一看,这个问题听起来无法回答。 如果输赢记录可以完全评估整个赛季的表现,那么所有这些球队的表现都是一样的,没有区别。

但是,正如任何观看体育比赛的人都知道的那样,事实并非如此。 即使不考虑老鹰队在第14周失去了首发四分卫卡森·温茨,您仍然会看到大多数球迷将爱国者和维京人置于老鹰队和钢人队的上方。 为什么? 因为团队的比赛方式存在明显差异:策略,优势和劣势以及整个比赛的重点。

简而言之,并非每次胜利都是平等的。

因此,人们提出了排名系统。 那些因在First Take上大喊大叫而工作的哑巴,Ringer,FiveThirtyEight,都已经开发了一种系统,可以根据记录之外的数据对NFL球队进行评估和排名。

这些质量各不相同。 就像半脑子的人可以想象的那样,Skip Bayless的推理真是令人敬畏。 我认为ESPN相当不错,而且我认为FiveThirtyEight的基于ELO的系统既非常有趣,而且给出了始终合理的预测。

今天,我将基于根本不同的推理而忽略所有这些系统,并自行创建系统。 为什么? 因为我可以。

让我们从一个例子开始。 想象一个由三支球队组成的联赛: X,Y和Z。 让我们说这一系列结果发生了:

  1. X击败Y。
  2. Y击败Z。
  3. Z击败X。
  4. Y击败X。

然后,在进行了四场比赛之后,我们的三支球队取得了以下记录:

  • X :1-2
  • Y :2-1
  • Z :1-1

因此,我们的目标是为每个团队分配一个等级R ,代表该团队的真正实力。

首先,让我们对每个团队的等级施加约束:

也就是说,X队击败Y队的概率等于其在这两个队之间的总分中所占的份额。 然后,我们可以得出以下结果:

上文指出,本赛季结果的总概率等于每场比赛结果概率的乘积。 但是,我们知道这些游戏会产生给定的结果:我们自己观察了它们! 因此,最大化我们观察到的结果的可能性的评级是每个团队的“真实”评级。

也就是说,我们希望找到每个R的值,以使Pr(schedule)最大化:团队等级的最大似然估计

实际发现这需要一些数学运算,我们将在下一部分中进行介绍,但是首先,让我们直观地考虑一下此优化问题。 假设您有三个杠杆,每个杠杆代表一个团队的等级。 我们首先将所有三个杠杆设为1,然后慢慢开始增加X的杠杆。 您会看到X既是我们正在优化的分数的分子又是分母,因此增加X只会将Pr(schedule)增大到一个点。 然后,我们跳到Y的杠杆,并开始增加它,直到该值再次开始减小。 然后,我们跳回X或前进到Z,依此类推,直到找到三个使方程最大化的完美平衡。

但是,当然,现实没有杠杆,计算我们的最大值需要数学。 我们本质上将要为该方程式导出梯度下降(并最终对其编程并运行!),该过程从寻找梯度开始。

同样,这是我们的等式:

您会注意到的第一件事是,这将是令人沮丧的表达式。 我们有除法和乘法,这将导致一些痛苦的代数。 但是,事实证明,我们对这个特定的方程式没有任何特别的忠诚:我们可以优化一个等效方程式,该方程式更易于推导,但行为与该方程式相同(也就是说,具有与这个)。

我随意选择自然对数,因为它是一个单调递增的函数,可保留原始方程式的全局极值,并将这种复杂的数学运算转换为更易于处理的加法和减法。 然后:

对于一些代数,这变为:

下一步是依次取每个R的偏导数。 我只是给你这些方程式; 如果需要,请验证我的数学!

现在,我们将每个导数设置为0(因为我们想找到函数不发生变化的点(在该函数中为最大值),然后将方程式改组为更好的形式:

现在,我们剩下的三个方程式的系统代表了我们每个团队的评级。 显而易见的下一步是解决该系统,但是即使粗略地浏览也可以告诉您,找到代数解决方案将十分困难,即使不是不可能。 矩阵方法在这里也行不通,因为这是一个非线性系统,无法按摩成更好的形式。

因此,让我们退后一步,然后换一个角度来看。 如果我们只是为每个R任意选择值作为初始估计,该怎么办? 例如,让每个等级为1。

然后,将这些值重新插入每个方程式中。 那给你:

这告诉我们什么? 好吧,它告诉我们,在上述方程式迭代之后,我们发现这是最大似然的当前估计。 尽管这不是一个特别好的估计,但它已经表达了我们之前讨论的许多直观想法。 Y胜过X和Z,因此得分最高。 X击败了Y,但它也输给了Y,输给了Z,Y击败了Z,所以它低于Y。Z高于X,因为它击败了X并输给了Y,X也输给了Y。

现在,我们可以再次运行相同的过程,插入这些新的R值并找到更新的估计值。 整整一个世纪的学术文献都可以追溯到1920年代,它说这些值最终会收敛,您将找到最大似然估计。

恭喜你! 您只运行了梯度下降。 现在,做同样的事情,但是要让整个NFL赛季达到32支球队和15 * 17 = 180场比赛。

我们上面的数学解决了NFL赛季残酷无节的问题,但是很容易扩展到整个赛季。 这又是我们的最终方程式:

现在,如果您凝视一下,您将可以说服自己上述方程式的一般形式是:

其中R_AA队的评价,W_AA队的总数胜和G_Ω是一个游戏的交手队Ω数量。

解决了上面的数学问题之后,我们终于可以编写代码来找到一些实际数据的最大似然估计器。 我将以2017 NFL赛季为例,并且我将从头开始编写所有内容,因为我可以

让我们首先执行我们要优化的广义评级方程:

在这里, current_weights是一个长度为32的数组,在我们的第一次迭代中初始化为1,其中current_weights[i]是对第i队的评分的当前估算值 games_matrix是一个二维数组,因此games_matrx[i][j]是团队i参加团队j的次数 ,而wins_array是一维数组,其中wins_array[i]是团队i的获胜次数

然后,这与我们上面导出的方程式完全相同。 现在,要进行迭代,我们可以执行以下操作:

这个函数是不言自明的:它从上方获取games_matrixwins_array参数,初始化一个current_weights数组,然后尽管在迭代之间仍然有变化,但它沿着梯度曲线(即我们的optimization_function )向局部最大值移动。

现在,我们需要的只是样本数据! 为此,我使用了非常有用的nflgame模块 ,该模块从NFL.com的GameCenter JSON源中提取数据。 这是下面的代码:

现在我们可以将它们连接在一起:

这是我在2017 NFL赛季上使用上述代码获得的结果:

我认为非常扎实。 您可以在此处查看ESPN的常规赛最终排名。 他们的前五名是新英格兰爱国者队,匹兹堡钢人队,明尼苏达维京人队,新奥尔良圣徒队和洛杉矶公羊队,这与我的球队非常接近,尤其是因为我们没有使用比赛结果以外的任何信息。 (例如,我确定Carson Wentz撕毁了他的ACL对老鹰队跌倒前五名有很大的影响)。

迄今为止,这种方法的中心问题是,它将每场胜利都视为平等,这是完全错误的。 老鹰队在分区轮对阵猎鹰队的窄小15-10胜利中,是否应该被视为与上周他们在会议冠军赛中以38-7击败维京人的方式相同?显然,不应该这样。 猎鹰队输掉了一场激烈竞争的比赛,而维京人队则被彻底摧毁。 确实,猎鹰的评分似乎应该随着这两个结果而提高,因为他们输给了被高评价的维京人歼灭的团队。

表达这一点的最简单的指标是获胜的余地:获胜和失败的球队之间的积分差距。 一种简单的方法可以将其纳入我们的方法中,即在计算每支球队的获胜时,权衡更大的获胜更多,而更低的获胜更少。

经过反复试验,我得出了以下公式:

其中D是得分差异, S是得分的总数。 从本质上讲,这是每次获胜都会自动获得1/2,然后,我们添加一个与点差成正比的因子。 如果D接近S ,则表示获胜团队获胜很多,我们最终得到的数字接近1/2,这导致总获胜权重接近1。但是,如果D远小于S ,我们就结束了获胜权重接近1/2。

每次胜利都将落在这个范围内的某个地方,但其价值将与获胜者所赢得的金额成正比。 它在代码中的外观如下:

此处,游戏是nflgame模块中的对象,其中包含有关特定NFL游戏的数据。

如果您还记得的话,我们会在generate_matrices函数中算出我们的胜利。 再次出现,但是调用wins_update_formula函数,而不是简单地为每个获胜加1:

当然,这里是结果:

他们改变了一点。 我会给你一个完整的比较,但是新奥尔良升了一个位置,而卡罗来纳州倒下了。 明尼苏达州仍然是我们常规赛的最爱,但是费城上升了一个,亚特兰大下降了一些。

您还可以做一千件事。 寻找一种方法来考虑主场优势,或更详细的进攻/防守指标。 查找更智能的加权获胜公式。 在更大的数据集上运行它,也许可以找到有史以来最好的团队。 将一支球队的常规赛平均得分与其季后赛得分进行比较(仅有的有足够数据的球队是钢人和爱国者队)。 修复我的糟糕代码,以便在大量数据上更快地运行。

但是在您执行此操作之前,我当前的方法存在问题。 我的统计知识渊博的读者可能已经意识到,合并获胜余量存在自相关问题:更好的球队获胜的机会会更多,获胜的余地也会更多,这会随着时间的推移而提高我们的评级。 解决此问题的方法是找到一个胜利更新公式,该公式在较低等级的球队获胜时权衡胜利约束,而在较高等级的球队获胜时权衡胜利约束。 我将引导这位呆板的教授,并将其作为练习(提示: 使用自然日志,卢克! )。

这是包含本文中使用的所有代码的存储库。 否则,您可以在Twitter上通过@AakashJapi找到我,在gmail.com上的aakashjapi上找到电子邮件并在上面的名称下找到Facebook。 随时与我联系,提出想法/想法/模因/爱国者垃圾话,或其他任何东西。

From: https://hackernoon.com/ranking-nfl-teams-using-maximum-likelihood-estimation-7a4ed8994a67

使用最大似然估计对NFL球队排名相关推荐

  1. 最大似然估计与极大似然估计_使用最大似然估计对NFL球队排名

    最大似然估计与极大似然估计 我几乎更喜欢这些. 2017年美国国家橄榄球联盟(NFL)赛季的前四名球队,按输赢记录,分别是: 新英格兰爱国者队 (13–3) 匹兹堡钢人队 ,13–3 费城老鹰队 13 ...

  2. 【Python】基于竞赛图法的NBA常规赛球队排名

    背景 目前,NBA常规赛的球队排名按胜率从高到底依次排列.这样的排名方式非常简单,容易被大众普遍接受.但是,由于NBA常规赛赛制的非对称循环的特点,这样的排名规则并非完全公平,因此本文将尝试建立更合理 ...

  3. 【原创】机器学习之PageRank算法应用与C#实现(2)球队排名应用与C#代码

    在上一篇文章:机器学习之PageRank算法应用与C#实现(1)算法介绍 中,对PageRank算法的原理和过程进行了详细的介绍,并通过一个很简单的例子对过程进行了讲解.从上一篇文章可以很快的了解Pa ...

  4. 回归算法 - 线性回归求解 θ(最大似然估计求解)

    回顾线性回归的公式:θ是系数,X是特征,h(x) 是预测值. h(x) = θ0 + θ1x1 + θ2x2 + - + θnxn h(x) = Σ θixi( i=0~n ) h(x) = θTX ...

  5. 深度学习中的最大似然估计简介

    统计领域为我们提供了很多工具来实现机器学习目标,不仅可以解决训练集上的任务,还可以泛化.例如参数估计.偏差和方差,对于正式地刻画泛化.欠拟合和过拟合都非常有帮助. 点估计:点估计试图为一些感兴趣的量提 ...

  6. [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别...

    转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...

  7. 独家 | 一文读懂最大似然估计(附R代码)

    作者:阿尼·辛格 翻译: 陈之炎 校对:丁楠雅 本文约4200字,建议阅读10+分钟. 本文将研究MLE是如何工作的,以及它如何用于确定具有任何分布的模型的系数. 简介 解释模型如何工作是数据科学中最 ...

  8. 【机器学习基本理论】详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

    [机器学习基本理论]详解最大似然估计(MLE).最大后验概率估计(MAP),以及贝叶斯公式的理解 https://mp.weixin.qq.com/s/6H0gmMWvTExySMraroLVlQ 最 ...

  9. 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解...

    转载声明:本文为转载文章,发表于nebulaf91的csdn博客.欢迎转载,但请务必保留本信息,注明文章出处. 原文作者: nebulaf91  原文原始地址:http://blog.csdn.net ...

最新文章

  1. NR 5G NAS非接入层
  2. Markdown语法入门
  3. react滑动切换tab动画效果_[React Native]react-native-scrollable-tab-view(入门篇)
  4. 【Solidity】3.类型 - 深入理解Solidity
  5. ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext-servlet.xml
  6. js--window关闭事件
  7. 精选CSDN的ACM-ICPC活跃博客
  8. transform、accumulate —— C++ 下的 MapReduce
  9. 【c++】笔记:输入带空格的字符串
  10. 输入文字加下划线_Word下划线你知道多少?
  11. mysql服务器磁盘空间耗尽_一次服务器磁盘空间不足导致的一系列问题
  12. 阿里云Centos7 docker-compose + filerun + aria2 + AriaNg配置离线下载器
  13. AndroidMPChart——BarChart
  14. Tesseract OCR 语言包下载
  15. 计算机专业毕业生的就业政策,计算机专业毕业生就业情况分析及应对策略
  16. 洛谷P1725 琪露诺(单调队列优化dp)
  17. 一张纸(5毫米)折叠多少次可以达到珠穆朗玛峰的高度(8848米)?
  18. java中实现工厂日历_Java实现的日历功能完整示例
  19. 一份招聘公告暴露英特尔外包芯片计划
  20. iOS - iPhone手机刘海屏判断

热门文章

  1. 机器学习入门基础(一)
  2. 如何利用IP地址开展金融反欺诈?
  3. vue3+jsQr实现手机浏览器调用本地摄像头扫描并识别二维码
  4. laravel开源版华登区块狗
  5. 夜天之书 #26 Four-Factor OSC
  6. Linux内核4.14版本——mmc core(4)——card相关模块(mmc type card)
  7. office 365安装包下载
  8. springMVC+阿里云API = 实现发送手机验证码短信
  9. Windows 11录屏的方法
  10. Java Swing添加背景图片