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.