卞 捷
(美國亞利桑那大學(xué),亞利桑那州 AZ85621)
美國職業(yè)籃球聯(lián)賽(NBA)是全美最大的男子籃球職業(yè)聯(lián)賽,它吸引了30支球隊(duì)和全世界最出色籃球運(yùn)動(dòng)員來爭奪冠軍。NBA在美國非常流行,許多媒體比如ESPN和TNT會(huì)對NBA每場比賽進(jìn)行轉(zhuǎn)播。NBA這項(xiàng)聯(lián)賽每年不僅能從球票販賣、贊助活動(dòng)已經(jīng)電視轉(zhuǎn)播版權(quán)這些方面獲得巨大的商業(yè)利益,還衍生出巨大的比賽博彩市場,而博彩市場的發(fā)展又高度依賴于賽前準(zhǔn)確的比賽結(jié)果預(yù)測[1]。
幸運(yùn)的是,有很多預(yù)測比賽結(jié)果的方法,本文使用BP神經(jīng)網(wǎng)絡(luò)來模擬比賽雙方的特征與比賽結(jié)果的映射函數(shù)??紤]到采用不同的ANN結(jié)構(gòu)會(huì)得出不同的測試誤差和復(fù)雜度,本文致力于尋找一種某種程度上最優(yōu)化預(yù)測準(zhǔn)確率的BP神經(jīng)網(wǎng)絡(luò)。
如圖1所示,隨著訓(xùn)練次數(shù)的增長,訓(xùn)練誤差會(huì)相應(yīng)遞減,但是測試誤差會(huì)隨之先遞增再遞增。所以,在測試誤差到達(dá)其所在極小點(diǎn)之前,訓(xùn)練誤差和測試誤差都隨著訓(xùn)練次數(shù)的增長而減小;在測試誤差曲線到達(dá)其所在極小點(diǎn)后,訓(xùn)練誤差曲線下降的同時(shí)測試誤差曲線隨訓(xùn)練次數(shù)上升。因此,我們需要將訓(xùn)練次數(shù)確定在測試誤差曲線到達(dá)極小點(diǎn)的位置。
圖1 人工神經(jīng)網(wǎng)絡(luò)中訓(xùn)練、測試和訓(xùn)練次數(shù)關(guān)系曲線
文中數(shù)據(jù)集從NBA官網(wǎng)獲取,數(shù)據(jù)分別存放在兩個(gè)txt文件“gameresultofFEB.txt”和 “teamperformanceofJAN”中?!癵ameresultofFEB.txt”中記錄了NBA 2016—2017常規(guī)賽季二月份每場比賽的比賽數(shù)據(jù),包含了每場比賽的對陣球隊(duì)名、比賽最終得分以及用邏輯變量代表的比賽勝負(fù)關(guān)系(取1代表球隊(duì)1獲勝,取0代表球隊(duì)2獲勝)?!皌eamperformanceofJAN.txt”中則記錄了NBA每支球隊(duì)在2016—2017常規(guī)賽季1月份的所有比賽的平均表現(xiàn),其中包含了許多球隊(duì)特征比如比賽勝率、三分球命中數(shù)、籃板球數(shù)等。
收集完這些數(shù)據(jù)后,通過編程生成適合輸入人工神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)集,數(shù)據(jù)集中的每個(gè)數(shù)據(jù)點(diǎn)由第一個(gè)球隊(duì)的特征信息、第二個(gè)球隊(duì)的特征信息以及比賽歷史記錄的勝負(fù)結(jié)果(1代表第一個(gè)球隊(duì)獲勝,0則代表第一個(gè)球隊(duì)告負(fù))組成[2]。
在準(zhǔn)備好數(shù)據(jù)集后,將它劃分成兩部分:前100個(gè)樣本數(shù)據(jù)用作訓(xùn)練集,剩下的65個(gè)樣本數(shù)據(jù)作為測試集。這樣劃分的根據(jù)是因?yàn)閿?shù)據(jù)集是由時(shí)間順序排列的,在進(jìn)行預(yù)測的時(shí)候,我們總是使用過去的數(shù)據(jù)來對未來的結(jié)果進(jìn)行預(yù)測,畢竟,我們不能使用未來的數(shù)據(jù)來預(yù)測過去的比賽結(jié)果。然后,考慮到結(jié)構(gòu)的簡潔和效率,我們這里將隱含層的個(gè)數(shù)設(shè)置為2個(gè)(通常情況下,我們將隱含層個(gè)數(shù)設(shè)置為1~3個(gè))。
在將隱含層個(gè)數(shù)確定為2之后,剩下來BP神經(jīng)網(wǎng)絡(luò)的具體結(jié)構(gòu)由每個(gè)隱含層節(jié)點(diǎn)分配個(gè)數(shù)確定。本文先將訓(xùn)練迭代次數(shù)設(shè)置為500(因?yàn)閷τ谖闹惺褂玫臄?shù)據(jù)集的大小,500訓(xùn)練迭代次數(shù)不會(huì)引起過度擬合),然后我們將第一個(gè)隱含層節(jié)點(diǎn)個(gè)數(shù)和第二個(gè)隱含層節(jié)點(diǎn)個(gè)數(shù)(i,j)設(shè)置為i=5,10,15,...,75和j=5,10,15,...75的各種組合,對各種(i,j)組合的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行訓(xùn)練并且測試結(jié)果,最終再選取其中測試誤差最小所對應(yīng)的(i,j)結(jié)構(gòu)來作為最理想的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),某種程度上這相當(dāng)于一種限制深度的greedybest搜索。
在確定好ANN的結(jié)構(gòu)后,通過對一系列不同訓(xùn)練迭代次數(shù)的測試,我們可以尋找到最接近測試誤差曲線極小點(diǎn)的節(jié)點(diǎn)位置,這個(gè)節(jié)點(diǎn)既不會(huì)帶來過擬合也不會(huì)帶來欠擬合,并且是所找到的對應(yīng)最小的測試誤差位置。這里所對應(yīng)的測試誤差將會(huì)作為文中結(jié)構(gòu)自適應(yīng)神經(jīng)網(wǎng)絡(luò)最終的測試誤差[3]。
訓(xùn)練迭代次數(shù)為500時(shí)各種隱含層可能結(jié)構(gòu)的測試誤差情況如表1所示。
表1 訓(xùn)練迭代次數(shù)為500時(shí)各種隱含層可能結(jié)構(gòu)的測試誤差情況
這里我們選取表格中最小的測試誤差位置作為所確定的隱含層結(jié)構(gòu),最終確定的隱含層結(jié)構(gòu)是第一個(gè)隱含層節(jié)點(diǎn)個(gè)數(shù)為70,第二個(gè)隱含層節(jié)點(diǎn)個(gè)數(shù)為20(考慮到簡潔性,文中以節(jié)點(diǎn)個(gè)數(shù)5為間隔枚舉,如圖2所示)。
圖2 隱含層結(jié)構(gòu)及節(jié)點(diǎn)
根據(jù)圖3確定本文所使用的結(jié)構(gòu)自適應(yīng)的BP神經(jīng)網(wǎng)絡(luò)的測試誤差為0.338 5(epoches=2 600)。
圖3 不同訓(xùn)練迭代次數(shù)下此神經(jīng)網(wǎng)絡(luò)的測試誤差分布
為了說明70-20的隱含層結(jié)構(gòu)是最優(yōu)的,我們還對其他一些接近70-20的隱含層結(jié)構(gòu)(比如70-25,75-20)進(jìn)行測試。
根據(jù)圖4確定在70-25的隱含層結(jié)構(gòu)下測試最小誤差為0.369 2。
根據(jù)圖5確定在70-15的隱含層結(jié)構(gòu)下測試最小誤差為0.338 5。
根據(jù)圖6最終的測試誤差為0.353 8。
圖4 當(dāng)隱含層結(jié)構(gòu)為70-25的測試誤差與訓(xùn)練迭代次數(shù)分布
圖5 當(dāng)隱含層結(jié)構(gòu)為70-15的測試誤差與訓(xùn)練迭代次數(shù)分布
圖6 當(dāng)隱含層結(jié)構(gòu)為65-20時(shí)的測試誤差分布
根據(jù)圖7,此結(jié)構(gòu)的測試誤差為 0.338 5。
從表2可看出,我們從訓(xùn)練次數(shù)500次(考慮到訓(xùn)練集大小500次不會(huì)帶來過擬合)根據(jù)最小化測試誤差所選擇的70-20隱含層結(jié)構(gòu)的測試誤差也是它相鄰結(jié)構(gòu)的最小測試誤差。因此證明本文中的方法可以尋找到BP神經(jīng)網(wǎng)絡(luò)的局部最優(yōu)結(jié)構(gòu),有時(shí)候甚至是全局最優(yōu)結(jié)構(gòu)。
表2 各隱含層結(jié)構(gòu)測試誤差匯總
圖7 當(dāng)隱含層結(jié)構(gòu)為75-20時(shí)的測試誤差分布
通過應(yīng)用文中的結(jié)構(gòu)自適應(yīng)的BP神經(jīng)網(wǎng)絡(luò),我們將NBA比賽勝負(fù)結(jié)果的預(yù)測準(zhǔn)確率提高到了66.15%。我們先將訓(xùn)練迭代次數(shù)定為一個(gè)不會(huì)帶來過擬合的次數(shù),然后計(jì)算不同隱含層結(jié)構(gòu)下的測試誤差,通過最小化測試誤差,我們選擇最小測試誤差所對應(yīng)的結(jié)構(gòu)作為理想的隱含層結(jié)構(gòu)。在找到此種結(jié)構(gòu)之后,對此結(jié)構(gòu)在不同訓(xùn)練迭代次數(shù)下的測試誤差進(jìn)行計(jì)算,這一過程的必要性在于隨著訓(xùn)練迭代次數(shù)的增加,人工神經(jīng)網(wǎng)絡(luò)預(yù)測會(huì)發(fā)生欠擬合和過擬合現(xiàn)象,而我們所需要的是介于欠擬合和過擬合之間的那部分。之后通過與相鄰隱含層結(jié)構(gòu)人工神經(jīng)網(wǎng)絡(luò)之間的比較,我們發(fā)現(xiàn)本文所提出的理想隱含層結(jié)構(gòu)確實(shí)是在局部最理想的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[4]。
(1)數(shù)據(jù)集中數(shù)據(jù)的特征量眾多,其中一些特征可能與我們的預(yù)測結(jié)果無關(guān),所以有選擇地忽略其中某些量可能提高本文方法最后的預(yù)測準(zhǔn)確率。
(2)現(xiàn)實(shí)世界中的數(shù)據(jù)比如本文使用的NBA比賽數(shù)據(jù)存在噪聲,所以在確定理想的人工神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)時(shí)可以使用一些方法比如加權(quán)投票來減弱噪聲帶來的影響。
(3)輸入數(shù)據(jù)與預(yù)測結(jié)果之間的映射函數(shù)依賴于馬爾科夫過程,這意味著我們的預(yù)測結(jié)果主要依賴于最近時(shí)間的輸入數(shù)據(jù),所以本文的預(yù)測結(jié)果可以通過增加更多最近時(shí)間的輸入數(shù)據(jù)來提高預(yù)測正確率。