拓端數據tecdat|R語言中的BP神經網絡模型分析學生成績


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

在本教程中,您將學習如何在R中創建神經網絡模型。

神經網絡(或人工神經網絡)具有通過樣本進行學習的能力。人工神經網絡是一種受生物神經元系統啟發的信息處理模型。它由大量高度互連的處理元件(稱為神經元)組成,以解決問題。它遵循非線性路徑,並在整個節點中並行處理信息。神經網絡是一個復雜的自適應系統。自適應意味着它可以通過調整輸入權重來更改其內部結構。

該神經網絡旨在解決人類容易遇到的問題和機器難以解決的問題,例如識別貓和狗的圖片,識別編號的圖片。這些問題通常稱為模式識別。它的應用范圍從光學字符識別到目標檢測。

本教程將涵蓋以下主題:

  • 神經網絡概論
  • 正向傳播和反向傳播
  • 激活函數
  • R中神經網絡的實現
  • 案例
  • 利弊
  • 結論

神經網絡概論

神經網絡是受人腦啟發執行特定任務的算法。它是一組連接的輸入/輸出單元,其中每個連接都具有與之關聯的權重。在學習階段,網絡通過調整權重進行學習,來預測給定輸入的正確類別標簽。

人腦由數十億個處理信息的神經細胞組成。每個神經細胞都認為是一個簡單的處理系統。被稱為生物神經網絡的神經元通過電信號傳輸信息。這種並行的交互系統使大腦能夠思考和處理信息。一個神經元的樹突接收來自另一個神經元的輸入信號,並根據這些輸入將輸出響應到某個其他神經元的軸突。

樹突接收來自其他神經元的信號。單元體將所有輸入信號求和以生成輸出。當總和達到閾值時通過軸突輸出。突觸是神經元相互作用的一個點。它將電化學信號傳輸到另一個神經元。

 

x1,x2 .... xn是輸入變量。w1,w2 .... wn是各個輸入的權重。b是偏差,將其與加權輸入相加即可形成輸入。偏差和權重都是神經元的可調整參數。使用一些學習規則來調整參數。神經元的輸出范圍可以從-inf到+ inf。神經元不知道邊界。因此,我們需要神經元的輸入和輸出之間的映射機制。將輸入映射到輸出的這種機制稱為激活函數。

前饋和反饋人工神經網絡

人工神經網絡主要有兩種類型:前饋和反饋人工神經網絡。前饋神經網絡是非遞歸網絡。該層中的神經元僅與下一層中的神經元相連,並且它們不形成循環。在前饋中,信號僅在一個方向上流向輸出層。

反饋神經網絡包含循環。通過在網絡中引入環路,信號可以雙向傳播。反饋周期會導致網絡行為根據其輸入隨時間變化。反饋神經網絡也稱為遞歸神經網絡。

 

 

激活函數

激活函數定義神經元的輸出。激活函數使神經網絡具有非線性和可表達性。有許多激活函數:

  • 識別函數 通過激活函數 Identity,節點的輸入等於輸出。它完美擬合於潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用於回歸任務。。
  • 在 二元階梯函數(Binary Step Function)中,如果Y的值高於某個特定值(稱為閾值),則輸出為True(或已激活),如果小於閾值,則輸出為false(或未激活)。這在分類器中非常有用。
  • S形函數 稱為S形函數。邏輯和雙曲正切函數是常用的S型函數。有兩種:
    • Sigmoid函數 是一種邏輯函數,其中輸出值為二進制或從0到1變化。
    • tanh函數 是一種邏輯函數,其輸出值在-1到1之間變化。也稱為雙曲正切函數或tanh。
  • ReLU函數又稱為修正線性單元(Rectified Linear Unit),是一種分段線性函數,其彌補了sigmoid函數以及tanh函數的梯度消失問題。它是最常用的激活函數。對於x的負值,它輸出0。

 

 

在R中實現神經網絡

創建訓練數據集

