| Type: | Package | 
| Title: | Multiway Clustering via Tensor Block Models | 
| Version: | 3.0 | 
| Date: | 2020-09-27 | 
| Author: | Miaoyan Wang, Yuchen Zeng | 
| Maintainer: | Yuchen Zeng <yzeng58@wisc.edu> | 
| Imports: | parallel, stats | 
| Suggests: | cluster | 
| Description: | Implements the multiway sparse clustering approach of M. Wang and Y. Zeng, "Multiway clustering via tensor block models". Advances in Neural Information Processing System 32 (NeurIPS), 715-725, 2019. | 
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] | 
| NeedsCompilation: | yes | 
| Packaged: | 2020-09-27 18:27:15 UTC; cengyuchen | 
| Repository: | CRAN | 
| Date/Publication: | 2020-09-27 18:40:02 UTC | 
| RoxygenNote: | 7.0.0 | 
| Encoding: | UTF-8 | 
Select the clustering size for order-3 sparse tensor clustering via BIC
Description
Select the clustering size for three-way clustering. The function searches over a range of clustering sizes and outputs the one that minimizes BIC. The clustering size (d_1, d_2, d_3) is a length-3 vector consisting of the number of clusters in each mode.
Usage
chooseClusteringSize(
  x,
  k,
  r,
  l,
  lambda = 0,
  sim.times = 1,
  method = "L0",
  n.cores = NULL
)
Arguments
| x | a three-dimensional array | 
| k | a vector, the possible numbers of clusters at mode 1 | 
| r | a vector, the possible numbers of clusters at mode 2 | 
| l | a vector, the possible numbers of clusters at mode 3 | 
| lambda | a numeric value, regularization coefficient | 
| sim.times | the number of simulation replicates when performing clustering | 
| method | two options: "L0", "L1". "L0" indicates L0 penalty, and "L1" indicates Lasso penalty | 
| n.cores | the number of cores in parallel implementation | 
Value
a list
estimated_krl a 1*3 matrix consisting of the estimated clustering size  
BIC a vector consisting of the BIC value for all combinations of clustering sizes
Select the regularization coefficient for order-3 sparse tensor clustering via BIC
Description
Select the regularization coefficient for three-way clustering. The clustering size is assumed to be known. The function searches over a range of regularization sizes and outputs the one that minimizes the BIC.
Usage
chooseLambda(x, k, r, l, lambda = NULL, method = "L0")
Arguments
| x | a three-dimensional array | 
| k | an positive integer, the numbers of clusters at mode 1 | 
| r | an positive integer, the numbers of clusters at mode 2 | 
| l | an positive integer, the numbers of clusters at mode 3 | 
| lambda | a vector of possible lambda, eg: lambda = c(0,50,100,200) | 
| method | two options: "L0", "L1". "L0" indicates L0 penalty, and "L1" indicates Lasso penalty | 
Value
a list
lambda the lambda with lowest BIC
BIC the BIC for each lambda in the given range
nonzeromus the number of clusters with non-zero means
Generate a random order-3 tensor
Description
Generate an order-3 random tensor based on tensor block model.
Usage
getOrder3Tensor(
  n,
  p,
  q,
  k = NULL,
  r = NULL,
  l = NULL,
  error = 3,
  sort = TRUE,
  sparse.percent = 0,
  center = FALSE,
  seed = NULL,
  mumin = -3,
  mumax = 3
)
Arguments
| n | the dimension at mode 1 | 
| p | the dimension at mode 2 | 
| q | the dimension at mode 3 | 
| k | an positive integer, the numbers of clusters at mode 1 | 
| r | an positive integer, the numbers of clusters at mode 2 | 
| l | an positive integer, the numbers of clusters at mode 3 | 
| error | a positive numeric value, noise level | 
| sort | if TRUE, the tensor entries belonging to the same cluster would be assumed together | 
| sparse.percent | the proportion of zero entries based on the Gaussian tensor block model | 
| center | if True, the data tensor would be centered to zero-mean before clustering | 
| seed | a positive integer, used to specify the random seed | 
| mumin | a numeric value, the lower bound of the block mean | 
| mumax | a numeric value, the upper bound of the block mean | 
Value
a list
x the tensor   
truthX the underlying signal tensor following block model
truthCs true cluster label assignment at mode 1   
truthDs true cluster label assignment at mode 2   
truthEs true cluster label assignment at mode 3   
mus the block means
binaryX the 0-1 tensor (0:the mean signal = 0; 1:the mean signal != 0)
Examples
getOrder3Tensor(20,20,20,2,2,2)$x
Generate a random order-4 tensor
Description
Generate a random order-4 tensor based on tensor block model.
Usage
getOrder4Tensor(
  n,
  p,
  q,
  s,
  k = NULL,
  r = NULL,
  l = NULL,
  m = NULL,
  error = 3,
  sort = TRUE,
  sparse.percent = 0,
  center = FALSE,
  seed = NULL,
  mumin = -3,
  mumax = 3
)
Arguments
| n | the dimension at mode 1 | 
| p | the dimension at mode 2 | 
| q | the dimension at mode 3 | 
| s | the dimension at mode 4 | 
| k | an positive integer, the numbers of clusters at mode 1 | 
| r | an positive integer, the numbers of clusters at mode 2 | 
| l | an positive integer, the numbers of clusters at mode 3 | 
| m | an positive integer, the numbers of clusters at mode 4 | 
| error | a positive numeric value, noise level | 
| sort | if TRUE, the tensor entries belonging to the same cluster would be assumed together | 
| sparse.percent | the proportion of zero entries based on the Gaussian tensor block model | 
| center | if True, the data tensor would be centered to zero-mean before clustering | 
| seed | a positive integer, used to specify the random seed | 
| mumin | a numeric value, the lower bound of the block mean | 
| mumax | a numeric value, the upper bound of the block mean | 
Value
a list
x the tensor   
truthX the underlying signal tensor following block model
truthCs true cluster label assignment at mode 1   
truthDs true cluster label assignment at mode 2   
truthEs true cluster label assignment at mode 3 
truthFs true cluster label assignment at mode 4
mus the block means
binaryX the 0-1 tensor (0:the mean signal = 0; 1:the mean signal != 0)
Examples
getOrder4Tensor(10,10,10,10,2,2,2,2)
Perform tensor clustering via tensor block model (TBM)
Description
Perform tensor clustering via tensor block model (TBM) method.
Usage
tbmClustering(
  x,
  k,
  r,
  l,
  lambda = 0,
  max.iter = 1000,
  threshold = 1e-10,
  sim.times = 1,
  trace = FALSE,
  Cs.init = NULL,
  Ds.init = NULL,
  Es.init = NULL,
  method = "L0"
)
Arguments
| x | an order-3 data tensor | 
| k | an positive integer, the numbers of clusters at mode 1 | 
| r | an positive integer, the numbers of clusters at mode 2 | 
| l | an positive integer, the numbers of clusters at mode 3 | 
| lambda | a numeric value, regularization coefficient | 
| max.iter | a positive integer, the maximum numbers of iteration | 
| threshold | a positive small numeric value for convergence threshold | 
| sim.times | the number of simulation replicates when performing clustering | 
| trace | logic value, print result per each iteration if TRUE | 
| Cs.init | vector or NULL, initial cluster label assignment at mode 1 | 
| Ds.init | vector or NULL, initial cluster label assignment at mode 2 | 
| Es.init | vector or NULL, initial cluster label assignment at mode 3 | 
| method | two options: "L0", "L1". "L0" indicates L0 penalty, and "L1" indicates Lasso penalty | 
Value
a list
judgeX estimated underlying signal tensor
Cs clustering result at mode 1
Ds clustering result at mode 2
Es clustering result at mode 3 
mus estimated block means
Author(s)
Yuchen Zeng yzeng58@wisc.edu
References
M. Wang and Y. Zeng, "Multiway clustering via tensoe block models". Advances in Neural Information Processing System 32 (NeurIPS), 715-725, 2019.
Examples
x = getOrder3Tensor(20,20,20,2,2,2)$x
tbmClustering(x,2,2,2)