# nnet {nnet}

### Description

Fit single-hidden-layer neural network, possibly with skip-layer connections.

### Usage

nnet(x, ...) ## S3 method for class 'formula': nnet((formula, data, weights, ..., subset, na.action, contrasts = NULL)) ## S3 method for class 'default': 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, ...))

### Arguments

- formula
- A formula of the form
`class ~ x1 + x2 + ...`

- x
- matrix or data frame of
`x`

values for examples. - y
- matrix or data frame of target values for examples.
- weights
- (case) weights for each example -- if missing defaults to 1.
- size
- number of units in the hidden layer. Can be zero if there are skip-layer units.
- data
- Data frame from which variables specified in
`formula`

are preferentially to be taken. - subset
- An index vector specifying the cases to be used in the training sample. (NOTE: If given, this argument must be named.)
- na.action
- A function to specify the action to be taken if
`NA`

s are found. The default action is for the procedure to fail. An alternative is na.omit, which leads to rejection of cases with missing values on any required variable. (NOTE: If given, this argument must be named.) - contrasts
- a list of contrasts to be used for some or all of the factors appearing as variables in the model formula.
- Wts
- initial parameter vector. If missing chosen at random.
- mask
- logical vector indicating which parameters should be optimized (default all).
- linout
- switch for linear output units. Default logistic output units.
- entropy
- switch for entropy (= maximum conditional likelihood) fitting. Default by least-squares.
- softmax
- switch for softmax (log-linear model) and maximum conditional likelihood fitting.
`linout`

,`entropy`

,`softmax`

and`censored`

are mutually exclusive. - censored
- A variant on
`softmax`

, in which non-zero targets mean possible classes. Thus for`softmax`

a row of`(0, 1, 1)`

means one example each of classes 2 and 3, but for`censored`

it means one example whose class is only known to be 2 or 3. - skip
- switch to add skip-layer connections from input to output.
- rang
- Initial random weights on [-
`rang`

,`rang`

]. Value about 0.5 unless the inputs are large, in which case it should be chosen so that`rang`

* max(`|x|`

) is about 1. - decay
- parameter for weight decay. Default 0.
- maxit
- maximum number of iterations. Default 100.
- Hess
- If true, the Hessian of the measure of fit at the best set of weights found is returned as component
`Hessian`

. - trace
- switch for tracing optimization. Default
`TRUE`

. - MaxNWts
- The maximum allowable number of weights. There is no intrinsic limit in the code, but increasing
`MaxNWts`

will probably allow fits that are very slow and time-consuming. - abstol
- Stop if the fit criterion falls below
`abstol`

, indicating an essentially perfect fit. - reltol
- Stop if the optimizer is unable to reduce the fit criterion by a factor of at least
`1 - reltol`

. - ...
- arguments passed to or from other methods.

### Details

If the response in `formula`

is a factor, an appropriate classification network is constructed; this has one output and entropy fit if the number of levels is two, and a number of outputs equal to the number of classes and a softmax output stage for more levels. If the response is not a factor, it is passed on unchanged to `nnet.default`

.

Optimization is done via the BFGS method of `optim`

.

### Values

object of class `"nnet"`

or `"nnet.formula"`

. Mostly internal structure, but has components

- wts
- the best set of weights found
- value
- value of fitting criterion plus weight decay term.
- fitted.values
- the fitted values for the training data.
- residuals
- the residuals for the training data.
- convergence
`1`

if the maximum number of iterations was reached, otherwise

### References

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.

### See Also

`predict.nnet`

, `nnetHess`

### Examples

# 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"))

Documentation reproduced from package nnet, version 7.3-7. License: GPL-2 | GPL-3