當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


R nnet 擬合神經網絡

R語言 nnet 位於 nnet 包(package)。

說明

擬合single-hidden-layer神經網絡,可能具有skip-layer連接。

用法

nnet(x, ...)

## S3 method for class 'formula'
nnet(formula, data, weights, ...,
     subset, na.action, contrasts = NULL)

## Default S3 method:
nnet(x, y, weights, size, Wts, mask,
     linout = FALSE, entropy = FALSE, softmax = FALSE,
     censored = FALSE, skip = FALSE, rang = 0.7, decay = 0,
     maxit = 100, Hess = FALSE, trace = TRUE, MaxNWts = 1000,
     abstol = 1.0e-4, reltol = 1.0e-8, ...)

參數

formula

class ~ x1 + x2 + ... 形式的公式

x

例如,x 值的矩陣或 DataFrame 。

y

例如,目標值的矩陣或 DataFrame 。

weights

每個示例的(案例)權重 - 如果缺失,則默認為 1。

size

隱藏層中的單元數。如果有 skip-layer 單位,則可以為零。

data

優先采用formula 中指定的變量的數據幀。

subset

指定訓練樣本中使用的案例的索引向量。 (注意:如果給出,則必須命名該參數。)

na.action

指定在找到 NA 時要采取的操作的函數。默認操作是過程失敗。另一種選擇是 na.omit,它會導致拒絕任何所需變量缺失值的情況。 (注意:如果給出,則必須命名該參數。)

contrasts

用於模型公式中作為變量出現的部分或全部因子的對比列表。

Wts

初始參數向量。如果缺少隨機選擇。

mask

指示應優化哪些參數的邏輯向量(默認全部)。

linout

線性輸出單元的開關。默認物流輸出單位。

entropy

熵(=最大條件似然)擬合的開關。默認采用最小二乘法。

softmax

用於 softmax(對數線性模型)和最大條件似然擬合的開關。 linoutentropysoftmaxcensored 互斥。

censored

softmax 的變體,其中非零目標表示可能的類。因此,對於 softmax 來說,一行 (0, 1, 1) 意味著類別 2 和 3 各有一個示例,但對於 censored 來說,它意味著一個僅已知類別為 2 或 3 的示例。

skip

切換以添加從輸入到輸出的 skip-layer 連接。

rang

[- rang , rang ] 上的初始隨機權重。值約為 0.5,除非輸入很大,在這種情況下,應選擇 rang * max( |x| ) 約為 1。

decay

權重衰減參數。默認 0。

maxit

最大迭代次數。默認 100。

Hess

如果為 true,則找到的最佳權重集的擬合度量的 Hessian 矩陣將作為組件 Hessian 返回。

trace

用於跟蹤優化的開關。默認TRUE

MaxNWts

最大允許重量數。代碼中沒有內在限製,但增加 MaxNWts 可能會導致非常緩慢且耗時的擬合。

abstol

如果擬合標準低於 abstol ,則停止,表明本質上完美擬合。

reltol

如果優化器無法將擬合標準降低至少 1 - reltol ,則停止。

...

傳遞給其他方法或從其他方法傳遞的參數。

細節

如果formula中的響應是一個因子,則構建適當的分類網絡;如果級別數為 2,則該模型具有一個輸出和熵擬合,並且輸出數等於類數,並且對於更多級別,具有 Softmax 輸出級。如果響應不是一個因子,則將其原封不動地傳遞給 nnet.default

優化是通過 optim 的 BFGS 方法完成的。

"nnet""nnet.formula" 的對象。主要是內部結構,但有組件

wts

找到的最佳權重集

value

擬合標準的值加上權重衰減項。

fitted.values

訓練數據的擬合值。

residuals

訓練數據的殘差。

convergence

如果達到最大迭代次數,則 1 ,否則 0

例子

# use half the iris data
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
ir1 <- nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
            decay = 5e-4, maxit = 200)
test.cl <- function(true, pred) {
    true <- max.col(true)
    cres <- max.col(pred)
    table(true, cres)
}
test.cl(targets[-samp,], predict(ir1, ir[-samp,]))


# or
ird <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
        species = factor(c(rep("s",50), rep("c", 50), rep("v", 50))))
ir.nn2 <- nnet(species ~ ., data = ird, subset = samp, size = 2, rang = 0.1,
               decay = 5e-4, maxit = 200)
table(ird$species[-samp], predict(ir.nn2, ird[-samp,], type = "class"))

參考

Ripley, B. D. (1996) Pattern Recognition and Neural Networks. Cambridge.

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Fourth edition. Springer.

也可以看看

predict.nnet , nnetHess

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Fit Neural Networks。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。