PUBG

1. 数据获取及预处理

1.1 数据来源

本项目采用Kaggle所提供的PUBG Finish Placement Prediction数据集。Kaggle官方提供两个数据集:测试集和预测集。

1.2 数据说明

PUBG游戏统计信息,每一行都包含一个玩家的赛后统计信息。包括如下:

  • DBNOs - 击倒的敌方玩家数量。
  • assists - 助攻数,该玩家造成伤害并被队友杀死的敌方玩家数量。
  • boosts - 使用的能量物品数量。
  • damageDealt - 该玩家造成的总伤害。注意:减去自我造成的损害。
  • headshotKills - 爆头杀死的敌方玩家数量。
  • heals - 使用的治疗物品数量。
  • id - 玩家ID
  • killPlace - 该场比赛杀敌排行。
  • killPoints - Elo杀敌排名。
  • killStreaks - 连续杀敌数,在短时间内杀死的敌方玩家数量上限。
  • kills - 杀死敌方玩家的数量。
  • longestKill - 最远杀敌距离。
  • matchDuration - 比赛持续时间(以秒为单位)。
  • matchId - 该场比赛ID。
  • matchType - 该场比赛的模式。标准模式是“ solo”,“ duo”,“ squad”,“ solo-fpp”,“ duo-fpp”和“ squad-fpp”;其他模式来自事件或自定义匹配。
  • rankPoints - 类似于 Elo的玩家排名。此排名不一致,并且在API的下一版本中已过时,请谨慎使用。值-1代替“无”。
  • revives -该玩家救起队友的次数。
  • rideDistance - 车辆行驶的总距离,以米为单位。
  • roadKills - 驾车击杀数。
  • swimDistance - 游泳行进的总距离,以米为单位。
  • teamKills - 该玩家杀死队友的次数。
  • vehicleDestroys - 销毁的车辆数量。
  • walkDistance - 步行的总距离,以米为单位。
  • weaponsAcquired - 拾取的武器数量。
  • winPoints - 基于胜利的玩家外部排名。(将其视为仅影响获胜的Elo排名。)如果rankPoints中的值不是-1,则winPoints中的任何0都应被视为“无”。
  • groupId - 该场比赛玩家所在的组的ID。
  • numGroups - 在比赛中有数据的组数。
  • maxPlace - 最差的排名。
  • winPlacePerc - 预测目标百分比排名。

1.3 数据预处理

  • 由于测试集没有最后预测的标签,且训练集有4446966条数据,所以将训练集进一步按比例切分为训练集和测试集。
  • 删除具有缺失值的记录:根据缺失值统计,除了winPlacePerc中有一个缺省值,其余都没有。同时因为它是用户特定的值,我们不能按照一般的缺省值处理去估计/猜测它,所以直接删除winPlacePerc中的缺少值

2. 数据分析与可视化

数据探索性分析的结果,可以使用统计工具,聚类分析等工具 使用可视化来展示分析结果

2.1 热力图

首先我们用热图来大致了解相关特征:

显然从热力图中我们可以看到颜色越深代表代表两个属性之间的相关性程度越高,比如很好理解的 杀敌数(kills)连续杀敌数(killStreaks) 两个属性与 本场杀敌排行(killPlace) 之间的相关性程度分别为0.73和0.81;同时 Elo排名(RankPoints)胜率Elo排名(winPoints) 的相关性高达0.99。

‘kills’与’damageDealt’和’killPlace’,’DBNOs’,’headshotKills’,’killStreaks’,’longestKills’高度相关,而与’winPlacePerc’相关性较低。

‘winPlacePerc’与’walkDistance’,’weaponsAcquired’,’boosts’高度相关,而与’damageDealt’,’kills’和’heals’相关度较低。’killPoints’与’winPoints’高度相关。

2.2 玩家选择的比赛的类型

通过下图所以我们可以得出结论,squad-fpp(四人组队第一视角)是最受欢迎的比赛类型,其次是duo-fpp(两人组队第一视角)normal-duo是最不常用的游戏类型。

2.3 比赛类型与胜率之间的关系

