1. 为什么PageRank算法适用于足球? 截至我写这篇文章的时候,本赛季欧冠正好刚刚打完四分之一决赛:
别想多,上图只是按字母排序的 如上所示,四强就是皇马、马竞、尤文和摩纳哥啦。 能够打入四强的球队显然都不好对付,究竟谁能夺冠,大家也都给出了自己的猜测:有人觉得上届冠军皇马实力强劲,有望卫冕;有人认为马竞在过去三年两进决赛之后,怎么也该打破魔咒获得冠军了;尤文近几年表现出的实力也是有目共睹,今年更是完胜巴萨;当然还有摩纳哥,虽然看起来似乎比不了以上三家,但黑马总是令人忌惮的,谁知道会不会爆一个大冷门呢?
菠菜公司:其实我还是比较看好尤文图斯…… 你可能觉得,看这四个球队的联赛成绩就可以知道谁更厉害了。不过事情不一定这么简单。欧冠常被认为代表了足球竞技的最高水平,参赛队伍都是欧洲内各大联赛的前几名,强强对话究竟谁占上风,恐怕不能简单地以联赛成绩来判断。键盘侠界一直有一种理念(也可能是迷信):联赛靠虐菜(尽可能战胜弱队拿分,毕竟打谁都是3分),欧冠靠死撑(对阵强队,即使不一定占据绝对优势,也不能被轻易打垮)。并且,由于球风、偏好甚至集中度的不同,每个球队擅长对付的对手也不同,因此,有的球队被誉为劫富济贫专打强队的能手,有的球队则被嘲笑是窝里横…… 本来这种论调我是拒绝的,直到2013-14赛季的赛果颠覆了我的观念。13/14赛季的欧冠冠军是皇马,他们战胜了许多强敌打进决赛,又在决赛中艰苦地战胜了马竞,赢得球队历史上的第十冠;然而,在同赛季的西甲联赛中,皇马的表现实在是不怎么样,最后仅屈居第三,而西甲冠军正是马竞。 这可能是一个相当典型的例子了,马竞赢得了一个赛季的长跑,却在最后关头倒在了皇马脚下,心中想必也是很不爽的。所以,难道马竞就是传说中的虐菜小能手,而皇马专克强敌? 于是我就想到了著名的网页排序算法PageRank,Google用于用来标识网页的重要性的一种方法。比如,我搜索了“西甲”这个关键字,世界上当然有成千上万个网页里都有这两个字,Google到底应该首先推给我哪一个呢?PageRank算法的思想是,假设我们要评估网页A的重要性,那么就要看有多少网页(n)引用了网页A;一般来说,n越大、而且这n个网页的重要性越高,A就越重要,也就是说,网页A的重要性由所有引用它的网页的重要性共同决定。由于网页数量繁多,我们经过若干次迭代入链后,就可以得到一组收敛的评分也就是所有网页的PageRank值。 这个道理似乎很适用于足球比赛。我们可以认为,一支球队的实力由所有输给它的球队的实力决定,别的球队输给它一次,就等于给它加血。球队的实力(PageRank),也就是通过所有输给它的球队的重要性经过递归算法得到的。 简单地说,球队: 1. 不但赢得越多越厉害这是各大联赛的积分标准 2. 而且赢强队越多越厉害这就是综合实力了 好了,这就是球队PageRank算法的理论基础。 2. 拿13/14赛季试验一下 既然刚才已经说过了13/14赛季的西甲怪现象,不妨就拿这个赛季来算一下PageRank吧。条件所限,我是拿R来实现这一套流程的,其实可能底层语言方便得多. 感谢数据时代(或者菠菜业),现在找比赛资料真是容易得多,如果你不是执着于什么斯洛文尼亚第**别联赛,应该都能在网上找到。我的数据来源是http://www.football-data.co.uk/data.php,可以提供22个欧洲联赛在过去19年中的赛果,包括半场结果、全场结果、角球、处罚等(看到这里你该知道它是为哪个行业服务的了)。
部分代码,难度不大 简单说一下思路: 1. 对源数据进行处理。 从那家网站上获得的比赛数据很复杂,我只保留了双方球队名和进球数。同时,我认为一个赛季的表现并没有说服力:从实力提升到在欧冠中有所突破,往往需要几个赛季的时间,很多球队就倒在其中的某一环。因此,我选择了2010/11 - 2013/14共四个赛季的数据。比较理想的一点是,这四个赛季中,皇马和马竞都各有一位执教时间满3年的主教练,可以保证球队发展的连续性。关于主客场,我选择了忽略其中可能存在的差别。 经过简单处理之后,数据变成了“球队A - 球队B - A进球数 - B进球数”的格式,每场比赛都有一条记录。 2. 将数据变成有向图。 网页PageRank算法中,如果网页A引用了网页B,则可以认为存在A- |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|