訂閱
糾錯
加入自媒體

機器學習模型:擬合神經網絡和預測結果可視化

摘要:神經網絡一直是迷人的機器學習模型之一,不僅因為花哨的反向傳播算法,而且還因為它們的復雜性(考慮到許多隱藏層的深度學習)和受大腦啟發的結構。

神經網絡并不總是流行,部分原因是它們在某些情況下仍然存在計算成本高昂,部分原因是與支持向量機(SVM)等簡單方法相比,它們似乎沒有產生更好的結果。然而,神經網絡再一次引起了人們的注意并變得流行起來。在這篇文章中,我們將擬合神經網絡,并將線性模型作為比較。

 一   數據集

波士頓數據集是波士頓郊區房屋價值數據的集合。我們的目標是使用所有其他可用的連續變量來預測自住房屋(medv)的中值。首先,我們需要檢查是否缺少數據點,否則我們需要修復數據集。apply(data,2,function(x)sum(is.na(x)))然后我們擬合線性回歸模型并在測試集上進行測試。index < -  sample(1:nrow(data),round(0.75 * nrow(data)))   MSE.lm < -  sum((pr.lm  -  test $ medv)^ 2)/ nrow(test)

該sample(x,size)函數簡單地從向量輸出指定大小的隨機選擇樣本的向量x。

 二   準備擬合神經網絡

在擬合神經網絡之前,需要做一些準備工作。神經網絡不容易訓練和調整。作為第一步,我們將解決數據預處理問題。

因此,我們在繼續之前分割數據:maxs < -  apply(data,2,max) scaled < -  as.data.frame(scale(data,center = mins,scale = maxs  -  mins))train_ < -  scaled [index,]test_ < -  scaled [-index,]

請注意,scale返回需要強制轉換為data.frame的矩陣。

參數據我所知,雖然有幾個或多或少可接受的經驗法則,但沒有固定的規則可以使用多少層和神經元。通常,如果有必要,一個隱藏層足以滿足大量應用程序的需要。就神經元的數量而言,它應該在輸入層大小和輸出層大小之間,通常是輸入大小的2/3

該hidden參數接受一個包含每個隱藏層的神經元數量的向量,而該參數linear.output用于指定我們是否要進行回歸linear.output=TRUE或分類linear.output=FALSE

Neuralnet包提供了繪制模型的好工具:plot(nn)

這是模型的圖形表示,每個連接都有權重:

黑色線條顯示每個層與每個連接上的權重之間的連接,而藍線顯示每個步驟中添加的偏差項。偏差可以被認為是線性模型的截距。 

 三   使用神經網絡預測medv

現在我們可以嘗試預測測試集的值并計算MSE。 pr.nn < -  compute(nn,test _ [,1:13])

然后我們比較兩個MSE顯然,在預測medv時,網絡比線性模型做得更好。再一次,要小心,因為這個結果取決于上面執行的列車測試分割。下面,在視覺圖之后,我們將進行快速交叉驗證,以便對結果更有信心。
下面繪制了網絡性能和測試集上的線性模型的第一種可視方法輸出圖

通過目視檢查圖,我們可以看到神經網絡的預測(通常)在線周圍更加集中(與線的完美對齊將表明MSE為0,因此是理想的完美預測),而不是由線性模型。下面繪制了一個可能更有用的視覺比較:

交叉驗證交叉驗證是構建預測模型的另一個非常重要的步驟。雖然有不同類型的交叉驗證方法 然后通過計算平均誤差,我們可以掌握模型的運作方式。我們將使用神經網絡的for循環和線性模型cv.glm()的boot包中的函數來實現快速交叉驗證。

據我所知,R中沒有內置函數在這種神經網絡上進行交叉驗證,如果你知道這樣的函數,請在評論中告訴我。以下是線性模型的10倍交叉驗證MSE: 

lm.fit < -  glm(medv~。,data = data)

請注意,我正在以這種方式分割數據:90%的訓練集和10%的測試集以隨機方式進行10次。我也正在使用plyr庫初始化進度條,因為我想要密切關注過程的狀態,因為神經網絡的擬合可能需要一段時間。過了一會兒,過程完成,我們計算平均MSE并將結果繪制成箱線圖 

cv.error10.3269799517.640652805 6.310575067 15.769518577 5.730130820 10.520947119 6.1211608406.389967211 8.004786424 17.369282494 9.412778105  

上面的代碼輸出以下boxplot:

神經網絡的平均MSE(10.33)低于線性模型的MSE,盡管交叉驗證的MSE似乎存在一定程度的變化。這可能取決于數據的分割或網絡中權重的隨機初始化。

 四   模型可解釋性的最后說明

神經網絡很像黑盒子:解釋它們的結果要比解釋簡單模型(如線性模型)的結果要困難得多。因此,根據您需要的應用程序類型,您可能也想考慮這個因素。此外,正如您在上面所看到的,需要格外小心以適應神經網絡,小的變化可能導致不同的結果。


聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權或其他問題,請聯系舉報。

發表評論

0條評論,0人參與

請輸入評論內容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續

暫無評論

暫無評論

文章糾錯
x
*文字標題:
*糾錯內容:
聯系郵箱:
*驗 證 碼:

粵公網安備 44030502002758號

重庆时时彩app安卓系统 排列5开奖直播现场直播 湖北麻将卡五星1元群 pc蛋蛋玩啥游戏最赚钱 福建体22选5开奖结果 开奖结果记录 海龙王捕鱼 内蒙古福彩快3走势图 河南怎样下载快赢481 手机炸金花棋牌游戏 全民欢乐捕鱼攻略技巧 481泳坛夺金玩法 申城上海麻将app 1000炮捕鱼游戏手机版 河北11选五全部开奖结果 北京pk拾计划网站 山水广西麻将免费版