用对线阶段数据分析和预测《英雄联盟》的游戏结果

简介: 用对线阶段数据分析和预测《英雄联盟》的游戏结果

640.jpg

使用来自大约10K的前10分钟数据来预测高elo排名游戏的结果

介绍

《英雄联盟》是一款以团队为基础的战略游戏,两支拥有五名强大召唤师的队伍将面在峡谷中进行对决,而团队的目标是拆掉对方的基地。

一场典型的英雄联盟游戏通常需要持续30到45分钟,并且每个游戏可以分为三个阶段:对线阶段,中期和后期。玩家通常会花前10到15分钟在自己的分路(上,中,下,JG)中进行发育,以尽早获得装备和等级上的优势。在游戏的中期阶段,玩家开始专注于宏观层面:推线,拆塔,获取地图目标(男爵,小龙)以及进行区域的小团战。在后期游戏中,如果游戏尚未结束,则每个团队都必须决定如何结束游戏,例如:压制男爵/长老龙或1-4分推等。

在此项目中,我使用了Kaggle收集的名为“ michel's fanboi”的数据,数据集包含前10分钟。大约统计 从高ELO(钻石I到大师)的10k排名游戏(SOLO QUEUE)。可以在此处找到完整的描述和数据源(https://www.kaggle.com/bobbyscience/league-of-legends-diamond-ranked-games-10-min

每个团队的英雄组合将对游戏结果有着至关重要的影响,因为有些英雄在游戏早期很强大,而其他英雄将在游戏中后期大幅增长。这就是为什么所有的排名游戏和职业游戏在比赛前都会有一个ban/pick阶段。然而,玩家通过技能和地图意识对游戏产生的影响并不会在英雄组合技能衔接中体现出来。特别是一些玩家,比如RNG。无论对手是否有反挡拆,Uzi在对线阶段都可以获得明显的优势。

同时,我们可以看到,在很多高级游戏,团队组合,特别是游戏后期的组合,在对线阶段会出现更多的不确定性,如一个团队如果能在对线获取非常大的的优势,那么对手即便是后期的英雄,有时候也会输掉比赛。我的目标是了解兑现阶段的表现(前10分钟)是如何影响最终结果的。

我使用Jupyter笔记本和R studio作为代码编辑器。我使用Pandas、NumPy和Matlibplot包进行了一些数据探索。然后,我实现了9个模型,包括集成模型、叠加模型和其他7个分类器。一致性最高的模型为叠加模型,其交叉验证的平均正确率为0.732158,标准差为+/- 0.005171。

数据探索

数据集共有9879场比赛的信息,其中蓝队获胜4930场,占49.9%。这是一个非常平衡的数据集。

图1显示了两个团队的死亡人数。紫分表示红队获胜,黄分表示蓝队获胜。我了解到蓝队在前10分钟杀死超过15人后赢得了所有的比赛。蓝队的胜率在戏剧性地杀死7人之后开始上升。

640.png

图1

图2显示了两支球队的助攻次数。这与杀戮情节有着相同的模式。然而,在对线阶段,每支队伍只有一场比赛可以杀死20个以上,而在对线阶段,有许多比赛双方都能得到20次以上的助攻。这表明,大多数的杀戮可能来自下路,或者是打野gank了很多次。

640.png

图2 助攻

图3显示了获取金钱数的比较。这张图给了我一个明显的暗示,如果蓝队能在前10分钟内获得2万枚以上的金牌,他们就极有可能赢得比赛。我还手动设置了一个“绿色区域”,即蓝色团队在前10分钟内获得超过21,055枚金牌的游戏。在这个数据样本中,蓝色队伍赢得了所有落在“绿色区域”的比赛。

640.png

图3 玩家金币

然后,我研究了蓝队在对线阶段取得的金币差异与比赛结果之间的关系。图4显示,当蓝队在前10分钟(红区)的金币差距在-6324和6744之间时,比赛非常不稳定,最终结果可能对任何一方有利。

640.png

图4 团队金币

在《英雄联盟》的游戏中,在游戏中后期拥有更好视野的团队更容易获得主动权。然而,在游戏早期,视野有多重要?图5并没有显示出视觉在早期游戏中的重要性,这有点超出了我的预期。

640.png

图5 视野

图6显示了蓝队在对线阶段的经验差异与比赛结果之间的关系。当游戏在前10分钟的经验差大约是+/- 5000 XP时,游戏实际上是50-50。在一个普通的框架游戏中,中路和上路可以在大约10分钟内的差距可以达到8级,下路和打野可以分别达到6级。从7级到8级需要1150 XP,从5级到6级需要880 XP。5000经验优势意味着在早期游戏中,每条通道平均会提高至少1级(1150*2+880*3=4940)。