我們創建數據集。在這里,您需要數據中的兩種屬性或列:特征和標簽。在上面顯示的表格中,您可以查看學生的專業知識,溝通技能得分和學生成績。因此,前兩列(專業知識得分和溝通技能得分)是特征,第三列(學生成績)是二進制標簽。

  1.  
    #創建訓練數據集
  2.  
    # 在這里,把多個列或特征組合成一組數據
  3.  
    test=data.frame(專業知識,溝通技能得分)

讓我們構建神經網絡分類器模型。
首先,導入神經網絡庫,並通過傳遞標簽和特征的參數集,數據集,隱藏層中神經元的數量以及誤差計算來創建神經網絡分類器模型。
  1.  
     
  2.  
    # 擬合神經網絡
  3.  
    nn(成績~專業知識+溝通技能得分, hidden= 3,act.fct = "logistic",
  4.  
    linear.output = FALSE)

這里得到模型的因變量、自變量、損失函數、激活函數、權重、結果矩陣(包含達到的閾值,誤差,AIC和BIC以及每次重復的權重的矩陣)等信息:

  1.  
    $model.list
  2.  
    $model.list$response
  3.  
    [ 1] "成績"
  4.  
     
  5.  
    $model.list$variables
  6.  
    [ 1] "專業知識" "溝通技能得分"
  7.  
     
  8.  
     
  9.  
    $err.fct
  10.  
    function (x, y)
  11.  
    {
  12.  
    1/2 * (y - x)^2
  13.  
    }
  14.  
    $act.fct
  15.  
    function (x)
  16.  
    {
  17.  
    1/(1 + exp(-x))
  18.  
    }
  19.  
    $net.result
  20.  
    $net.result[[1]]
  21.  
    [, 1]
  22.  
    [ 1,] 0.980052980
  23.  
    [ 2,] 0.001292503
  24.  
    [ 3,] 0.032268860
  25.  
    [ 4,] 0.032437961
  26.  
    [ 5,] 0.963346989
  27.  
    [ 6,] 0.977629865
  28.  
     
  29.  
     
  30.  
    $weights
  31.  
    $weights[[1]]
  32.  
    $weights[[1]][[1]]
  33.  
    [, 1] [,2] [,3]
  34.  
    [ 1,] 3.0583343 3.80801996 -0.9962571
  35.  
    [ 2,] 1.2436662 -0.05886708 1.7870905
  36.  
    [ 3,] -0.5240347 -0.03676600 1.8098647
  37.  
     
  38.  
    $weights[[1]][[2]]
  39.  
    [, 1]
  40.  
    [ 1,] 4.084756
  41.  
    [ 2,] -3.807969
  42.  
    [ 3,] -11.531322
  43.  
    [ 4,] 3.691784
  44.  
     
  45.  
     
  46.  
     
  47.  
    $generalized.weights
  48.  
    $generalized.weights[[1]]
  49.  
    [, 1] [,2]
  50.  
    [ 1,] 0.15159066 0.09467744
  51.  
    [ 2,] 0.01719274 0.04320642
  52.  
    [ 3,] 0.15657354 0.09778953
  53.  
    [ 4,] -0.46017408 0.34621212
  54.  
    [ 5,] 0.03868753 0.02416267
  55.  
    [ 6,] -0.54248384 0.37453006
  56.  
     
  57.  
     
  58.  
    $startweights
  59.  
    $startweights[[1]]
  60.  
    $startweights[[1]][[1]]
  61.  
    [, 1] [,2] [,3]
  62.  
    [ 1,] 0.1013318 -1.11757311 -0.9962571
  63.  
    [ 2,] 0.8583704 -0.15529112 1.7870905
  64.  
    [ 3,] -0.8789741 0.05536849 1.8098647
  65.  
     
  66.  
    $startweights[[1]][[2]]
  67.  
    [, 1]
  68.  
    [ 1,] -0.1283200
  69.  
    [ 2,] -1.0932526
  70.  
    [ 3,] -1.0077311
  71.  
    [ 4,] -0.5212917
  72.  
     
  73.  
     
  74.  
     
  75.  
    $result.matrix
  76.  
    [, 1]
  77.  
    error 0.002168460
  78.  
    reached.threshold 0.007872764
  79.  
    steps 145.000000000
  80.  
    Intercept.to.1layhid1 3.058334288
  81.  
    專業知識.to.1layhid1 1.243666180
  82.  
    溝通技能得分.to.1layhid1 -0.524034687
  83.  
    Intercept.to.1layhid2 3.808019964
  84.  
    專業知識.to.1layhid2 -0.058867076
  85.  
    溝通技能得分.to.1layhid2 -0.036766001
  86.  
    Intercept.to.1layhid3 -0.996257068
  87.  
    專業知識.to.1layhid3 1.787090472
  88.  
    溝通技能得分.to.1layhid3 1.809864672
  89.  
    Intercept.to.成績 4.084755522
  90.  
    1layhid1.to.成績 -3.807969087
  91.  
    1layhid2.to.成績 -11.531321534
  92.  
    1layhid3.to.成績 3.691783805

