inchol {kernlab} | R Documentation |
Incomplete Cholesky decomposition
Description
inchol
computes the incomplete Cholesky decomposition
of the kernel matrix from a data matrix.
Usage
inchol(x, kernel="rbfdot", kpar=list(sigma=0.1), tol = 0.001,
maxiter = dim(x)[1], blocksize = 50, verbose = 0)
Arguments
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
The kernel parameter can also be set to a user defined function of class kernel by passing the function name as an argument. |
kpar |
the list of hyper-parameters (kernel parameters). This is a list which contains the parameters to be used with the kernel function. Valid parameters for existing kernels are :
Hyper-parameters for user defined kernels can be passed through the kpar parameter as well. |
tol |
algorithm stops when remaining pivots bring less accuracy
then |
maxiter |
maximum number of iterations and columns in |
blocksize |
add this many columns to matrix per iteration |
verbose |
print info on algorithm convergence |
Details
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.
Value
An S4 object of class "inchol" 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 |
diagresidues |
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))
Author(s)
Alexandros Karatzoglou (based on Matlab code by
S.V.N. (Vishy) Vishwanathan and Alex Smola)
alexandros.karatzoglou@ci.tuwien.ac.at
References
Francis R. Bach, Michael I. Jordan
Kernel Independent Component Analysis
Journal of Machine Learning Research 3, 1-48
https://www.jmlr.org/papers/volume3/bach02a/bach02a.pdf
See Also
Examples
data(iris)
datamatrix <- as.matrix(iris[,-5])
# initialize kernel function
rbf <- rbfdot(sigma=0.1)
rbf
Z <- inchol(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,]