640.png

图6 经验差距

除此之外,我还发现了一些有趣的统计数据:

  1. 当蓝队的KDA在前10分钟大于或等于3时,他们有76.51%的胜率。
  2. 当蓝队能够在前10分钟内摧毁一座塔时,他们的胜率为75.43%。
  3. 当蓝队在前10分钟杀死8个人时,他们有69.86%的胜率。

工程特性

因为游戏中有许多价值较大的功能,如经验,总金币等。我对这些特性应用了StandardScaler()和MinMaxScaler()。在测试之后,我决定对项目的其余部分使用StandardScaler()转换。

我还创建了以下功能:

blueKDA/redKDA:蓝队在前10分钟内的杀死比。它是由[(blueKills+blueAssists)/blueDeaths]计算的。我也使用了相同的过程来创建redKDA。

KDADiff:两队之间的KDA差。计算方法为[blueKDA-redKDA]。

blueGoldAdv:这个特性是一个二元变量。它表示蓝队在比赛开始的10分钟内是否至少有20000枚金币的优势。

blueDiffNeg:这个特性是一个二元变量。它表示蓝队在比赛开始前10分钟的金牌差距是否小于或等于-6324。

blueDiffPos:这个特性是一个二元变量。它表示蓝队在比赛开始前10分钟的金牌差距是否大于或等于6744。

建模

因为实际上没有设置检验标准模型有效性的工具,所以这里选择使用交叉验证技术,并使用准确性和ROC作为评估指标。

我测试了以下9种模型:

AdaBoostClassifier, CatBoostClassifier, XGBoostClassifier, SupportVectorClassifier, LogisticRegression, RandomForestClassifier, KNeighborsClassifier,EnsembleVoteClassifier, StackingClassifiereclf=EnsembleVoteClassifier(clfs=[cat,logreg, knn, svc,ada,rdf,xgb], weights=[1,1,1,1,1,1,1])
labels= ['CatBoost','Logistic Regression', 'KNN', 'SVC','AdaBoost',"Random Forest",'XGBoost','Ensemble']
cv=KFold(n_splits=5, random_state=2022,shuffle=True)
forclf, labelinzip([cat,logreg, knn, svc, ada, rdf, xgb,eclf], labels):
scores=cross_val_score(clf, info_x, info_y,
cv=cv,
scoring='accuracy',
n_jobs=-1)    
print("[%s] Accuracy: %0.6f (+/- %0.6f) Best: %0.6f "% (label,scores.mean(), scores.std(), scores.max()))

图7显示了这九个模型的输出。经过超参数调整后,堆叠模型的平均准确度为0.732158,为第三佳得分。尽管如此,它的标准偏差也最低,表明它在防止交叉验证测试中过拟合方面表现最佳。集成模型和堆叠模型的ROC得分也最高和第二。

640.png

图7

