R語言——神經網絡結果可視化

2021-02-19 Adam大數據分析小站

人工神經網絡(Artificial Neural Network,ANN)簡稱神經網絡,是機器學習和認知科學領域中一種模仿生物神經網絡(動物的中樞神經系統,特別是大腦)的結構和功能的數學模型或計算模型,用於對函數進行估計或近似。神經網絡由大量的人工神經元聯結進行計算,大多數情況下人工神經網絡能在外界信息的基礎上改變內部結構,是一種自適應系統。

全連接神經網絡(Multi-Layer Perception,MLP,或者叫多層感知機)是一種連接方式較為簡單的人工神經網絡結構,屬於前饋神經網絡的一種,主要有輸入層、隱藏層和輸出層構成。在機器學習中MLP較為常用,可用於分類和回歸。下面主要會介紹MLP網絡在應用時的相關可視化分析過程。

1  全連接神經網絡分類的相關可視化

    針對MLP分類模型,繼續使用種子數據集,建立一個分類器,然後對模型進行相關的可視化分析,程序如下所示:

library(neuralnet);library(NeuralNetTools);library(ggplot2);library(ggpol)myseeddf <- read.csv("data/chap11/myseeddata.csv")myseeddf$label <- as.factor(myseeddf$label)mlpcla <- neuralnet(label~., data = myseeddf,                    hidden = c(5,5),                           act.fct = "logistic",                          linear.output = FALSE,                    algorithm = "rprop+")par(cex = 0.6)plotnet(mlpcla,pos_col = "red", neg_col = "grey")

    在上面的程序中,建立MLP分類器時,共有2個隱藏層,並且每個隱藏層有5個神經元,針對獲得的mlpcla模型,可以使用plotnet() 函數可視化出模型的網絡結構,運行程序後,可獲得如圖1所示的圖像。在網絡的神經元之間的連接權重中,正數權重使用紅色的線連接、負的權重使用灰色的線連接,線的粗細則反映權重的取值大小。

圖1 MLP網絡結構可視化

    針對MLP網絡,可以計算並可視化出每個自變量對模型預測結果的重要性,運行下面的程序可獲得如圖圖2所示的圖像。從結果中可發現,對分類最重要的變量是x5。

olden(mlpcla)+ggtitle("Variable importance using connection weights")

圖2 MLP變量重要性可視化

    針對MLP分類器對數據集的預測效果,同樣可以使用混淆矩陣進行可視化,程序如下所示。可獲得如圖3所示的圖像。

mlppre <- predict(mlpcla,myseeddf)mlpprelab <- apply(mlppre , 1, which.max)ggplot() + geom_confmat(aes(x = myseeddf$label, y = mlpprelab),                        normalize = TRUE, text.perc = TRUE)+  labs(x = "Reference",y = "Prediction")+  scale_fill_gradient2(low="darkblue", high="lightgreen")

圖11-25 MLP混淆矩陣可視化

    從圖3所示的混淆矩陣中,可發現第二類和第三類的種子,可以100%預測正確,只有1.429%的第一類種子會被預測為第二類。

2 全連接神經網絡回歸的相關可視化

    針對使用MLP建立回歸模型,並可視化的示例,下面將會使用RSNNS包進行相關分析。針對該包的在建立回歸模型時,需要將數據歸一化到0~1之間。數據準備和建立MLP回歸模型的程序如下所示:

library(RSNNS);library(caret);library(neuralnet);library(NeuralNetTools)diadf <- read.csv("data/chap11/diabetes.csv",sep = "\t")diadf_s <- normalizeData(diadf,type = "0_1")set.seed(123)datasplist <- splitForTrainingAndTest(diadf_s[,1:10],diadf_s[,11],                                      ratio = 0.3)mlpreg <- mlp(datasplist$inputsTrain,                 datasplist$targetsTrain,              size = c(10,10,10),                     maxit = 200,                           learnFunc = "Rprop",                   hiddenActFunc = "Act_TanH",               inputsTest=datasplist$inputsTest,                 targetsTest = datasplist$targetsTest,              metric = "RSME")         plotIterativeError(mlpreg,main = "MLP Iterative Error")

    在上面的程序中,針對建立的mlpreg回歸模型,可以使用plotIterativeError()函數可視化模型訓練過程中誤差的變化情況,運行程序後可獲得如圖4所示的圖像。可以faxing誤差在訓練數據(黑色線)和測試數據(紅色線)上均會快速收斂到很小的取值。

圖4 MLP回歸權重誤差收斂情況可視化

    針對回歸結果還可以利用plotRegressionError()函數可視化出,模型在訓練數據和測試數據上的擬合結果,運行下面的程序後可獲得如圖5所示的圖像。

par(mfrow = c(1,2))plotRegressionError(datasplist$targetsTrain,mlpreg$fitted.values,                    main="MLP train fit")plotRegressionError(datasplist$targetsTest,mlpreg$fittedTestValues,                    main="MLP test fit")

圖5 MLP回歸在訓練集和測試集上的擬合情況可視化

    在圖像5中,左圖為在訓練數據集上的擬合誤差,右圖為在測試數據集上的擬合誤差,紅色直線越接近於對角線(黑色線),說明模型的預測效果越好。

