Available Trees

The SHiP framework supports a variety of ultrametric similarity tree types, which form the basis for hierarchy construction. Each tree type encapsulates a specific strategy for representing pairwise similarity across the dataset.

The enum below lists all available tree types supported in the framework:

enum class UltrametricTreeType

Values:

enumerator LoadTree

Load a previously constructed tree from a JSON file.

**Parameters:**
- `json_tree_filepath`: File path of the tree to be loaded.
- `tree_type` (default: `LoadTree`, optional): Set the tree type of the loaded tree to `tree_type`.

enumerator DCTree

Density-Connected Tree (DCTree): a tree structure based on the density-connected distance (dc-distance) [1] .

Parameters:

  • min_points (default: 5): Compute core_dist by using the distance to the min_points’ nearest neighbor of a point.

  • relaxed (default: false): Set the identity distance of the points (leave nodes) to the core_dist.

enumerator HST

Hierarchically Separated Tree (HST): uses recursive metric partitions to ensure separation properties [2] .

Parameters:

  • seed (default: -1): Seed for building the HST. -1 means random.

enumerator CoverTree

Cover Tree: a fast, scalable data structure for nearest neighbor queries and clustering [3] .

enumerator KDTree

KD-Tree: partitions the data space along axis-aligned hyperplanes for efficient spatial queries [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MeanSplitKDTree

Variant of KD-Tree using mean splits instead of medians to construct the tree [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator BallTree

Ball Tree: recursively partitions points into hyperspheres (balls), suitable for non-axis-aligned clusters [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MeanSplitBallTree

Variant of Ball Tree that uses mean splits instead of radius-based ones [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPTree

Random Projection Tree (RP Tree): recursively splits data using random hyperplanes [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator MaxRPTree

Maximum-Spread RP Tree: a variant of RP Tree using splits that maximize spread or variance [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator UBTree

Upper Bound Tree (UBTree): a tree structure emphasizing similarity upper bounds for clustering [3] .

Parameters:

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RTree

R-Tree: a dynamic index structure for spatial access methods using bounding rectangles [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RStarTree

R*-Tree: a refined R-Tree with better heuristics for node splitting and reinsertions [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator XTree

X-Tree: an extended R-Tree variant that handles high-dimensional data by avoiding overlap [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator HilbertRTree

Hilbert R-Tree: an R-Tree optimized using space-filling Hilbert curves to improve locality [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPlusTree

R+-Tree: avoids overlapping rectangles by splitting objects across multiple nodes [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

enumerator RPlusPlusTree

R++-Tree: a further improvement over R+-Tree focusing on reduced overlap and better packing [3] .

Parameters:

  • min_leaf_size (default: 1): Minimum leaf size for this tree (how many leaves can be put in the lowest node).

  • max_leaf_size (default: 5): Maximum leaf size for this tree (how many leaves can be put in the lowest node).

[1] Based on the paper:
Anna Beer, Andrew Draganov, Ellen Hohma, Philipp Jahn, Christian M.M. Frey, Ira Assent.
Connecting the Dots – Density-Connectivity Distance unifies DBSCAN, k-Center and Spectral Clustering.
Proceedings of the 29th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD), 2023.
[2] Adapted from the original codebase: ICDE21-HST and is based on the paper:
Yuxiang Zeng, Yongxin Tong, Lei Chen.
HST+: An Efficient Index for Embedding Arbitrary Metric Spaces.
IEEE International Conference on Data Engineering (ICDE), 2021.
[3] Implemented in the mlpack 4 C++ machine learning library:
Ryan R. Curtin, Marcus Edel, Omar Shrit, Shubham Agrawal, Suryoday Basak, James J. Balamuta, Ryan Birmingham, Kartik Dutt, Dirk Eddelbuettel, Rishabh Garg, Shikhar Jaiswal, Aakash Kaushik, Sangyeon Kim, Anjishnu Mukherjee, Nanubala Gnana Sai, Nippun Sharma, Yashwant Singh Parihar, Roshan Swain, Conrad Sanderson.
mlpack 4: a fast, header-only C++ machine learning library
Journal of Open Source Software, 2023.