plt.figure()
lw=1#knnknn.fit(X_train,y_train)
knn_pred=knn.predict_proba(X_test)
fpr, tpr, threshold=roc_curve(y_test,knn_pred[:,1])
roc_auc=auc(fpr, tpr)
plt.plot(fpr, tpr, color='tab:blue',
lw=lw, label='KNN ROC curve (area = %0.4f)'%roc_auc)
... ...
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([-0.02, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC curve')
plt.legend(loc="lower right")
plt.show()

图8是我上面提到的所有模型的ROC图:

640.png

图8

错误预测分析

在该项目结束时,我将数据集按7:3的比例分为训练和测试数据集,并使用堆叠模型对训练数据集进行拟合。然后,我对模型错误预测的实例进行了更多分析。我想了解,在什么样的条件下游戏将变得更加不可预测。

图9和图10展示了两个团队在前10分钟的总金牌和总经验。这两幅图清楚地表明,拥有早期金牌优势和经验的球队最终输掉了比赛。测试集中有799个错误的预测。

640.png

640.png

我也更进一步研究了打野的表现,因为在对战游戏中,两个团队的上路者通常都需要打野的帮助才能获得主动权。图11显示了打野的表现。这是整个测试数据集,错误的预测和正确的预测分别在“ blueTotalJungleMinionsKilled”和“ redTotalJungleMinionsKilled”之间的平均差异。错误预测的“ JGDiff”小于整个测试数据集的平均水平,这意味着当蓝色打野的表现超出平均水平时,预测会变得更加困难。

640.png

结论

我的模型显然遇到了瓶颈,因为它们均无法产生高于0.75的准确性得分。我的假设是最终数据集仅包含44个要素,这是一个非常低维的数据集,因为《英雄联盟》可能从每场游戏中捕获数百个变量。对于进一步的实验,可以将诸如英雄组合,时间范围,特定玩家的冠军熟练度等功能纳入分析。

英雄联盟是过去十年来全球最受欢迎的游戏之一。它召集了来自不同地区的玩家,让他们在召唤师峡谷中分享快乐。即使我试图预测排名游戏的结果,但我始终理解,保持游戏魅力的唯一方法就是使其尽可能不可预测。最激动人心的时刻总是伴随着巨大的复出而进行的终极小组战斗。


目录
相关文章
|
机器学习/深度学习 存储 数据采集
数据分析案例-基于多元线性回归算法预测学生期末成绩
数据分析案例-基于多元线性回归算法预测学生期末成绩
1145 0
数据分析案例-基于多元线性回归算法预测学生期末成绩
|
10月前
|
SQL 关系型数据库 MySQL
边锋 x AnalyticDB MySQL:打造一站式游戏数据分析平台
杭州边锋网络技术有限公司是国内领先的休闲游戏开发商、运营商、发行商。20余年来,边锋网络一直是中国棋牌游戏的开拓者和变革者。  边锋网络市场覆盖20余个省份,注册用户过亿,月活跃用户上千万,是国家级重点软件企业(一类)。公司大数据分析系统"反应堆"目前支持着包括雀神广东麻将、边锋斗地主、蜀山四川麻将、功夫川麻等10余款休闲游戏产品;
|
10月前
|
关系型数据库 MySQL 数据挖掘
助力游戏运营数据分析
本体验通过多产品组合构建了游戏数据运营分析平台,提供全面的游戏运营指标分析功能,并有效的分析渠道效果。更加有效地掌握游戏运营状态,也可充分利用数据分析的结果改进产品体验,提高游戏收益。
149 0
|
机器学习/深度学习 数据采集 数据可视化
【DSW Gallery】数据分析经典案例:Kaggle竞赛之房价预测
Python是目前当之无愧的数据分析第一语言,大量的数据科学家使用Python来完成各种各样的数据科学任务。本文以Kaggle竞赛中的房价预测为例,结合JupyterLab Notebook,完成数据加载、数据探索、数据可视化、数据清洗、特征分析、特征处理、机器学习、回归预测等步骤,主要Python工具是Pandas和SKLearn。本文中仅仅使用了线性回归这一最基本的机器学习模型,读者可以自行尝试其他更加复杂模型,比如随机森林、支持向量机、XGBoost等。
【DSW Gallery】数据分析经典案例:Kaggle竞赛之房价预测
|
机器学习/深度学习 算法 数据挖掘
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(二)
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命
1066 2
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(二)
|
机器学习/深度学习 数据采集 存储
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(一)
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命
1549 0
数据分析案例-基于随机森林算法探索影响人类预期寿命的因素并预测人类预期寿命(一)
|
数据采集 数据可视化 数据挖掘
数据分析案例-旅游景点票价预测
数据分析案例-旅游景点票价预测
268 0
数据分析案例-旅游景点票价预测
|
数据采集 机器学习/深度学习 数据可视化
数据分析案例-二手车价格预测
数据分析案例-二手车价格预测
233 0
数据分析案例-二手车价格预测
|
存储 机器学习/深度学习 SQL
见微知著,带你认认数据分析的大门,站在门口感受一下预测的魅力
预就是预先、事先,测就是度量、推测。预测通常被理解为对某些事物进行事先推测的过程。其实预测这个概念并不是我们第一次接触到,而是它从古至今都和我们的生活息息相关.而且在计算机技术飞速发展的DT时代,它一直伴随着我们,充斥着生活的方方面面,我们每个人都想更准确地预见未来,来掌握甚至改变事态的发展轨迹.所以用一句简单的话来概括就是:预测是一门研究未来的学问。从古至今都有人不断在研究它,应用它,而且研究的方法和理论也在不断地发展和完善,从古代的占卜术到如今的大数据和人工智能,预测的形式,方法,理论,技术,意义和作用发生了极大的变化.而且在数据科学的加持下,它建立于数据分析的基础上,预测不再是神秘的,而
800 3
|
机器学习/深度学习 数据可视化 数据挖掘
贷款违约预测-Task2 数据分析(下)
贷款违约预测-Task2 数据分析(下)
318 0
贷款违约预测-Task2 数据分析(下)

热门文章

最新文章