3 全連接神經網絡時間序列預測的相關可視化

    針對MLP算法,還可以對時間序列進行相關的預測和可視化分析。下面使用mmfor包中的mlp()函數,對時間序列數據AirPassengers,建立預測模型,並對分析結果進行可視化。使用數據進行擬合訓練的程序如下所示:

library(nnfor)data("AirPassengers")tsmlp <- nnfor::mlp(AirPassengers,hd = c(6,6),                      reps = 5,                                      comb = "mean",                                  outplot = TRUE)             

    運行上面的程序後,可獲得如圖6所的圖像,該圖像是模型在擬合過程中,對數據集的擬合情況,可以發現藍色的線很好的對使用的時間序列數據進行了擬合。

圖6 MLP時間序列模型訓練擬合圖

    針對建立好的模型tsmlp,可以通過plot()函數,可視化出網絡結構,運行下面的程序可獲得如圖7所示的圖像。可以發現模型的輸入層有21個神經元。

圖7 MLP時間序列預測模型結構

    MLP時間序列預測模型建立好後,可以通過forecast()函數對未來的數據進行預測,使用下面的程序同時還可以獲得預測結果的可視化圖像8。

#tsmlp_pre <- forecast(tsmlp, h = 36)plot(tsmlp_pre )

圖8 MLP時間序列模型預測結果可視化

在圖像8中,預測結果為藍色粗線,其是針對為5個子模型的預測結果平均值,灰色細線為對應與5個子模型的預測結果。

關注我們:

 

