前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >听说,SuperMajor,血魔和兽王更配哦

听说,SuperMajor,血魔和兽王更配哦

作者头像
用户1569917
发布2018-07-25 16:09:02
3100
发布2018-07-25 16:09:02
举报
文章被收录于专栏:数据冰山

明眼人已经看出来了,文章的标题套用了德芙巧克力广告的句式。

为什么要借用这个句式?因为本文要讨论的是——在刚刚结束的「中国DOTA2超级锦标赛」上,职业队选择的英雄之间,是否存在有价值的关联关系?这些英雄组合的胜率如何?

然而尴尬的是,虽然德芙用心良苦,但大家似乎并不认为巧克力和音乐有什么关联...所以这并不是一个好类比,我们还是回到几乎所有人写关联分析都会引用的黄金案例——「啤酒」和「尿布」上来。这个比德芙广告流传更广的故事是这样的:

我们去沃尔玛超市会发现一个很有趣的现象:货架上啤酒与尿布竟然放在一起售卖,这看似毫不相关的东西,为什么会放在一起呢? 原来,在美国,妇女们经常会嘱咐她们的丈夫下班后给孩子买一点尿布回来,而丈夫在买完尿布后,大都会顺手买一瓶自己爱喝的啤酒。商家通过对大量交易记录进行分析,发现了这对神奇的组合。于是就毫不犹豫地将尿布与啤酒摆放在一起售卖,促进销售。

购物篮分析可以用下图简单说明:表格中有五笔订单,每笔订单包含若干商品(无先后顺序),比如第一笔订单表示小明同时购买了面包&牛奶。

对大量订单进行关联分析(association analysis),可以挖掘出隐藏在数据集中的联系,找出关联规则(association rules)。比如商家发现,购买了尿布的顾客中,大多数同时购买了啤酒,那么就可以得出关联规则:尿布-->啤酒(注意:箭头表示关联规则是有方向的,反过来买了啤酒的顾客,购买尿布的比例不高)。搞清楚了这些规则, 商家就能想办法掏空你的钱包。

那么问题来了,这和DOTA2有什么关系?有关系!仔细想一想,可以发现「顾客挑选商品」和「队伍挑选英雄」是有共同点的:

  1. 有很多购物篮,每个购物篮选择了若干商品,运用关联分析挖掘商品之间的关联规则。
  2. 有很多场比赛,每场比赛的两支队伍选择了若干英雄(注:DOTA2的比赛规则是两支队伍从100多名英雄中各选5名),运用关联分析挖掘英雄之间的关联规则。

接下来,本文尝试运用关联分析挖掘SuperMajor舞台上的英雄关联规则。(为了大多数读者的阅读体验,本文会多讲原理少聊技术。少部分想学技术的读者,可以参考放在GitHub上的代码)

选好题目之后,数据分析师要做的第一件事就是:获取数据源。针对这个题目,我们需要SuperMajor每场比赛的选人信息:

要如何寻找关联规则呢?我们不妨先跟着感觉走,采用最直接(很多人可能不自觉用过)的方法是:英雄组合出现的次数越多,关联关系越强。下图展示了SuperMajor出场次数在8次以上(包括8次)的英雄组合。其中「杰奇洛(俗称:双头龙)+娜迦海妖」(睡接冰)和「干扰者(俗称:萨尔)+死亡先知」(团战阵容?)的搭配都出现过11次,是本次比赛职业选手最喜欢的英雄组合。

衡量“出现次数”的专业术语叫Support(中文翻译:支持度),以关联规则{双头龙->娜迦海妖}为例,Support等于双头龙&娜迦海妖一起出现的次数/阵容总数,也就是11/206(比赛场数*2)=0.053,差不多十场比赛(二十套阵容)会出现一次。