繪制神經網絡

讓我們繪制您的神經網絡模型。

  1.  
    # 繪圖神經網絡
  2.  
    plot(nn)

 

 

創建測試數據集

創建測試數據集:專業知識得分和溝通技能得分

  1.  
    # 創建測試集
  2.  
    test=data.frame(專業知識,溝通技能得分)

預測測試集的結果

使用計算函數預測測試數據的概率得分。

  1.  
    ## 使用神經網絡進行預測
  2.  
     
  3.  
    Pred$ result
  1.  
    0.9928202080
  2.  
    0.3335543925
  3.  
    0.9775153014

現在,將概率轉換為二進制類。

  1.  
    # 將概率轉換為設置閾值0.5的二進制類別
  2.  
    pred <- ifelse(prob>0.5, 1, 0)
  3.  
    pred

 

  1.  
    1
  2.  
    0
  3.  
    1

預測結果為1,0和1。

利弊

神經網絡更靈活,可以用於回歸和分類問題。神經網絡非常適合具有大量輸入(例如圖像)的非線性數據集,可以使用任意數量的輸入和層,可以並行執行工作。

還有更多可供選擇的算法,例如SVM,決策樹和回歸算法,這些算法簡單,快速,易於訓練並提供更好的性能。神經網絡更多的是黑盒子,需要更多的開發時間和更多的計算能力。與其他機器學習算法相比,神經網絡需要更多的數據。NN僅可用於數字輸入和非缺失值數據集。一位著名的神經網絡研究人員說:  “神經網絡是解決任何問題的第二好的方法。最好的方法是真正理解問題。”

神經網絡的用途

神經網絡的特性提供了許多應用方面,例如:

  • 模式識別: 神經網絡非常適合模式識別問題,例如面部識別,物體檢測,指紋識別等。
  • 異常檢測: 神經網絡擅長異常檢測,它們可以輕松檢測出不適合常規模式的異常模式。
  • 時間序列預測: 神經網絡可用於預測時間序列問題,例如股票價格,天氣預報。
  • 自然語言處理: 神經網絡在自然語言處理任務中提供了廣泛的應用,例如文本分類,命名實體識別(NER),詞性標記,語音識別和拼寫檢查。

 


最受歡迎的見解

1.r語言用神經網絡改進nelson-siegel模型擬合收益率曲線分析

2.r語言實現擬合神經網絡預測和結果可視化

3.python用遺傳算法-神經網絡-模糊邏輯控制算法對樂透分析

4.用於nlp的python:使用keras的多標簽文本lstm神經網絡分類

5.用r語言實現神經網絡預測股票實例

6.R語言基於Keras的小數據集深度學習圖像分類

7.用於NLP的seq2seq模型實例用Keras實現神經機器翻譯

8.python中基於網格搜索算法優化的深度學習模型分析糖

9.matlab使用貝葉斯優化的深度學習

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM