英雄联盟是2009年美国拳头游戏开发一款红蓝双方互相对抗的MOBA游戏,每队有5名队员,通过击杀敌方小兵、推塔、击杀敌方英雄,以最终摧毁敌方主堡作为胜利的游戏。
本次的数据来源是kaggle。
链接地址:https://www.kaggle.com/bobbyscience/league-of-legends-diamond-ranked-games-10-min
从数据来源者描述中可以得知,本次数据是通过拳头数据API获得的。数据包括钻一到大师分段的SOLO Q排位每场的前10分钟数据。总共有接近10000条比赛数据。这些数据值得分析的原因也在于召唤师段位较高,数据较为稳定。低段位比赛由于玩家水平较低,数据波动会大很多。
这里需要介绍一下英雄联盟的排位中队友和对手的匹配机制:
匹配系统的目的如下,优先级从高到低:
1.保护新手不被有经验的玩家虐;让高手局中没有新手。
2.创造竞技和公平的游戏对局,使玩家的游戏乐趣最大化。
3.无需等待太久就能找到对手进入游戏。
4. 匹配系统尽其所能的匹配水平接近的玩家,玩家的水平是来自他们在此之前赢了谁以及他们对手的水平。
数据包括:
最终比赛结果,一血击杀方,蓝色方击杀数,蓝色方死亡数,蓝色方助攻数,蓝色方控制守卫数量,蓝色方排眼数,蓝色方精英怪击杀数,蓝色方小兵击杀数,蓝色方推塔数,蓝色方龙击杀数,蓝色方获得金币数,蓝色方获得经验,蓝红双方金币差,蓝红双方经验差,以及红色方相对应的一些数据。
从上面的数据可以看出英雄联盟中有很多的游戏元素,这些游戏元素都在影响比赛进程,最终决定比赛结果。比如一血的击杀可以给队伍带来更多的金币,影响兵线。比如更多的助攻代表着更加团队的打法。如果一场比赛中击杀很少,那比赛可能会陷入互相发育的无聊阶段,此时小兵的击杀数会和防御塔摧毁数量会影响金币进而影响装备。等等。。。
从这些数据中我要探索的问题是:
前10分钟的平均数据是什么样的,从平均数据中推测钻一到大师分段前10分钟比赛时会出现的情况。
随着比赛场次的增加以及玩家对游戏版本理解的深入,游戏数据平均值是否发生波动?这些波动反应了召唤师们对游戏理解的哪些改变?
以及最终的目标:
哪些数据会影响比赛结果,是正向相关还是负向相关?是否能从前10分钟比赛数据预测最终的比赛结果?预测的准确率是多少?
在进行数据探索之前,首先要考虑这些数据的均值等是否能代表全部数据的真实情况。
举个简单的例子,这10000条数据是否都是在同一游戏版本中进行的。如果发生过版本变动,那么其中一个版本的数据并不能代表另一个版本的真实情况。同样,如果数据不是发生在同一版本中,预测比赛结果也就无从谈起。
在原始数据中包含了每场比赛的唯一id(gameId),观察比赛id可以得知这些id在原始数据中是是乱序,但是id前三位数之间的差距不大。例如连续三行数据的id可能是:
450xxxxxxx
447xxxxxxx
449xxxxxxx
由此可以推测出两种可能性:
假设以比赛id是真实的时间顺序
从下方蓝色方胜败场数图中可以看出比赛id为42XXXX,43XXXX,44XXXXXX,45XXXX 之间的比赛总数量相差很大,不应该为不同版本之间的差异。
并且10000场比赛对于英雄联盟美服来讲也并不是特别大量的比赛场次。
因此暂推测比赛数据发生在同一游戏版本中,并且原始数据表的顺序即为真是比赛时间发生顺序。 ▼
那么要探索的问题:
一、前10分钟的平均数据是什么样的,从平均数据中推测钻一到大师分段前10分钟比赛时会出现的情况。
对这些数据进行汇总:
二、随着服务器中比赛场次的增加以及玩家对游戏版本理解的深入,游戏数据是否发生波动?这些波动反应了召唤师们对游戏理解的哪些改变?
原始数据本身是没有时间属性的。为了探寻比赛数据随比赛发生时间(非比赛内时间)的变化,我这里将全部数据按原始数据顺序分为5份,分别标记为“A、B、C、D、E”5个阶段。对数据进行探索。
再次说明,10000场数据量并不是很大,很可能这些数据仅产生在几天内。短时间的数据波动可能并不能真实代表玩家玩法的变化。以下内容为探索。
三、哪些数据会影响比赛结果,是正向相关还是负向相关?是否能从前10分钟比赛数据预测最终的比赛结果?预测的准确率是多少?
我们最想知道的还是是否能从前10分钟数据中预测比赛结果。使用机器学习的方法对数据进行分析。在本文中只接单介绍过程。
并通过相关系数矩阵简单探索数据相关性。▼
输入模型前的一些处理
包括数据正则化,去掉部分无用特征,分割训练数据和测试数据等等。我这里将20%数据分割为测试数据。
模型融合
采用Stacking框架融合。第一层使用RandomForest、AdaBoost、ExtraTrees、DecisionTree、KNN、SVM ,一共6个模型。
第二层使用XGBoost对数据进行最终预测。采用准确率accuracy_score方法对预测结果进行评分。
最终评分0.729分。后续有继续优化空间,例如根据特征重要性筛选特征,组合部分特征,参数优化等。▼