那么问题来了——Support指标的阈值要怎么定?要同时出现多少次,我们才认为有关联关系?定Support阈值需要结合实际问题进行,高了低了都不好:

  • 如果Support阈值定的太高,通常只能筛选出由「常见英雄(上场次数多)」构成的关联规则,导致无法获得由「不常见英雄」组成的关联规则。比如上图选择的Support阈值为0.039,挖掘出的关联规则包含:兽王、术士、萨尔、死亡先知、拉希克等英雄。这些英雄全部是本次SuperMajor的热门英雄(下图展示了本届比赛上场次数排名top8的英雄)。而{小精灵(学名:艾欧)->火猫(学名:灰烬之灵)}(Support=0.019)这种不常见英雄构成的关联规则就丢失了。
  • 如果Support阈值定的太低,会造成关联规则的泛滥。比如将Support阈值定为0.015,会得到150多个关联规则,基本上常见英雄搭配任意一名其他英雄,都能够形成关联规则,显然也不好。

看来只靠Support指标是不行的,我们需要更多指标来衡量关联规则的优劣,比如Confidence(中文翻译:置信度)。Confidence本质上是一个条件概率,表示关联规则{X->Y}选择了X时后,再选择Y的概率P(Y|X)(可以想象一下:队友选了发条,影魔王就开心了~)。给大家看两张图就明白了。

先看第一张图——「兽王」协作英雄。兽王是本届SuperMajor上场次数最多的英雄(高达42次),和53名英雄做过队友。其中合作次数最多的是术士,兽王&术士的组合一共出现过10次,计算{兽王->术士}关联规则的Confidence为10/42=23.8%(注:Confidence的计算规则不满足对称性,{术士->兽王}关联规则的Confidence为35.7%。但两者的Support值相等。)

再看小精灵的英雄协作图,小精灵一共出场6次,其中有4次搭配了火猫。所以{小精灵->火猫}关联规则的Confidence为4/6=66.7%,非常高(选了小精灵,大概率要配火猫)。

到现在为止,我们介绍了两个指标——Support和Confidence,从不同的角度衡量关联规则的优劣。那么,有了这两个指标是不是就高忱无忧了呢?很遗憾,并不是。用于评价关联规则的客观指标还有很多,比如:lift、leverage、conviction等等。考虑到阅读体验,就不多说了,感兴趣的可以阅读《Association Analysis: Basic Concepts and Algorithms》

另外,更重要的是,除了客观指标,在进行关联分析时,还需要了解数据集所处行业的领域知识(这就是万分弹幕大神厉害的地方了)。

最后说结论:本文选择Support阈值为0.015、Confidence阈值为0.4、lift阈值为1.2对SuperMajor的比赛进行挖掘,得到英雄关联规则如下(顺手加了胜率)。

结合出场次数、Confidence、胜率三个最重要的指标,发现:

  • {血魔-->兽王}:上场次数8次,Confidence为44.4%(选了血魔之后有44.4%的几率拿出兽王),胜率高达87.5%。同理还有{艾欧-->灰烬之灵}、{孽主-->祸乱之源}等,都是本次SuperMajor非常成功的热门组合。
  • 兽王虽然本次胜率较高(55%),但也有很多英雄不太适合搭配兽王,比如:{圣堂刺客-->兽王}的胜率是25%,{圣堂刺客-->娜迦海妖}的胜率是75%。(有没有万分大神在评论中解释一下~)

写到这里,文章就结束了,希望能给不熟悉「关联分析」的朋友一点帮助。

几点说明:

  1. 关联分析需要大量数据样本(几万场比赛不嫌多),本文为了方便描述,只选取了SuperMajor的100多场比赛作为数据集。后续如果有空,考虑用天梯公开比赛作为数据源再跑一次,帮助大家上分~
  2. 虽然本文只用了包含两名英雄的关联规则作为例子,但关联规则是可以包含任意多名英雄的。比如:{影魔&复仇之魂->兽王}、{兽王&复仇之魂->影魔}等等。

特别鸣谢:何求知

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

本文分享自 数据冰山 微信公众号,前往查看

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

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

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