□ 陳衛華
機器學習是人工智能及模式識別領域的研究熱點,其理論和方法被廣泛應用于工程應用和科學領域中解決復雜問題,決策樹、K-均值聚類、樸素貝葉斯、支持向量機、隨機森林、神經網絡等算法對數據深度分析和挖掘有著重要的作用。學習數據挖掘算法是新時代統計工作者一項必備的能力,缺少這種能力就無法駕馭統計大數,也很難在浩瀚的數據中獲取真正的價值。
神經網絡作為機器學習的一種算法在人工智能方面有著廣泛的應用,神經網絡不但可以作為分類器,也可以解決回歸問題。R 語言中neuralnet 包提供了神經網絡建模函數和可視化函數使用起來非常方便。下面通過一個實例來介紹一下神經網絡在統計中的應用。
實例的目的用國內生產相關指標運用神經網絡構建回歸模型。指標有國內生產總值(y)、全社會固定資產投資(x1)、進出口總額(x2)、農林牧漁業總產值(x3)、工業企業主營業務收入(x4)、建筑業企業建筑業總產值(x5)、貨物周轉量(x6)、社會消費品零售總額(x7)、居民消費價格指數(x8),報告期為1987 年-2018 年度,如表1。
1.軟件環境。R 語言3.4.3版,RSudio 1.1.383 版,這是文章中代碼使用的軟件版本情況。
2.數據導入。數據為CSV 格式,名稱為data2,存在桌面上。
由于數據是CSV 格式,要用到readr包,下面代碼是在RStudio 控制臺鍵入的命令,用于導入數據。


表1 國內生產總值及相關指標

3.構建神經網絡模型。主要工作有:一是對數據標準化,構造訓練集和測試集。數據一共有32條記錄,我們用20 條作為訓練集,12 條作為測試集。用sample 隨機函數從1-32 個數字中抽取20 個數字來抽取訓練集trains 和測試集tests。用scale 函數來對data2 數據標準化,結果放在scaled 中,再構造標準化后的訓練集(train_)和測試集(test_),用于建立神經網絡模型。二是構建神經網絡模型。神經網絡模型函數neuralnet 主要參數有數據變量的函數關系、數據、隱含層向量和一個表示回歸的邏輯變量。隱含層向量格式用一個向量表示,如c(5,3)表示隱含層有兩層,節點分別是5 個和3 個;c(10,5,3)表示隱含層有3 層,節點分別有10 個、5 個和3 個。本實例中由于變量數只有7 個隱含層只設了1層,5 個節點。通過neuralnet 函數構造出的神經網絡結果存放在nn對象中。具體代碼如下:



圖1
4.繪制神經網絡圖。neuralnet包中提供了plot()函數可以方便的繪制神經網絡圖。

模型檢驗可以用交叉檢驗來檢驗模型可靠性和性能,這里用簡單的圖形檢驗模型情況,用測試集數據通過神經網絡模型計算出預測數,然后與實際數比較。預測結果放在pr.nn變量中,折算后得結果放在test.r 中。代碼如下:

2.作圖

輸出圖形如下,Y 軸為測試集中的實際數,X 軸為預測數,直線為經過原點斜率為1 的直線。從圖可以看出12 個點均勻分布在直線兩側,偏差不大,神經網絡回歸模型效果還是比較好的。

圖2
以上只是神經網絡模型的簡單實例,由于實例中在構建模型時對數據進行了標準化處理,在預測遠期數據時存在缺陷,同時沒有給出模型嚴謹的論證,僅供學習參考。機器學習在諸多領域都有廣泛的應用,相信隨著大數據技術的發展也會在政府統計中發揮出越來越重要的作用。