□ 陳衛(wèi)華
機(jī)器學(xué)習(xí)是人工智能及模式識別領(lǐng)域的研究熱點(diǎn),其理論和方法被廣泛應(yīng)用于工程應(yīng)用和科學(xué)領(lǐng)域中解決復(fù)雜問題,決策樹、K-均值聚類、樸素貝葉斯、支持向量機(jī)、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)等算法對數(shù)據(jù)深度分析和挖掘有著重要的作用。學(xué)習(xí)數(shù)據(jù)挖掘算法是新時代統(tǒng)計工作者一項必備的能力,缺少這種能力就無法駕馭統(tǒng)計大數(shù),也很難在浩瀚的數(shù)據(jù)中獲取真正的價值。
神經(jīng)網(wǎng)絡(luò)作為機(jī)器學(xué)習(xí)的一種算法在人工智能方面有著廣泛的應(yīng)用,神經(jīng)網(wǎng)絡(luò)不但可以作為分類器,也可以解決回歸問題。R 語言中neuralnet 包提供了神經(jīng)網(wǎng)絡(luò)建模函數(shù)和可視化函數(shù)使用起來非常方便。下面通過一個實例來介紹一下神經(jīng)網(wǎng)絡(luò)在統(tǒng)計中的應(yīng)用。
實例的目的用國內(nèi)生產(chǎn)相關(guān)指標(biāo)運(yùn)用神經(jīng)網(wǎng)絡(luò)構(gòu)建回歸模型。指標(biāo)有國內(nèi)生產(chǎn)總值(y)、全社會固定資產(chǎn)投資(x1)、進(jìn)出口總額(x2)、農(nóng)林牧漁業(yè)總產(chǎn)值(x3)、工業(yè)企業(yè)主營業(yè)務(wù)收入(x4)、建筑業(yè)企業(yè)建筑業(yè)總產(chǎn)值(x5)、貨物周轉(zhuǎn)量(x6)、社會消費(fèi)品零售總額(x7)、居民消費(fèi)價格指數(shù)(x8),報告期為1987 年-2018 年度,如表1。
1.軟件環(huán)境。R 語言3.4.3版,RSudio 1.1.383 版,這是文章中代碼使用的軟件版本情況。
2.數(shù)據(jù)導(dǎo)入。數(shù)據(jù)為CSV 格式,名稱為data2,存在桌面上。
由于數(shù)據(jù)是CSV 格式,要用到readr包,下面代碼是在RStudio 控制臺鍵入的命令,用于導(dǎo)入數(shù)據(jù)。
表1 國內(nèi)生產(chǎn)總值及相關(guān)指標(biāo)
3.構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。主要工作有:一是對數(shù)據(jù)標(biāo)準(zhǔn)化,構(gòu)造訓(xùn)練集和測試集。數(shù)據(jù)一共有32條記錄,我們用20 條作為訓(xùn)練集,12 條作為測試集。用sample 隨機(jī)函數(shù)從1-32 個數(shù)字中抽取20 個數(shù)字來抽取訓(xùn)練集trains 和測試集tests。用scale 函數(shù)來對data2 數(shù)據(jù)標(biāo)準(zhǔn)化,結(jié)果放在scaled 中,再構(gòu)造標(biāo)準(zhǔn)化后的訓(xùn)練集(train_)和測試集(test_),用于建立神經(jīng)網(wǎng)絡(luò)模型。二是構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。神經(jīng)網(wǎng)絡(luò)模型函數(shù)neuralnet 主要參數(shù)有數(shù)據(jù)變量的函數(shù)關(guān)系、數(shù)據(jù)、隱含層向量和一個表示回歸的邏輯變量。隱含層向量格式用一個向量表示,如c(5,3)表示隱含層有兩層,節(jié)點(diǎn)分別是5 個和3 個;c(10,5,3)表示隱含層有3 層,節(jié)點(diǎn)分別有10 個、5 個和3 個。本實例中由于變量數(shù)只有7 個隱含層只設(shè)了1層,5 個節(jié)點(diǎn)。通過neuralnet 函數(shù)構(gòu)造出的神經(jīng)網(wǎng)絡(luò)結(jié)果存放在nn對象中。具體代碼如下:
圖1
4.繪制神經(jīng)網(wǎng)絡(luò)圖。neuralnet包中提供了plot()函數(shù)可以方便的繪制神經(jīng)網(wǎng)絡(luò)圖。
模型檢驗可以用交叉檢驗來檢驗?zāi)P涂煽啃院托阅埽@里用簡單的圖形檢驗?zāi)P颓闆r,用測試集數(shù)據(jù)通過神經(jīng)網(wǎng)絡(luò)模型計算出預(yù)測數(shù),然后與實際數(shù)比較。預(yù)測結(jié)果放在pr.nn變量中,折算后得結(jié)果放在test.r 中。代碼如下:
2.作圖
輸出圖形如下,Y 軸為測試集中的實際數(shù),X 軸為預(yù)測數(shù),直線為經(jīng)過原點(diǎn)斜率為1 的直線。從圖可以看出12 個點(diǎn)均勻分布在直線兩側(cè),偏差不大,神經(jīng)網(wǎng)絡(luò)回歸模型效果還是比較好的。
圖2
以上只是神經(jīng)網(wǎng)絡(luò)模型的簡單實例,由于實例中在構(gòu)建模型時對數(shù)據(jù)進(jìn)行了標(biāo)準(zhǔn)化處理,在預(yù)測遠(yuǎn)期數(shù)據(jù)時存在缺陷,同時沒有給出模型嚴(yán)謹(jǐn)?shù)恼撟C,僅供學(xué)習(xí)參考。機(jī)器學(xué)習(xí)在諸多領(lǐng)域都有廣泛的應(yīng)用,相信隨著大數(shù)據(jù)技術(shù)的發(fā)展也會在政府統(tǒng)計中發(fā)揮出越來越重要的作用。