chol.reduce {kernlab} | R Documentation |
chol.reduce
computes the incomplete Cholesky decomposition
of the kernel matrix from a data matrix.
chol.reduce(x, kernel="rbfdot", kpar=list(sigma=0.1), tol = 0.001, max.iter = dim(x)[1], blocksize = 50, verbose = 0)
x |
The data matrix indexed by row |
kernel |
the kernel function used in training and predicting.
This parameter can be set to any function, of class kernel , which computes a dot product between two
vector arguments. kernlab provides the most popular kernel functions
which can be used by setting the kernel parameter to the following
strings:
|
kpar |
the list of hyper-parameters (kernel parameters).
This is a list which contains the parameters to be used with the
kernel function. For valid parameters for existing kernels are :
|
tol |
algorithm stops when remaining pivots bring less accuracy
then tol (default: 0.001) |
max.iter |
maximum number of iterations and colums in Z |
blocksize |
add this many columns to matrix per iteration |
verbose |
print info on algorithm convergence |
An incomplete cholesky decomposition calculates Z where K= ZZ' K being the kernel matrix. Since the rank of a kernel matrix is usually low, Z tends to be smaller then the complete kernel matrix. The decomposed matrix can be used to create memory efficient kernel-based algorithms without the need to compute and store a complete kernel matrix in memory.
An S4 object of class "inc.chol" which is an extension of the class "matrix". The object is the decomposed kernel matrix along with the slots :
pivots |
Indices on which pivots where done |
diag.residues |
Residuals left on the diagonal |
maxresiduals |
Residuals picked for pivoting |
slots can be accessed either by object@slot
or by accessor functions with the same name (e.g. pivots(object))
Alexandros Karatzoglou (based on Matlab code by
S.V.N. (Vishy) Vishwanathan and Alex Smola)
alexandros.karatzoglou@ci.tuwien.ac.at
data(iris) datamatrix <- as.matrix(iris[,-5]) # initialize kernel function rbf <- rbfdot(sigma=0.1) rbf Z <- chol.reduce(datamatrix,kernel=rbf) dim(Z) pivots(Z) # calculate kernel matrix K <- crossprod(t(Z)) # difference between approximated and real kernel matrix (K - kernelMatrix(kernel=rbf, datamatrix))[6,]