As its names suggests, Supervised Locality Preserving Projection (SLPP) is a variant of LPP in that it replaces neighborhood network construction schematic with class information in that if two nodes belong to the same class, it assigns weight of 1, i.e., \(S_{ij}=1\) if \(x_i\) and \(x_j\) have same class labelings.
do.slpp(X, label, ndim = 2, preprocess = c("center", "decorrelate", "whiten"))
an \((n\times p)\) matrix or data frame whose rows are observations.
a length-\(n\) vector of data class labels.
an integer-valued target dimension.
an additional option for preprocessing the data.
Default is "center" and other options of "decorrelate" and "whiten"
are supported. See also aux.preprocess
for more details.
a named list containing
an \((n\times ndim)\) matrix whose rows are embedded observations.
a list containing information for out-of-sample prediction.
a \((p\times ndim)\) whose columns are basis for projection.
Zheng Z, Yang F, Tan W, Jia J, Yang J (2007). “Gabor Feature-Based Face Recognition Using Supervised Locality Preserving Projection.” Signal Processing, 87(10), 2473--2483.
## use iris data
data(iris)
set.seed(100)
subid = sample(1:150, 50)
X = as.matrix(iris[subid,1:4])
label = as.factor(iris[subid,5])
## compare SLPP with LPP
outLPP <- do.lpp(X)
outSLPP <- do.slpp(X, label)
## visualize
opar <- par(no.readonly=TRUE)
par(mfrow=c(1,2))
plot(outLPP$Y, pch=19, col=label, main="LPP")
plot(outSLPP$Y, pch=19, col=label, main="SLPP")
par(opar)