preProcess(x, ...)
"preProcess"(x, method = c("center", "scale"), thresh = 0.95, pcaComp = NULL, na.remove = TRUE, k = 5, knnSummary = mean, outcome = NULL, fudge = 0.2, numUnique = 3, verbose = FALSE, freqCut = 95/5, uniqueCut = 10, cutoff = 0.9, ...)
"predict"(object, newdata, ...)
thresh
y
have to estimate the
Box-Cox transformation?nearZeroVar
.nearZeroVar
.findCorrelation
.preProcess
fastICA
,
such as n.comp
preProcess
results in a list with elements results in a list with elementspredict.preProcess
will produce a data frame.
x
and these operations are applied to new data using these values;
nothing is recomputed when using the predict
function.The Box-Cox (method = "BoxCox"
), Yeo-Johnson (method =
"YeoJohnson"
), and exponential transformations (method =
"expoTrans"
)have been "repurposed" here: they are being used to transform
the predictor variables. The Box-Cox transformation was developed for
transforming the response variable while another method, the Box-Tidwell
transformation, was created to estimate transformations of predictor data.
However, the Box-Cox method is simpler, more computationally efficient and
is equally effective for estimating power transformations. The Yeo-Johnson
transformation is similar to the Box-Cox model but can accommodate
predictors with zero and/or negative values (while the predictors values for
the Box-Cox transformation must be strictly positive.) The exponential
transformation of Manly (1976) can also be used for positive or negative
data.
method = "center"
subtracts the mean of the predictor's data (again
from the data in x
) from the predictor values while method =
"scale"
divides by the standard deviation.
The "range" transformation scales the data to be within [0, 1]. If new samples have values larger or smaller than those in the training set, values will be outside of this range.
Predictors that are not numeric are ignored in the calculations.
method = "zv"
identifies numeric predictor columns with a single
value (i.e. having zero variance) and excludes them from further
calculations. Similarly, method = "nzv"
does the same by applying
nearZeroVar
exclude "near zero-variance" predictors. The options
freqCut
and uniqueCut
can be used to modify the filter.
method = "corr"
seeks to filter out highly correlated predictors. See
findCorrelation
.
For classification, method = "conditionalX"
examines the distribution
of each predictor conditional on the outcome. If there is only one unique
value within any class, the predictor is excluded from further calculations
(see checkConditionalX
for an example). When outcome
is
not a factor, this calculation is not executed. This operation can be time
consuming when used within resampling via train
.
The operations are applied in this order: zero-variance filter, near-zero variance filter, correlation filter, Box-Cox/Yeo-Johnson/exponential transformation, centering, scaling, range, imputation, PCA, ICA then spatial sign. This is a departure from versions of caret prior to version 4.76 (where imputation was done first) and is not backwards compatible if bagging was used for imputation.
If PCA is requested but centering and scaling are not, the values will still be centered and scaled. Similarly, when ICA is requested, the data are automatically centered and scaled.
k-nearest neighbor imputation is carried out by finding the k closest samples (Euclidian distance) in the training set. Imputation via bagging fits a bagged tree model for each predictor (as a function of all the others). This method is simple, accurate and accepts missing values, but it has much higher computational cost. Imputation via medians takes the median of each predictor in the training set, and uses them to fill missing values. This method is simple, fast, and accepts missing values, but treats each predictor independently, and may be inaccurate.
A warning is thrown if both PCA and ICA are requested. ICA, as implemented
by the fastICA
package automatically does a PCA
decomposition prior to finding the ICA scores.
The function will throw an error of any numeric variables in x
has
less than two unique values unless either method = "zv"
or
method = "nzv"
are invoked.
Non-numeric data will not be pre-processed and there values will be in the
data frame produced by the predict
function. Note that when PCA or
ICA is used, the non-numeric columns may be in different positions when
predicted.
Kuhn and Johnson (2013), Applied Predictive Modeling, Springer, New York (chapter 4)
Kuhn (2008), Building predictive models in R using the caret (http://www.jstatsoft.org/article/view/v028i05/v28i05.pdf)
Box, G. E. P. and Cox, D. R. (1964) An analysis of transformations (with discussion). Journal of the Royal Statistical Society B, 26, 211-252.
Box, G. E. P. and Tidwell, P. W. (1962) Transformation of the independent variables. Technometrics 4, 531-550.
Manly, B. L. (1976) Exponential data transformations. The Statistician, 25, 37 - 42.
Yeo, I-K. and Johnson, R. (2000). A new family of power transformations to improve normality or symmetry. Biometrika, 87, 954-959.
BoxCoxTrans
, expoTrans
boxcox
, prcomp
,
fastICA
, spatialSign
data(BloodBrain)
# one variable has one unique value
## Not run:
# preProc <- preProcess(bbbDescr)
#
# preProc <- preProcess(bbbDescr[1:100,-3])
# training <- predict(preProc, bbbDescr[1:100,-3])
# test <- predict(preProc, bbbDescr[101:208,-3])
# ## End(Not run)
Run the code above in your browser using DataLab