聽說,SuperMajor,血魔和獸王更配哦
來自專欄數據冰山108 人贊了文章
明眼人已經看出來了,文章的標題套用了德芙巧克力廣告的句式。
為什麼要借用這個句式?因為本文要討論的是——在剛剛結束的「中國DOTA2超級錦標賽」上,職業隊選擇的英雄之間,是否存在有價值的關聯關係?這些英雄組合的勝率如何?
然而尷尬的是,雖然德芙用心良苦,但大家似乎並不認為巧克力和音樂有什麼關聯...所以這並不是一個好類比,我們還是回到幾乎所有人寫關聯分析都會引用的黃金案例——「啤酒」和「尿布」上來。這個比德芙廣告流傳更廣的故事是這樣的:
我們去沃爾瑪超市會發現一個很有趣的現象:貨架上啤酒與尿布竟然放在一起售賣,這看似毫不相關的東西,為什麼會放在一起呢?
原來,在美國,婦女們經常會囑咐她們的丈夫下班後給孩子買一點尿布回來,而丈夫在買完尿布後,大都會順手買一瓶自己愛喝的啤酒。商家通過對大量交易記錄進行分析,發現了這對神奇的組合。於是就毫不猶豫地將尿布與啤酒擺放在一起售賣,促進銷售。
購物籃分析可以用下圖簡單說明:表格中有五筆訂單,每筆訂單包含若干商品(無先後順序),比如第一筆訂單表示小明同時購買了麵包&牛奶。
對大量訂單進行關聯分析(association analysis),可以挖掘出隱藏在數據集中的聯繫,找出關聯規則(association rules)。比如商家發現,購買了尿布的顧客中,大多數同時購買了啤酒,那麼就可以得出關聯規則:尿布-->啤酒(注意:箭頭表示關聯規則是有方向的,反過來買了啤酒的顧客,購買尿布的比例不高)。搞清楚了這些規則, 商家就能想辦法掏空你的錢包。
那麼問題來了,這和DOTA2有什麼關係?有關係!仔細想一想,可以發現「顧客挑選商品」和「隊伍挑選英雄」是有共同點的:
- 有很多購物籃,每個購物籃選擇了若干商品,運用關聯分析挖掘商品之間的關聯規則。
- 有很多場比賽,每場比賽的兩支隊伍選擇了若干英雄(註:DOTA2的比賽規則是兩支隊伍從100多名英雄中各選5名),運用關聯分析挖掘英雄之間的關聯規則。
接下來,本文嘗試運用關聯分析挖掘SuperMajor舞台上的英雄關聯規則。(為了大多數讀者的閱讀體驗,本文會多講原理少聊技術。少部分想學技術的讀者,可以參考放在GitHub上的代碼)
選好題目之後,數據分析師要做的第一件事就是:獲取數據源。針對這個題目,我們需要SuperMajor每場比賽的選人信息:
要如何尋找關聯規則呢?我們不妨先跟著感覺走,採用最直接(很多人可能不自覺用過)的方法是:英雄組合出現的次數越多,關聯關係越強。下圖展示了SuperMajor出場次數在8次以上(包括8次)的英雄組合。其中「傑奇洛(俗稱:雙頭龍)+娜迦海妖」(睡接冰)和「干擾者(俗稱:薩爾)+死亡先知」(團戰陣容?)的搭配都出現過11次,是本次比賽職業選手最喜歡的英雄組合。
衡量「出現次數」的專業術語叫Support(中文翻譯:支持度),以關聯規則{雙頭龍->娜迦海妖}為例,Support等於雙頭龍&娜迦海妖一起出現的次數/陣容總數,也就是11/206(比賽場數*2)=0.053,差不多十場比賽(二十套陣容)會出現一次。
那麼問題來了——Support指標的閾值要怎麼定?要同時出現多少次,我們才認為有關聯關係?定Support閾值需要結合實際問題進行,高了低了都不好:
- 如果Support閾值定的太高,通常只能篩選出由「常見英雄(上場次數多)」構成的關聯規則,導致無法獲得由「不常見英雄」組成的關聯規則。比如上圖選擇的Support閾值為0.039,挖掘出的關聯規則包含:獸王、術士、薩爾、死亡先知、拉希克等英雄。這些英雄全部是本次SuperMajor的熱門英雄(下圖展示了本屆比賽上場次數排名top8的英雄)。而{小精靈(學名:艾歐)->火貓(學名:灰燼之靈)}(Support=0.019)這種不常見英雄構成的關聯規則就丟失了。
- 如果Support閾值定的太低,會造成關聯規則的泛濫。比如將Support閾值定為0.015,會得到150多個關聯規則,基本上常見英雄搭配任意一名其他英雄,都能夠形成關聯規則,顯然也不好。
看來只靠Support指標是不行的,我們需要更多指標來衡量關聯規則的優劣,比如Confidence(中文翻譯:置信度)。Confidence本質上是一個條件概率,表示關聯規則{X->Y}選擇了X時後,再選擇Y的概率P(Y|X)(可以想像一下:隊友選了發條,影魔王就開心了~)。給大家看兩張圖就明白了。
先看第一張圖——「獸王」協作英雄。獸王是本屆SuperMajor上場次數最多的英雄(高達42次),和53名英雄做過隊友。其中合作次數最多的是術士,獸王&術士的組合一共出現過10次,計算{獸王->術士}關聯規則的Confidence為10/42=23.8%(註:Confidence的計算規則不滿足對稱性,{術士->獸王}關聯規則的Confidence為35.7%。但兩者的Support值相等。)
再看小精靈的英雄協作圖,小精靈一共出場6次,其中有4次搭配了火貓。所以{小精靈->火貓}關聯規則的Confidence為4/6=66.7%,非常高(選了小精靈,大概率要配火貓)。
到現在為止,我們介紹了兩個指標——Support和Confidence,從不同的角度衡量關聯規則的優劣。那麼,有了這兩個指標是不是就高忱無憂了呢?很遺憾,並不是。用於評價關聯規則的客觀指標還有很多,比如:lift、leverage、conviction等等。考慮到閱讀體驗,就不多說了,感興趣的可以閱讀《Association Analysis: Basic Concepts and Algorithms》。
另外,更重要的是,除了客觀指標,在進行關聯分析時,還需要了解數據集所處行業的領域知識(這就是萬分彈幕大神厲害的地方了)。
最後說結論:本文選擇Support閾值為0.015、Confidence閾值為0.4、lift閾值為1.2對SuperMajor的比賽進行挖掘,得到英雄關聯規則如下(順手加了勝率)。
結合出場次數、Confidence、勝率三個最重要的指標,發現:
- {血魔-->獸王}:上場次數8次,Confidence為44.4%(選了血魔之後有44.4%的幾率拿出獸王),勝率高達87.5%。同理還有{艾歐-->灰燼之靈}、{孽主-->禍亂之源}等,都是本次SuperMajor非常成功的熱門組合。
- 獸王雖然本次勝率較高(55%),但也有很多英雄不太適合搭配獸王,比如:{聖堂刺客-->獸王}的勝率是25%,{聖堂刺客-->娜迦海妖}的勝率是75%。(有沒有萬分大神在評論中解釋一下~)
寫到這裡,文章就結束了,希望能給不熟悉「關聯分析」的朋友一點幫助。
幾點說明:
- 關聯分析需要大量數據樣本(幾萬場比賽不嫌多),本文為了方便描述,只選取了SuperMajor的100多場比賽作為數據集。後續如果有空,考慮用天梯公開比賽作為數據源再跑一次,幫助大家上分~
- 雖然本文只用了包含兩名英雄的關聯規則作為例子,但關聯規則是可以包含任意多名英雄的。比如:{影魔&復仇之魂->獸王}、{獸王&復仇之魂->影魔}等等。
推薦閱讀:
※作為一個小白,如何能快速的看懂dota2的比賽?
※DOTA 2 里的小驢為什麼叫小雞?羊刀把人變成豬,而不是羊,為什麼還叫羊刀,而不是豬刀?
※如何評價Dota2新更新英雄齊天大聖孫悟空?
※TI5期間有沒有可推薦的文字直播應用?
※如何看待DAC拒絕者被SCCC公主抱?