轉帖|實施案例|編輯:龔雪|2017-04-26 13:52:40.000|閱讀 399 次
概述:眾所周知,籃球隊分為大前鋒、小前鋒、得分后衛、控球后衛和中鋒五個位置,雖然現在無位置籃球正在興起,但是我們還是可以用球員的歷史數據來預測它的位置。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
引言:
眾所周知,籃球隊分為大前鋒、小前鋒、得分后衛、控球后衛和中鋒五個位置,雖然現在無位置籃球正在興起,但是我們還是可以用球員的歷史數據來預測它的位置。在這里我們就是要對球員進行一個多分類,方法選用經典的決策樹和它們的集成方法——隨機森林。接下來我們先看一下這五個位置各有什么特點,當然你可能比我更清楚這些內容,但是我們也不是在做無用功,注意加重的文字,我們就從這些里面選擇特征。
中鋒一般都是整支球隊中最高的,能夠進行激烈的身體對抗,負責籃板和阻攔,得分方式主要靠勾手、跳投和扣籃。
平均身高:6’11.25″
平均體重:257 lbs
控衛一般都是最矮的球員,應該具有優秀的過人能力和控球能力,而不是作為主要投手。一般控衛都是在攻防轉換中帶球過場的那個人,在進攻和防守之間控制好球權。優秀的控衛在助攻和搶斷上數據很好看。
平均身高:6’2
平均體重:189 lbs
得分后衛一般比控衛要高一點但還是要比前鋒矮,他的定位是全隊的最佳投手,在其他隊友的掩護下投籃得分,也要足夠靈活分擔控衛的職責。
平均身高:6’5.25″
平均體重:209 lbs
小前鋒被視為是進攻時的全能球員,既要足夠強轉可以在內線對抗又要足夠靈活足夠在外線馳騁,能夠在外線和內線都具有較強的得分能力。
平均身高:6’7.75″
平均體重:225 lbs
大前鋒是一個既要身體高大強壯,還要有一定的速度,能夠積極進攻并搶得籃板。
平均身高:6’9.5″
平均體重:246 lbs
我們選擇了15個變量來進行:
在分析之前,我們先來看一些變量在不同位置中的分布,從而判斷什么變量可以幫助我們區分不同的位置。以下幾個可視化的圖表顯示了這15個變量的分布。可以清晰地發現,中鋒和大前鋒在籃板和蓋帽的數量上獨領風騷,這就很可能成為決策樹的分支變量。更加顯著的是助攻數據,看到這里我認為要獲得一個高的預測準確度還是容易達到的。
決策樹類似于一個向你問問題的機器。比如我們有一個新球員,要預測他的位置。決策樹就會問:“它的總籃板數是多少”,然后你給它一個答案,它向你問的下一個問題是基于上一個問題的答案,直到他問的問題足夠多以后他不會再問了而是告訴你這個球員會打什么位置。決策樹很好理解而且做出來的圖也很直觀。
混淆矩陣顯示中鋒和大前鋒預測正確率在50%左右,因為這兩個位置往往可替代性很強,混淆的部分也很大。我們也看到了控衛的預測正確率有80%。做的這里我就想隨機森林的結果一定會更好。
過擬合是指一個模型訓練的程度過頭了,導致這了模型把很多因為抽樣所帶來的隨機因素考慮進去,從而導致模型的泛化能力差,在決策樹中主要是沒有進行剪枝的問題。可以從圖中看出這個決策樹的分支很多,數比較深。而混淆矩陣顯示模型的預測準確率變差了。從方差—偏差權衡的角度來看,過擬合往往是因為過于注重控制偏差,反而使方差超過了最優水平。
隨機森林是把很多的決策樹組合在一起的集成算法,在下面我們可以看到在模型集成的過程中加入了隨機因素,所以綜合稱之為隨機森林。
在展示結果之前,我們先來剖析一下模型的訓練過程。我們確定要集成的決策樹數目為T,第一步是為每一棵樹隨機抽取一個樣本子集,一般為樣本全集的2/3。第二步是在樹的每個節點上隨機抽取m個特征作為特征子集。第三步是樹的生成,在每個節點上選擇一個最佳的特征進行分支。在下一個節點上繼續隨機選擇m個特征重復以上步驟。
在我做的過程當中,我只注重調整兩個影響力最大的參數,就是ntree和ntry,ntree就是指數的數目T,mtry就是指隨機抽取的樣本子集的大小m。
對于第一個參數T我設置為180,這個圖 展示了每個參數值對應的最小袋外誤差。
對于參數m我設置為9,從下圖袋外誤差中可以看出當m=9的時候誤差最小。
從混淆矩陣顯示結果來看,隨機森林的預測結果明顯優于決策樹,尤其是控球后衛的預測結果較好,但是對大前鋒和得分后衛的預測精度就有些下降了。我的數據集還是有些太少,如果我們用更多的數據,隨機森林的效果必然有更高的提升。在我下一步的計劃中,我想從50個賽季中抓取數據,然后做一個類似的分析看看最終結果如何。
這篇博客是利用NBA球員的歷史數據來預測球員的位置,我用的是決策樹和它的集成算法隨機森林。結果顯示隨機森林表現得更好一點,但是提升空間也很大。
譯者注:從混淆矩陣結果來看并沒有預想的那么好,另外作者明明在介紹各種位置的時候著重介紹了身高和體重的問題卻沒有將其加入特征全集中,也有特征選用少的原因。有興趣的朋友可以進一步嘗試擴大數據集和特征集以求更好的結果。
以下是代碼集,作者用的是R語言。
原文作者:Jurgen 譯者:Cup
原文鏈接:
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn