最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和結(jié)果可視化

2020-11-23 14:53 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=6691

?

神經(jīng)網(wǎng)絡(luò)一直是迷人的機(jī)器學(xué)習(xí)模型之一,不僅因?yàn)榛ㄉ诘姆聪騻鞑ニ惴?,而且還因?yàn)樗鼈兊膹?fù)雜性(考慮到許多隱藏層的深度學(xué)習(xí))和受大腦啟發(fā)的結(jié)構(gòu)。

神經(jīng)網(wǎng)絡(luò)并不總是流行,部分原因是它們?cè)谀承┣闆r下仍然存在計(jì)算成本高昂,部分原因是與支持向量機(jī)(SVM)等簡(jiǎn)單方法相比,它們似乎沒有產(chǎn)生更好的結(jié)果。然而,神經(jīng)網(wǎng)絡(luò)再一次引起了人們的注意并變得流行起來。

?在這篇文章中,我們將擬合神經(jīng)網(wǎng)絡(luò),并將線性模型作為比較。

數(shù)據(jù)集

波士頓數(shù)據(jù)集是波士頓郊區(qū)房屋價(jià)值數(shù)據(jù)的集合。我們的目標(biāo)是使用所有其他可用的連續(xù)變量來預(yù)測(cè)自住房屋(medv)的中值。

首先,我們需要檢查是否缺少數(shù)據(jù)點(diǎn),否則我們需要修復(fù)數(shù)據(jù)集。

apply(data,2,function(x)sum(is.na(x)))

然后我們擬合線性回歸模型并在測(cè)試集上進(jìn)行測(cè)試。

  1. index < - ?sample(1:nrow(data),round(0.75 * nrow(data)))

  2. MSE.lm < - ?sum((pr.lm ?- ?test $ medv)^ 2)/ nrow(test)


sample(x,size)函數(shù)簡(jiǎn)單地從向量輸出指定大小的隨機(jī)選擇樣本的向量x。

準(zhǔn)備適應(yīng)神經(jīng)網(wǎng)絡(luò)

在擬合神經(jīng)網(wǎng)絡(luò)之前,需要做一些準(zhǔn)備工作。神經(jīng)網(wǎng)絡(luò)不容易訓(xùn)練和調(diào)整。

作為第一步,我們將解決數(shù)據(jù)預(yù)處理問題。
因此,我們?cè)诶^續(xù)之前分割數(shù)據(jù):

  1. maxs < - ?apply(data,2,max)

  2. scaled < - ?as.data.frame(scale(data,center = mins,scale = maxs ?- ?mins))

  3. train_ < - ?scaled [index,]

  4. test_ < - ?scaled [-index,]


請(qǐng)注意,scale返回需要強(qiáng)制轉(zhuǎn)換為data.frame的矩陣。

參數(shù)

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

?

  • hidden參數(shù)接受一個(gè)包含每個(gè)隱藏層的神經(jīng)元數(shù)量的向量,而該參數(shù)linear.output用于指定我們是否要進(jìn)行回歸linear.output=TRUE或分類linear.output=FALSE

Neuralnet包提供了繪制模型的好工具:

plot(nn)

這是模型的圖形表示,每個(gè)連接都有權(quán)重:

黑色線條顯示每個(gè)層與每個(gè)連接上的權(quán)重之間的連接,而藍(lán)線顯示每個(gè)步驟中添加的偏差項(xiàng)。偏差可以被認(rèn)為是線性模型的截距。?

使用神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)medv

現(xiàn)在我們可以嘗試預(yù)測(cè)測(cè)試集的值并計(jì)算MSE。?

  1. pr.nn < - ?compute(nn,test _ [,1:13])


然后我們比較兩個(gè)MSE

顯然,在預(yù)測(cè)medv時(shí),網(wǎng)絡(luò)比線性模型做得更好。再一次,要小心,因?yàn)檫@個(gè)結(jié)果取決于上面執(zhí)行的列車測(cè)試分割。下面,在視覺圖之后,我們將進(jìn)行快速交叉驗(yàn)證,以便對(duì)結(jié)果更有信心。
下面繪制了網(wǎng)絡(luò)性能和測(cè)試集上的線性模型的第一種可視方法

輸出圖


通過目視檢查圖,我們可以看到神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)(通常)在線周圍更加集中(與線的完美對(duì)齊將表明MSE為0,因此是理想的完美預(yù)測(cè)),而不是由線性模型。

下面繪制了一個(gè)可能更有用的視覺比較:

?交叉驗(yàn)證

交叉驗(yàn)證是構(gòu)建預(yù)測(cè)模型的另一個(gè)非常重要的步驟。雖然有不同類型的交叉驗(yàn)證方法?

然后通過計(jì)算平均誤差,我們可以掌握模型的運(yùn)作方式。

我們將使用神經(jīng)網(wǎng)絡(luò)的for循環(huán)和線性模型cv.glm()boot包中的函數(shù)來實(shí)現(xiàn)快速交叉驗(yàn)證。
據(jù)我所知,R中沒有內(nèi)置函數(shù)在這種神經(jīng)網(wǎng)絡(luò)上進(jìn)行交叉驗(yàn)證,如果你知道這樣的函數(shù),請(qǐng)?jiān)谠u(píng)論中告訴我。以下是線性模型的10倍交叉驗(yàn)證MSE:


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


?請(qǐng)注意,我正在以這種方式分割數(shù)據(jù):90%的訓(xùn)練集和10%的測(cè)試集以隨機(jī)方式進(jìn)行10次。我也正在使用plyr庫初始化進(jìn)度條,因?yàn)槲蚁胍芮嘘P(guān)注過程的狀態(tài),因?yàn)樯窠?jīng)網(wǎng)絡(luò)的擬合可能需要一段時(shí)間。

過了一會(huì)兒,過程完成,我們計(jì)算平均MSE并將結(jié)果繪制成箱線圖


  1. cv.error

  2. 10.32697995

  3. 17.640652805 6.310575067 15.769518577 5.730130820 10.520947119 6.121160840

  4. 6.389967211 8.004786424 17.369282494 9.412778105

?

上面的代碼輸出以下boxplot:

神經(jīng)網(wǎng)絡(luò)的平均MSE(10.33)低于線性模型的MSE,盡管交叉驗(yàn)證的MSE似乎存在一定程度的變化。這可能取決于數(shù)據(jù)的分割或網(wǎng)絡(luò)中權(quán)重的隨機(jī)初始化。

關(guān)于模型可解釋性的最后說明

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

?

非常感謝您閱讀本文,有任何問題請(qǐng)?jiān)谙旅媪粞裕?/h1>


R語言實(shí)現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)和結(jié)果可視化的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
吉木萨尔县| 乳山市| 肥东县| 紫阳县| 双鸭山市| 松江区| 罗田县| 南涧| 同德县| 屏东市| 当雄县| 万州区| 芜湖县| 界首市| 铅山县| 东明县| 荣成市| 新源县| 丹江口市| 保康县| 綦江县| 泰宁县| 磐安县| 富阳市| 安福县| 长丰县| 宜春市| 临颍县| 绥化市| 徐水县| 兴安盟| 安徽省| 金华市| 连山| 邹城市| 山东省| 通化县| 西安市| 太和县| 建昌县| 丹棱县|