Laplacian Regularized Least Squares Classifier
Implements manifold regularization through the graph Laplacian as proposed by Belkin et al. 2006. As an adjacency matrix, we use the k nearest neighbour graph based on a chosen distance (default: euclidean).
LaplacianKernelLeastSquaresClassifier(X, y, X_u, lambda = 0, gamma = 0, kernel = kernlab::vanilladot(), adjacency_distance = "euclidean", adjacency_k = 6, x_center = TRUE, scale = TRUE, y_scale = TRUE, normalized_laplacian = FALSE)
X |
matrix; Design matrix for labeled data |
y |
factor or integer vector; Label vector |
X_u |
matrix; Design matrix for unlabeled data |
lambda |
numeric; L2 regularization parameter |
gamma |
numeric; Weight of the unlabeled data |
kernel |
kernlab::kernel to use |
adjacency_distance |
character; distance metric used to construct adjacency graph from the dist function. Default: "euclidean" |
adjacency_k |
integer; Number of of neighbours used to construct adjacency graph. |
x_center |
logical; Should the features be centered? |
scale |
logical; Should the features be normalized? (default: FALSE) |
y_scale |
logical; whether the target vector should be centered |
normalized_laplacian |
logical; If TRUE use the normalized Laplacian, otherwise, the Laplacian is used |
Belkin, M., Niyogi, P. & Sindhwani, V., 2006. Manifold regularization: A geometric framework for learning from labeled and unlabeled examples. Journal of Machine Learning Research, 7, pp.2399-2434.
Other RSSL classifiers:
EMLeastSquaresClassifier
,
EMLinearDiscriminantClassifier
,
GRFClassifier
,
ICLeastSquaresClassifier
,
ICLinearDiscriminantClassifier
,
KernelLeastSquaresClassifier
,
LaplacianSVM
,
LeastSquaresClassifier
,
LinearDiscriminantClassifier
,
LinearSVM
,
LinearTSVM()
,
LogisticLossClassifier
,
LogisticRegression
,
MCLinearDiscriminantClassifier
,
MCNearestMeanClassifier
,
MCPLDA
,
MajorityClassClassifier
,
NearestMeanClassifier
,
QuadraticDiscriminantClassifier
,
S4VM
,
SVM
,
SelfLearning
,
TSVM
,
USMLeastSquaresClassifier
,
WellSVM
,
svmlin()
library(RSSL) library(ggplot2) library(dplyr) ## Example 1: Half moons # Generate a dataset set.seed(2) df_orig <- generateCrescentMoon(100,sigma = 0.3) df <- df_orig %>% add_missinglabels_mar(Class~.,0.98) lambda <- 0.01 gamma <- 10000 rbf_param <- 0.125 # Train classifiers ## Not run: class_sup <- KernelLeastSquaresClassifier( Class~.,df, kernel=kernlab::rbfdot(rbf_param), lambda=lambda,scale=FALSE) class_lap <- LaplacianKernelLeastSquaresClassifier( Class~.,df, kernel=kernlab::rbfdot(rbf_param), lambda=lambda,gamma=gamma, normalized_laplacian = TRUE, scale=FALSE) classifiers <- list("Lap"=class_lap,"Sup"=class_sup) # Plot classifiers (can take a couple of seconds) df %>% ggplot(aes(x=X1,y=X2,color=Class)) + geom_point() + coord_equal() + stat_classifier(aes(linetype=..classifier..), classifiers = classifiers , color="black") # Calculate the loss lapply(classifiers,function(c) mean(loss(c,df_orig))) ## End(Not run) ## Example 2: Two circles set.seed(1) df_orig <- generateTwoCircles(1000,noise=0.05) df <- df_orig %>% add_missinglabels_mar(Class~.,0.994) lambda <- 10e-12 gamma <- 100 rbf_param <- 0.1 # Train classifiers ## Not run: class_sup <- KernelLeastSquaresClassifier( Class~.,df, kernel=kernlab::rbfdot(rbf_param), lambda=lambda,scale=TRUE) class_lap <- LaplacianKernelLeastSquaresClassifier( Class~.,df, kernel=kernlab::rbfdot(rbf_param), adjacency_k = 30, lambda=lambda,gamma=gamma, normalized_laplacian = TRUE, scale=TRUE) classifiers <- list("Lap"=class_lap,"Sup"=class_sup) # Plot classifiers (Can take a couple of seconds) df %>% ggplot(aes(x=X1,y=X2,color=Class,size=Class)) + scale_size_manual(values=c("1"=3,"2"=3),na.value=1) + geom_point() + coord_equal() + stat_classifier(aes(linetype=..classifier..), classifiers = classifiers , color="black",size=1) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.