cluster_k_component_graph: Cluster a k-component graph from data using the Constrained...

View source: R/constrLaplacianRank.R

cluster_k_component_graphR Documentation

Cluster a k-component graph from data using the Constrained Laplacian Rank algorithm Cluster a k-component graph on the basis of an observed data matrix. Check out https://mirca.github.io/spectralGraphTopology for code examples.

Description

Cluster a k-component graph from data using the Constrained Laplacian Rank algorithm

Cluster a k-component graph on the basis of an observed data matrix. Check out https://mirca.github.io/spectralGraphTopology for code examples.

Usage

cluster_k_component_graph(
  Y,
  k = 1,
  m = 5,
  lmd = 1,
  eigtol = 1e-09,
  edgetol = 1e-06,
  maxiter = 1000
)

Arguments

Y

a pxn data matrix, where p is the number of nodes and n is the number of features (or data points per node)

k

the number of components of the graph

m

the maximum number of possible connections for a given node used to build an affinity matrix

lmd

L2-norm regularization hyperparameter

eigtol

value below which eigenvalues are considered to be zero

edgetol

value below which edge weights are considered to be zero

maxiter

the maximum number of iterations

Value

A list containing the following elements:

laplacian

the estimated Laplacian Matrix

adjacency

the estimated Adjacency Matrix

eigvals

the eigenvalues of the Laplacian Matrix

lmd_seq

sequence of lmd values at every iteration

elapsed_time

elapsed time at every iteration

Author(s)

Ze Vinicius and Daniel Palomar

References

Nie, Feiping and Wang, Xiaoqian and Jordan, Michael I. and Huang, Heng. The Constrained Laplacian Rank Algorithm for Graph-based Clustering, 2016, AAAI'16. http://dl.acm.org/citation.cfm?id=3016100.3016174

Examples

library(clusterSim)
library(spectralGraphTopology)
library(igraph)
set.seed(1)
# number of nodes per cluster
N <- 30
# generate datapoints
twomoon <- shapes.two.moon(N)
# estimate underlying graph
graph <- cluster_k_component_graph(twomoon$data, k = 2)
# build network
net <- graph_from_adjacency_matrix(graph$adjacency, mode = "undirected", weighted = TRUE)
# colorify nodes and edges
colors <- c("#706FD3", "#FF5252", "#33D9B2")
V(net)$cluster <- twomoon$clusters
E(net)$color <- apply(as.data.frame(get.edgelist(net)), 1,
                      function(x) ifelse(V(net)$cluster[x[1]] == V(net)$cluster[x[2]],
                                        colors[V(net)$cluster[x[1]]], '#000000'))
V(net)$color <- c(colors[1], colors[2])[twomoon$clusters]
# plot network
plot(net, layout = twomoon$data, vertex.label = NA, vertex.size = 3)

spectralGraphTopology documentation built on March 18, 2022, 7:35 p.m.