近日,《絕地求生》(PUBG)MET亞洲邀請賽中國兩個賽區的7支戰隊戰隊所有退賽的消息驚呆全網。算法
緣由很簡單:app
「有人做弊了,官方卻無論。」機器學習
《絕地求生》(PUBG)官方稍後也宣稱,因不能確保MET Asia Series:PUBG Classic的競技公平性的緣由,特此聲明:取消MET亞洲邀請賽爲PGC輸送賽區席位的資格。ide
線上線下譁然一片。函數
這是繼《絕地求生:刺激戰場》改名爲《和平精英》,世界觀大換血後又一圈內勁爆新聞,MET亞洲邀請賽爲PUBG官方受權,現場徇私舞弊,無人管制,無疑爲電子競技圈又一大污點,致使不良風氣亂心。工具
姑且不論主辦方消極怠工、疏忽職守,那些涉嫌做弊的隊伍和選手已然失去做爲一名優秀電子競技選手的驕傲。性能
是生性如此,爲獲勝不擇手段?學習
仍是擔憂水平不夠,吃不到雞?測試
做爲普通玩家,咱們又該怎樣預測吃雞玩家和比賽趨勢,提升吃雞機率?優化
下面小芯芯,將經過機器學習預測的方式,告訴你們如何在看比賽時成爲吃雞大師,以及更好更快地在絕地求生中吃雞成功。
《絕地求生》(PUBG)做爲一款現象級電腦遊戲,每個月活躍玩家高達數百萬。
主要背景和規則是:每場競賽中,100名玩家乘坐飛機,被投送到一個海島上的不一樣地點。他們必須搜尋物資、武器並與其餘玩家展開大逃殺,直至最後一人存活。每位玩家能夠選擇與最多三名其餘玩家組隊或單人遊戲。同時,玩家還必須在不斷縮小和移動的「毒圈」內部活動。
接下來,咱們將嘗試在機器學習中完成特徵工程,包括偏差分析、特徵空間評估、集成和調試處理,具體的實驗工具爲Weka和Lightside。
注意!這篇文章不會教授任何代碼,但能夠展現一個機器學習過程的綜合案例,包括數據清理、數據集拆分、交叉驗證和特性設計。
注意!前方高能!
數據集傳送門:
https://www.kaggle.com/c/pubg-finish-placement-prediction_blank
Kaggle中的數據集爲本實驗提供了超過445萬個實例和28個特徵。其中有表明每局遊戲的匹配ID、表明每一個隊伍的隊伍ID(從1到4不等)以及表明每一個玩家的玩家ID。咱們將數據格式化以確保一個實例僅統計一名玩家的賽後數據。特徵則包括玩家在遊戲中的表現,如扶起隊友的次數、擊殺次數、步行距離等。還有一些外部排名特徵來表示玩家在遊戲中的表現。每場遊戲的最終排名百分位數爲0-1(1表示第一名而0表示最後一名),咱們將該百分位數重建爲最終預測類。
本文選擇「組隊」模式,玩家能夠匹配一個1-4人的小隊與其餘隊伍對抗,由於數據集中的不少特徵都與隊伍表現有關。咱們將表明每一個玩家的實例轉換爲表明每一個組的實例,並獲取特徵的平均值和一些標準誤差。每局遊戲都任意選取兩個隊伍,看看哪一隊排名更高。在訓練集和測試集中,將最終排名百分位數轉換爲「獲勝預測」,該值能夠顯示排名較高的隊伍,以實現二元預測。
另外還添加了一些有意義的特徵進行比較,將這些特徵的差別也做爲值,例如隊伍人數差別、擊殺等級差別、步行距離差別和裝備獲取數量差別。數據清理方面,刪除了不合理的數據,例如同一局遊戲中的重複玩家、負排名和人數大於4的隊伍。
同時還按照隨機順序拆分數據集,拆分比例以下:交叉驗證集70%,開發集20%,測試集10%。咱們想預測的是,一局遊戲中隨機挑選兩個隊伍,哪一個隊伍會獲勝,所以,該預測的分類是winnerPrediction。清理數據後,共有6576個實例,65個特徵。在獲勝預測中,「隊伍二」和「隊伍一」在每一個拆分數據集中各佔大約50%。
首先對開發集進行了探索性數據分析,以更好地瞭解數據。如下是一些有趣的發現。
玩家更喜歡單排仍是組隊?
隊伍規模的分佈很是類似,集中在1人小隊和2人小隊。看來大多數玩家更喜歡單排或雙排。
剛槍的隊伍是否更有可能吃雞?
用隊伍二的擊殺等級減去隊伍一的擊殺等級能夠得出擊殺等級差別分佈,數據分析發現該差別呈正態分佈。所以,在下圖右側,Y軸爲正數時,隊伍二排名較低,下圖左側,Y軸爲負數時,隊伍二排名較高。紅色區域爲隊伍二獲勝,藍色區域則爲隊伍一獲勝。下圖代表,大多數狀況下,擊殺等級高的隊伍更有可能吃雞。
移動和隱蔽,哪一種策略更好?
用隊伍二的步行距離減去隊伍一的步行距離能夠得出步行距離差別分佈,一樣呈正態分佈。所以,圖的右側Y軸爲正數時,隊伍二的步行距離大於隊伍一,圖的左側Y軸爲負數時,隊伍二的步行距離小於隊伍一。紅色區域爲隊伍二獲勝,藍色區域則爲隊伍一獲勝。下圖代表,大多數狀況下,移動距離更多的隊伍更有可能吃雞。
咱們選擇從邏輯迴歸開始,由於全部的特徵都是數字數據,預測也是二進制的,權重模型會很是實用。而用樹狀模型分析65個特徵費時費力。分析的基線性能以下(準確率0.8905,kappa係數0.7809)。
一些實例預測隊伍二會獲勝,但實際是隊伍一獲勝,首先檢查了這部分實例,即將水平差別由大到小排序,而後查看權重相對較大的特徵。咱們發現,步行距離差別有較大的水平差別和特徵權重。步行距離差別是由同一場比賽中隊伍二的步行距離減去隊伍一的步行距離計算得出的,所以負數表示隊伍二走得較少,正數表示隊伍二走得較多。這意味着,步行距離越多就越有可能吃雞(這在遊戲中很重要,關乎玩家的生存時間)。可是也有例外,可能某個隊伍喜歡剛槍,常常在野外移動,致使很快就被淘汰,而另外一組則打得更謹慎,大部分藏匿在一個地點,最終存活時間更長。
爲了進一步解決這個問題,咱們還下載了CSV文件中的預測標籤,查看了那些預測隊伍二獲勝而實際隊伍一獲勝的實例,而後將步行距離差別從大到小排列,以便查看隊伍二步行距離更長卻輸掉遊戲的特例。
咱們發現有時隊伍二步行距離確實比隊伍一長,但隊伍一載具移動距離更長(在遊戲中,玩家能夠選擇駕駛發現的載具)。以下圖標黃的實例所示,不少隊伍步行距離確實沒有其餘隊伍長,但駕駛距離要長得多。同時,駕駛距離也是第二大水平特徵差別。所以,僅僅測量步行距離或駕駛距離都不能很好地表示總移動距離。這兩個特性彷佛都存在必定問題,須要更合適的表示方法。
所以,咱們結合步行距離和駕駛距離提出了3點新特徵:隊伍1、隊伍二的總移動距離以及兩隊之間的距離差別。
咱們在開發集中測試了新的特徵空間,取得了一項不起眼的改進。雖然不起眼,預測隊伍二獲勝但實際隊伍一獲勝的實例減小了5個,而且預測結果更正爲隊伍一。
然而將其應用於交叉驗證集時,性能卻下降了。最合理的解釋就是這項改進在開發集中過分擬合,而且沒有推廣到新數據集中。
緊接着,經過檢查垂直絕對差別進行另外一項偏差分析。因爲新的開發集會引入更多偏差,致使實例預測隊伍一獲勝但實際是隊伍二獲勝,咱們的目標就是弄清楚,在這些實例中,隊伍一和隊伍二有何類似之處。擊殺排名第1的特徵垂直差別較小,但特徵權重較大。該排名僅反映隊伍一的擊殺量排名。隊伍一的獲勝平均擊殺排名是34,失敗平均擊殺排名是43。例外是,有時隊伍一的擊殺排名達到了34但仍輸了。前面已經提到了,有時候一個隊伍更喜歡剛槍,因此擊殺敵人更多,擊殺排名更高,但同時他們被擊殺的風險也就越大。
此處的啓示是,邏輯迴歸擅長全局分析,但也可能會受到一些極端狀況的影響。所以須要一種能夠忽略極端例外狀況的算法,且一次僅查看一組較小的數據。決策樹是一個不錯的模型,但因爲總共有68個數字數據特徵,因此決策樹須要花費大量時間來構建模型。可是,若是綜合決策樹和邏輯迴歸的優勢呢?邏輯模型樹(LMT)是一個很好的選擇,由於它能夠捕獲非線性模式和更大的差別。因而咱們開始嘗試LMT,並將結果與其餘兩種算法的結果進行比較,最終發現開發集有了明顯的改進。
將該模型應用於交叉驗證集,一樣取得了顯著的改進。
Boosting算法能夠在迭代過程當中對先前模型分類錯誤的實例進行專項檢查,所以在該研究中,Boosting是提升準確度的好方法。因而嘗試在開發集中使用配備了LMT分類器的AdaBoost,但是性能降低了。
因爲特徵空間相對複雜,接下來試圖減小可能成爲壞指標的特徵。嘗試屬性選擇分類器並使用主體成分做爲屬性評估器,由於主體成分能夠減小特徵空間的維數,同時儘量地保留信息。但最終性能仍是降低了。
而後又嘗試了cfs子集評估器,由於不少特徵都是相互關聯的(例如擊殺排名和擊殺得分)。該評估器能夠有選擇性地保留特徵之間有用的關聯,防止特徵重複,但性能依然不及基線性能。
接下來又嘗試了另外一個不錯的評估器——SVM屬性評估器,由於它採用的是向後選擇法,適用於較大的特徵空間,可是Weka和Lightside不支持這種方法。
除了以前嘗試過的包裝器(wrapper)方法外,咱們還想知道過濾器(filter)方法是否能夠提高性能,由於過濾器能夠單獨選擇算法之外的特徵。
再次嘗試了屬性選擇評估器,一樣將主體成分做爲評估器。三種不一樣的空間分別爲原始特徵空間(68個特徵)、40個特徵和20個特徵,而且作了一個實驗來測試這三種特徵空間。但其餘兩種新的特徵空間均下降了性能。咱們又測試了其餘評估器,結果不變,最後決定維持原特徵空間。
咱們想調試LMT算法中的兩個參數。實例最小數量的默認值是15,但咱們想改爲50,看看加入更多節點拆分的實例可否提高每一個節點的準確性,從而提高總體性能。Boosting迭代的默認值是-1,這代表沒有迭代。咱們想將默認值改成3,測試一下是否能提高分類精確度。
所以,咱們測試瞭如下四種設定:(1)節點拆分實例最小數量爲15,Boosting迭代值爲-1(即無迭代),(2)實例數量爲50,Boosting迭代值爲-1,(3)實例數量爲15,Boosting迭代值爲3,(4)實例數量爲50,Boosting迭代值爲3。注意,設定(1)爲默認設定。將精確度做爲性能的衡量標準。
階段1:
(1) 90.81 (2) 90.81 (3) 91.05(4) 91.05
設定(3)的精確度最高,且比設定(4)更加簡潔,所以設定(3)爲理想設定。
階段2:
根據階段1的數據,設定(3)爲理想設定。在階段2中,依然將設定(3)做爲每個fold函數的理想設定。在本例中,沒有進行任何重要的測試,也沒有證據證實這種優化是有價值的。
彷佛各節點實例的最小權重對模型性能的影響並不大。可是,增長迭代次數可能會提升屢次嘗試的準確性。
若是在一個全新的數據集中使用設定(3),咱們估計最終性能的分類精度會在91.66左右,這是在5個fold函數中進行性能測試得出的平均精度。
最後,用LMT在交叉驗證集中訓練了一個模型,並使用了設定(3)。從偏差分析中添加了3個新特徵後,咱們保持特徵空間不變。從最終測試集中得出的最終性能爲:精確度0.9179,接近調試處理中的估計值,而Kappa係數爲0.8359。
樹狀圖
觀察上圖能夠發現,模型的起始點是步行距離差別,從駕駛和移動距離差別的某個值開始分裂,這證實了咱們在偏差分析中新增特徵的重要性。雖然一些節點僅與一個隊伍相關,例如2-killStreaks,但不少其餘節點都共用了兩個隊伍的差別,甚至用到了winPoints的標準差。這也體現了保留原始特徵同時添加組合特徵的實用性。
縝密計算後,本次項目分析依然還存在一些缺陷:
第一,只測試了其中一種遊戲模式的數據,測試結果可能不適用於全部模式。
第二,沒有預測排名,而是將項目範圍轉換爲二進制分類。咱們從一局遊戲中隨機選出兩個隊伍,嘗試預測哪一個隊伍會獲勝。如此一來,就刪除了其餘隊伍的表現,同時也就刪除了一些相關的差別和因素,這也可能會影響真實對戰中的結果預測。
綜上所述,咱們經過機器學習預測的方式發現了一些影響遊戲結果的重要因素,而且能夠用機器「快、狠、準」預測一局遊戲中的吃雞玩家和比賽趨勢,成爲名副其實的業內行家、吃雞大師。
編譯組:黃璡、溫媛 相關連接: https://towardsdatascience.com/how-do-we-survive-in-pubg-903e261b260 如需轉載,請後臺留言,遵照轉載規範
ACL2018論文集50篇解讀 EMNLP2017論文集28篇論文解讀 2018年AI三大頂會中國學術成果全連接 ACL2017 論文集:34篇解讀乾貨全在這裏 10篇AAAI2017經典論文回顧