【Kaggle】PUBG MOBILEでドン勝するためにデータ分析してみた
スポンサーリンク
こんにちは。talosです。
最近、PUBG MOBILEにハマっています。
でもドン勝するのって難しいです。
そこでふと思い出しました。
「KaggleにPUBGのコンペがあったな」と。
PUBGのデータを分析して、ドン勝を目指したいと思います。
データセット
特徴量 | 内容 |
---|---|
DBNOs | 敵をノックアウトした回数 |
assists | アシスト数 |
boosts | ブーストアイテムを使った回数 |
damageDealt | 敵にダメージを与えた量 |
headshotKills | ヘッドショットでキルした回数 |
heals | 回復アイテムを使った回数 |
Id | プレイヤーID |
killPlace | その試合におけるキル数の順位 |
killPoints | キルベースのランキング |
killStreaks | 連続キル数 |
kills | キル数 |
longestKill | キルしたときの最長距離 |
matchDuration | 試合時間(秒) |
matchId | マッチID |
matchType | マッチタイプ(ソロ、デュオ、スクワッドとTPP、FPP) |
rankPoints | ランク |
revives | 復活させた回数 |
rideDistance | 乗り物に乗って移動した距離(m) |
roadKills | 乗り物によるキル数 |
swimDistance | 泳いで移動した距離(m) |
teamKills | チームキル数 |
vehicleDestroys | 乗り物を破壊した回数 |
walkDistance | 乗り物を使わずに移動した距離(m) |
weaponsAcquired | 武器を拾った回数 |
winPoints | 勝利数ベースのランキング |
groupId | グループID |
numGroups | その試合のグループ数 |
maxPlace | その試合の最下位 |
winPlacePerc | 勝利順位 |
なお、string型の特徴量はダミー変数に置き換えるべきですが、メモリが足りなくなるため使用しません。
分析1:相関
相関を表すヒートマップは以下のようになりました。
勝利順位は「ブーストアイテムを使った回数」、「乗り物を使わずに移動した距離」、「武器を拾った回数」と正の相関があり、「その試合におけるキル数の順位」と負の相関があります。
分析2:ランダムフォレスト
ランダムフォレストは特徴量の重要度を知ることができる機械学習アルゴリズムです。
下のようなプログラムを作りました。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split %matplotlib inline df = pd.read_csv('../input/pubg-finish-placement-prediction/train_V2.csv') # 欠損値を含む行削除 df.dropna(inplace=True) df.head() # 欠損値を含む行削除 df.dropna(inplace=True) df.head() # ランダムフォレスト rf = RandomForestRegressor(n_estimators=10, max_depth=10, random_state=0) rf.fit(train_X, train_Y) score = rf.score(test_X, test_Y) print(score) # 特徴量の重要度 feature = rf.feature_importances_ label = train_X.columns[0:] index = np.argsort(feature)[::-1] for i in range(len(feature)): print(str(i+1)+' '+str(label[index[i]])+' '+str(feature[index[i]]))
出力は正解率と特徴量の重要度です。
正解率は90%ということでそれなりに信用できそうです。
重要度を見ると乗り物を使わずに移動した距離」が圧倒的です。
次いで重要なのが「その試合におけるキル数の順位」。
勝利順位と相関が高かった「ブーストアイテムを使った回数」、「武器を拾った回数」はそれぞれ8位と11位という結果になりました。
「乗り物を使わずに移動した距離」と「その試合におけるキル数の順位」は勝利順位と相関が高く、ランダムフォレストでの重要度も高いためある程度信用してよさそうです。
ただ、「勝利順位が高い=生存時間が長い」ため、結果的に移動距離とキル数の順位が伸びたという可能性もありそうです。
結果を踏まえて実践
スクワッドでやりました。
開始直前に1人消えてしまい、3人でやることに。
結果は、、、
おしい!
あと1人のところで撃ち負けてしまいました。
意識して移動を増やしましたが、それが2位に繋がったかというと「うーん」という感じです。
やはり、勝利順位が高いと必然的に移動距離やキル数などが増えるため、あまり意識する必要はないのかな?と思いました。
まとめ
残念ながらドン勝はできませんでした。
データを分析した結果、「乗り物を使わずに移動した距離」や「その試合におけるキル数の順位」が勝利順位に大きく関わることがわかりましたが、結果的なものであると感じました。
みなさんもどうなるか試してみてください。