darr | R Documentation |
DA-RR or DA-KRR
1- The class membership y
(unidimensional variable) for the reference (= training) observations is firstly transformed (with function dummy
) to a table Ydummy
containing a number of nclas
dummy variables, where nclas
is the number of classes in y
.
2- Then, a linear ridge regression (RR) or a kernel ridge regression (KRR = LS-SVM) model is fitted between the X
-data and each of the dummy variables (i.e. each column of the dummy table Ydummy
).
3- For a given new observation, the final prediction (a class) corresponds to the dummy variable for which the prediction is the highest.
When the number of classes is higher than two, this method can be affected by a masking effect (see eg. Hastie et al. 2009, section 4.2): some class(es) can be masked (therefore not well predicted) if more than two classes are aligned in the X
-space. Caution should therefore be taken about such eventual masking effects.
Row observations can eventually be weighted with a priori weights (using argument weights
).
Note: An alternative to dakrr
is to run a "direct" kernel approach (e.g. Bennett & Embrechts 2003), i.e. to build preliminary kernel Gram matrices (such as doing a pre-processing on X
), and then to run a DA-RR on them. See examples in function kgram
.
See also the tuning facility with splitpar
.
darr(Xr, Yr, Xu, Yu = NULL, lambda = 0, unit = 1,
weights = NULL)
dakrr(Xr, Yr, Xu, Yu = NULL, lambda = 0, unit = 1,
kern = kpol, weights = NULL, print = TRUE, ...)
Xr |
A |
Yr |
A vector of length |
Xu |
A |
Yu |
A vector of length |
lambda |
A value, or vector of values, of the regularization parameter |
unit |
A scalar. Unit used for lambda (Default to |
kern |
For |
weights |
A vector of length |
print |
For |
... |
For |
A list of outputs, such as:
y |
Responses for the test data. |
fit |
Predictions for the test data. |
r |
Residuals for the test data. |
data(datforages)
Xr <- datforages$Xr
yr <- datforages$yr
Xu <- datforages$Xu
yu <- datforages$yu
lambda <- 10^(-15:5) ; unit <- 1
fm <- darr(Xr, yr, Xu, yu, lambda = lambda)
z <- err(fm, ~ lambda + unit)
z[z$errp == min(z$errp), ][1, ]
z$log.lambda <- log(z$lambda, base = 10)
plotmse(z, namx = "log.lambda", nam = "errp")
lambda <- 10^(-15:5) ; unit <- 1
fm <- dakrr(Xr, yr, Xu, yu, lambda = lambda, degree = 1:5)
z <- err(fm, ~ lambda + unit + degree)
z[z$errp == min(z$errp), ][1, ]
z$log.lambda <- log(z$lambda, base = 10)
group <- paste("degree=", z$degree, sep = "")
plotmse(z, namx = "log.lambda", nam = "errp", group = group)
lambda <- 10^(-15:5) ; unit <- 1
fm <- dakrr(Xr, yr, Xu, yu, lambda = lambda, kern = krbf, sigma = 10^(-3:3))
z <- err(fm, ~ lambda + unit + sigma)
z[z$errp == min(z$errp), ][1, ]
z$log.lambda <- log(z$lambda, base = 10)
group <- paste("sigma=", z$sigma, sep = "")
plotmse(z, namx = "log.lambda", nam = "errp", group = group)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.