结论:

  1. 虽然squad-fpp是最受欢迎的比赛类型,但它也有更多的损失。
  2. duo-fpp是第二受欢迎的比赛类型,没有出现比赛失败的情况。
  3. squad是第三大最受欢迎的比赛类型,但是相比于squad-fpp赢得比赛的记录比输了的记录更多。
  4. duo是一种不受欢迎的比赛类型,事实证明这是合理的,因为大部分都带来了失败。

2.4 杀敌数与胜利的关系

我们从以下点进行分析:

  1. 杀敌数越多才会赢吗?
  2. 伤害与杀敌数成比例吗?
  3. 更多的伤害意味着更好的胜利吗?

我们得出以下结论:

  1. 大部分的比赛胜利百分比有非常低的杀死计数(0-3)
  2. 大部分的比赛失败百分比是杀死计数==0。

然而,由于在整个比赛中都没有杀死对手,所以输掉比赛比赢下比赛更常见。

随着杀敌数次数的增加,我们看到,我们需要一个像样的杀敌数来赢得一场比赛(杀死大于3个),即杀死

所以,我们可以得出否定的结论。杀敌数量与赢/输有很低但很明确的相关性。杀死

2.5 kills和winPlacePerc的关系

我们有如下结论:

  1. winPlacePerc和kills是中度相关的。因此,从之前的热力图中获得的信息是合理的。
  2. 为了获得胜利,获取一些技能是绝对必要的(阈值=3),而不是躺下来掩盖和隐藏。
  3. 不能以较低的杀戮为目标。当然更高的杀戮确实证明了玩家的技能并保证了更高的获胜机会。

2.6 杀敌数很低时的策略

如果胜利者的杀敌数很低时,那么应该关注伤害来得分吗?

  1. 找到杀敌数的伤害指标。
  2. 找出比赛失败的伤害指标。

结论:

  1. 就最小的伤害而言,输掉一场比赛的可能性要比赢得一场比赛的可能性高。
  2. 对于赢了的比赛中,最大的伤害是在6700左右。
  3. 对于输了的比赛中,最大的伤害发生在2900左右。
  4. 如果玩家伤害小,他们更容易输掉比赛。

所以,我们可以得出这样的结论,伤害大小与获胜的关系很低。

3. 模型选取

围绕选题要解决的问题,考虑使用哪些模型来进行挖掘 说明选择的理由

针对游戏排名的预测任务,我们拟选用3种模型进行对比实验:Random Forest、Linear Regression、MLP,理由如下:

  • Random Forest:其具有——对于不平衡的分类资料集可以平衡误差、计算各例中的亲近度(对于数据挖掘、侦测离群点非常有用)、学习过程很快速等优点。
  • Linear Regression:思想简单,实现容易,建模迅速,是许多强大的非线性模型的基础。线性回归模型十分容易理解,结果具有很好的可解释性,有利于决策分析。
  • MLP:有多个神经元层,在每一个网络层中,函数特点被一步步的抽象出来,下一层网络直接使用上一层抽象的特征进行进一步的组合;可以学习非线性模型。

4. 挖掘实验的结果

  1. 采用平均绝对误差(Mean Absolute Error,MAE)作为目标检测模型评价指标。
  2. 结果:

      train test
    MAE 0.03296253211891947 0.05811984523118771

5. 存在的问题

  1. 目前的可视化分析暂时只做整体数据的。
  2. 只做了一个模型的预测,且预测结果有待提高

6. 下一步工作

  1. 后续会完善整体数据可视化和做异常值数据处理的分析。
  2. 完成另外两个模型的构建。
  3. 将3个模型预测结果进行对比分析。

7. 任务分配与完成情况

  • 李敏琴:
    • 任务分配:负责预测模型的训练和模型性能的评估
    • 完成情况:完成了Random Forest模型的预测和性能评估
  • 劳安:
    • 任务分配:负责预测模型的训练和模型性能的评估
    • 完成情况:完成了Random Forest模型的预测和性能评估
  • 杨雅逸:
    • 任务分配:负责对预测之前的数据进行分析并对预测前后的数据进行分析
    • 完成情况:已完成预测之前的整体数据分析,接下来完善异常值分析和数据可视化分析
  • 殷昕:
    • 任务分配:负责对预测之前的数据进行分析并对预测前后的数据进行分析
    • 完成情况:已完成预测之前的整体数据分析,等3个模型预测结果出来后做对比分析