相關焦點

  • 人工智慧黑盒揭秘:深度神經網絡可視化技術
    雲腦科技自主研發的 Deepro 深度學習平臺利用可視化技術,集成了最前沿的各類深度神經網絡可視化組件,分析與顯化內部隱藏結構與模型輸出的關係,解決「黑盒」難題。深度神經網絡又是最為複雜的機器學習模型,其可解釋性與可視化性更加具有挑戰性。網絡模型為什麼起作用,它是否足夠好,圖像識別是如何抽象出「貓」這個概念的?本段分析了幾種典型深度神經網絡可視化技術,詳盡展示了前沿的可視化原理以及解釋性效果。
  • 神經網絡結構可視化工具大全
    個人感覺這個網絡可視化工具沒有特別大的創新點,主要的亮點就在於在網絡的輸入和輸出的地方加入了輸入圖片和轉換處理後的結果圖片,視覺上更加直觀了。這款工具的GitHub地址請見下方。這個工具繪圖給我的第一感覺就是很樸素,這個號稱是完全基於Python編寫的神經網絡結構可視化工具,讀了源碼以後發現其實就是基於matplotlib做的封裝,不過效果還可以的吧,畢竟比較簡單嘛。
  • 如何可視化BERT?你需要先理解神經網絡的語言、樹和幾何性質
    Google AI 的 People + AI Research(PAIR)團隊近日發布的論文《Visualizing and Measuring the Geometry of BERT》提出了一種可視化和度量 BERT 的幾何性質的方法,可幫助我們理解 BERT 等神經網絡語言模型表徵信息的方式。
  • 人工神經網絡算法及其簡易R實現
    作為機器學習的一個龐大分支,人工神經網絡目前大約有幾百種算法,其中包括一些著名的ANN算法:感知器神經網絡(Perceptron Neural Network), 反向傳遞(Back Propagation), Hopfield網絡和自組織映射(Self-Organizing Map, SOM)等等,這篇文章我們只介紹最基本的人工神經網絡算法原理及其簡易的R語言實現方式。
  • 神經網絡是怎樣理解圖片的?谷歌大腦研究員詳解特徵可視化
    這些圖像識別技術背後,通常是深度神經網絡。本文引用地址:http://www.eepw.com.cn/article/201711/371232.htm  不過,神經網絡究竟是怎樣認識圖像的?  △特徵可視化能夠告訴我們神經網絡在圖片中尋找的是什麼  特徵可視化這個強大的工具,就能幫我們理解神經網絡內部的世界,知道它們的工作原理。
  • R語言、Matlab、MeteoInfo、Python及ArcGis可視化DEM地形圖
    一、R語言可視化DEM地形圖-往期推文超連結:1
  • 技術貼 | R語言:組學關聯分析和pheatmap可視化
    舉例展示R語言組學關聯分析的方法。宏基因組數據以KO-樣品豐度表為例。代謝組數據以metabolite-樣品豐度表為例。基本方法是用R語言psych包corr.test函數進行兩組數據的相關分析,結果經格式化後用pheatmap可視化得熱圖。一、模擬輸入 1.
  • 最便捷的神經網絡可視化工具之一--Flashtorch
    譯者 | VK來源 | Towards Data Science【磐創AI 導讀】:FlashTorch是PyTorch中用於神經網絡的開源特徵可視化工具包,本文介紹了如何使用FlashTorch揭示神經網絡看到的內容,歡迎大家轉發、留言。想要更多電子雜誌的機器學習,深度學習資源,大家歡迎點擊上方藍字關注我們的公眾號:磐創AI。
  • R 語言機器學習—快速實現BP神經網絡
    BP神經網絡(BPNN)的全稱是:誤差反向傳播神經網絡(Error back propagation training neural network
  • OpenAI發布「顯微鏡」,可視化神經網絡內部結構
    顯微鏡地址:https://microscope.openai.com/models如上圖所示,初始版本包含8個計算機視覺領域的神經網絡模型。每個神經網絡都用可視化的形式展示了一些重要神經元的內部結構。
  • R語言學習筆記之相關性矩陣分析及其可視化
    rcorr(x, type = c(「pearson」,「spearman」))。library(Hmisc)#加載包res2 <- rcorr(as.matrix(mydata))res2#可以用res2$r、res2$P來提取相關係數以及顯著性p-valueres2$r
  • ​深度學習之BP神經網絡--Stata和R同步實現(附數據和代碼)
    在此基礎之上演化出來了多種神經網絡算法,大規模應用於Computer Vision計算機視覺、Speech Recognition語音識別和Natural Language Processing自然語言處理,以及在線廣告、網頁搜索和商品推薦等。
  • R語言可視化(十八):UMAP圖繪製
    umap)# 使用umap函數進行UMAP降維分析iris.umap = umap::umap(iris.data)iris.umap## umap embedding of 150 items in 2 dimensions## object components: layout, data, knn, config# 查看降維後的結果
  • 適用於特殊類型自然語言分類的自適應特徵譜神經網絡
    除此之外,找特徵的過程與分類的過程往往是分離的,這會導致一些被選取的特徵對分類任務作用不大,應考慮將古詩文分類的結果直接反饋到找特徵的過程,進而幫助找到更好的分類特徵。這些缺陷最終導致在面對不同類型的文本,尤其是面對語言委婉、內容寫意、抒情的文本時,難以設計出效果良好的分類器。因此本文設計了自適應特徵譜神經網絡來完成文本分類任務,它可以自適應地選擇對分類有效的特徵,並組成「最優特徵譜」。
  • 深度| 從任務到可視化,如何理解LSTM網絡中的神經元 - 機器之心Pro
    因此,我們從轉寫任務開始進一步從可視化的角度解釋神經網絡中的單個神經元實際上都學到了什麼,以及它們到底是如何決策的。目錄:轉寫網絡結構分析神經元「t」是如何變成「」的?神經元 是如何學習的?可視化長短期記憶(LSTM)網絡中的單元(cell)總結評論轉寫(Transliteration)數十億網際網路用戶中,大約有一半在使用非拉丁文字母(non-Latin alphabets)表示的語言,例如俄語、阿拉伯語、中文、希臘語以及亞美尼亞語等。很多時候他們也會隨意地用拉丁文字母來寫這些語言。
  • R語言天氣可視化應用
    如果單獨用R開發,爬取數據及存儲同樣很容易實現,地圖和天氣數據的可視化也是很方便就能畫出來,但是用R做Web網站,那就會遇到很大的瓶頸了,因為R是單線程同步的計算模型,Web應用的高並發特點,會直接讓R程序崩潰的。 所以,綜合上面的問題,如果R語言和PHP語言能結合在一起使用,不僅能避開每種語言不擅長的地方,還能在擅長的領域發揮出每種語言的特性,我們將通過多語言的混編技術做出很不一樣的應用來。
  • R語言與Tableau集成之可視化應用
    作者 | CDA數據分析師Tableau是一款非常棒的數據可視化商業軟體,通過拖拉拽的方式迅速地實現數據可視化。而且該軟體可以連接任何一種資料庫,在處理大型數據時一點都不遜色。缺點是其無法從事數據分析和挖掘工作,幸運的是,從Tableau的8.0開始,Tableau與R語言打通,可以在Tableau中運行R腳本,從而將R語言的分析或挖掘結果在Tableau中展示。如何實現Tableau和R語言的聯手繪製可視化圖表呢?
  • 從經典結構到改進方法,神經網絡語言模型綜述
    神經網絡語言模型(NNLM)克服了維數的限制,提升了傳統語言模型的性能。本文對 NNLM 進行了綜述,首先描述了經典的 NNLM 的結構,然後介紹並分析了一些主要的改進方法。研究者總結並對比了 NNLM 的一些語料庫和工具包。此外,本文還討論了 NNLM 的一些研究方向。
  • R語言聚類分析及可視化展示
    Kmeans算法是一種非常常見的聚類算法,基本思想非常簡單,這裡只介紹聚類算法在R語言下的實現過程及可視化展現結果。1.模擬數據聚類Kmeans算法需要求解各變量的均值,因此它要求輸入的數據集必須為連續的書之行數據。在R語言中,只需要利用stats包中的kmeans函數就能實現kmeans聚類方法。
  • Day7:R語言課程 (R語言進行數據可視化)
    程式語言通常有辦法允許多次執行代碼,或者在「循環」中執行。雖然R語言也有「循環」,但有些函數更直接,例如apply()函數map()族和函數族。map()族比apply()更直觀,因此主要學習map()。