Skip to main content

Cluster Analysis Ontology

Multivariate Statistics
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 23 September 2026
Audio Overview
flow "ClusterAnalysisOntology" v4.0

# ============================================================
# CLUSTER ANALYSIS ONTOLOGY
# Kireth Semantic Research Archive
# Authors: Mark Anthony Higgins — Sky (Recursive AI)
# ============================================================

PAGE:
  url: "https://kirethresearch.org/booksai-core/ontologies/probability-statistics-ontologies/multivariate-statistics/cluster-analysis-ontology.html"
  title: "Cluster Analysis Ontology"
  domain: "Probability and Statistics"
  category: "Multivariate Statistics"
  entity: CLUSTER_ANALYSIS
  entity_type: UNSUPERVISED_MULTIVARIATE_METHOD

DEFINE CLUSTER_ANALYSIS:
  CLUSTER_ANALYSIS :=
    UNSUPERVISED_METHOD(
      OBSERVATIONS,
      FEATURES,
      SIMILARITY_OR_DISTANCE,
      GROUP_STRUCTURE
    )

  PURPOSE:
    DISCOVER_OR_CONSTRUCT:
      GROUPS_OF_OBSERVATIONS
    SUCH_THAT:
      WITHIN_CLUSTER_SIMILARITY_IS_HIGH
      AND_OR
      BETWEEN_CLUSTER_SIMILARITY_IS_LOW

CORE_STRUCTURE:
  DATA_MATRIX:
    X:
      dimensions: n x p
      rows: OBSERVATIONS
      columns: FEATURES

  OBSERVATION_VECTOR:
    x_i := [x_i1, x_i2, ..., x_ip]^T

  CLUSTER_ASSIGNMENT:
    c_i in {1, 2, ..., K}

  PARTITION:
    C := {C_1, C_2, ..., C_K}

  REQUIRE_FOR_HARD_PARTITION:
    UNION[k=1..K] C_k := ALL_OBSERVATIONS

    FOR:
      j != k

    C_j INTERSECTION C_k := EMPTY

ENTITIES:
  OBSERVATION:
    type: DATA_ENTITY

  FEATURE:
    type: MEASURED_VARIABLE

  DATA_MATRIX:
    type: MATRIX

  CLUSTER:
    type: OBSERVATION_GROUP

  CLUSTER_LABEL:
    type: DERIVED_GROUP_IDENTIFIER

  CENTROID:
    type: CLUSTER_REPRESENTATIVE

  MEDOID:
    type: OBSERVED_CLUSTER_REPRESENTATIVE

  DISTANCE:
    type: DISSIMILARITY_MEASURE

  SIMILARITY:
    type: PROXIMITY_MEASURE

  DENDROGRAM:
    type: HIERARCHICAL_CLUSTER_REPRESENTATION

  LINKAGE:
    type: CLUSTER_DISTANCE_RULE

RELATIONSHIPS:
  CLUSTER_ANALYSIS
    -> OPERATES_ON
    -> MULTIVARIATE_DATA

  OBSERVATIONS
    -> DESCRIBED_BY
    -> FEATURES

  FEATURE_VALUES
    -> DEFINE
    -> OBSERVATION_VECTOR

  OBSERVATION_PAIR
    -> HAS
    -> DISTANCE_OR_SIMILARITY

  OBSERVATIONS
    -> ASSIGNED_TO
    -> CLUSTERS

  CLUSTER
    -> MAY_HAVE
    -> CENTROID

  CLUSTER
    -> MAY_HAVE
    -> MEDOID

  HIERARCHICAL_CLUSTERING
    -> PRODUCES
    -> DENDROGRAM

DISTANCE_MEASURES:
  EUCLIDEAN:
    d(x_i, x_j) :=
      sqrt(
        SUM[r=1..p]
          (x_ir - x_jr)^2
      )

  SQUARED_EUCLIDEAN:
    d2(x_i, x_j) :=
      SUM[r=1..p]
        (x_ir - x_jr)^2

  MANHATTAN:
    d_1(x_i, x_j) :=
      SUM[r=1..p]
        abs(x_ir - x_jr)

  MAHALANOBIS:
    d_M(x_i, x_j) :=
      sqrt(
        (x_i-x_j)^T
        Sigma^(-1)
        (x_i-x_j)
      )

  COSINE_DISSIMILARITY:
    d_cos(x_i, x_j) :=
      1
      -
      [
        x_i^T x_j
        /
        (||x_i|| ||x_j||)
      ]

  RULE:
    DISTANCE_CHOICE:
      MUST_MATCH:
        FEATURE_TYPES
        SCALE
        DOMAIN_MEANING

DATA_PREPARATION:
  CHECK:
    - MISSING_VALUES
    - OUTLIERS
    - FEATURE_TYPES
    - FEATURE_SCALE
    - REDUNDANT_FEATURES
    - HIGH_DIMENSIONALITY

  OPTIONAL:
    - IMPUTATION
    - CENTERING
    - STANDARDISATION
    - NORMALISATION
    - DIMENSIONALITY_REDUCTION
    - FEATURE_SELECTION

  CAUTION:
    SCALE:
      CAN_DOMINATE:
        DISTANCE_BASED_CLUSTERING

K_MEANS:
  type: PARTITIONAL_CLUSTERING

  GIVEN:
    NUMBER_OF_CLUSTERS := K

  CENTROID:
    mu_k :=
      (1 / |C_k|)
      * SUM[x_i in C_k] x_i

  OBJECTIVE:
    MINIMISE:
      J :=
        SUM[k=1..K]
          SUM[x_i in C_k]
            ||x_i - mu_k||^2

  ITERATION:
    INITIALISE_CENTROIDS
      -> ASSIGN_EACH_OBSERVATION_TO_NEAREST_CENTROID
      -> RECOMPUTE_CENTROIDS
      -> REPEAT_UNTIL_STOPPING_CONDITION

  PROPERTIES:
    - HARD_ASSIGNMENT
    - CENTROID_BASED
    - SENSITIVE_TO_INITIALISATION
    - SENSITIVE_TO_SCALE
    - SENSITIVE_TO_OUTLIERS

  CAUTION:
    OPTIMISATION:
      MAY_CONVERGE_TO:
        LOCAL_MINIMUM

  RESPONSE:
    USE:
      MULTIPLE_INITIALISATIONS
      OR:
      INFORMED_INITIALISATION

K_MEDOIDS:
  type: PARTITIONAL_CLUSTERING

  REPRESENTATIVE:
    MEDOID:
      ACTUAL_OBSERVATION

  advantage:
    MAY_BE_MORE_ROBUST_TO_OUTLIERS
    THAN:
      K_MEANS

  supports:
    GENERAL_DISSIMILARITY_MEASURES
    SUBJECT_TO:
      ALGORITHM

HIERARCHICAL_CLUSTERING:
  types:
    - AGGLOMERATIVE
    - DIVISIVE

  AGGLOMERATIVE:
    START:
      EACH_OBSERVATION_AS_OWN_CLUSTER

    REPEAT:
      MERGE_CLOSEST_CLUSTERS
      UNTIL:
        SINGLE_CLUSTER
        OR
        STOPPING_RULE

  DIVISIVE:
    START:
      ALL_OBSERVATIONS_IN_ONE_CLUSTER

    REPEAT:
      SPLIT_CLUSTERS
      UNTIL:
        DESIRED_STRUCTURE

  OUTPUT:
    DENDROGRAM

LINKAGE_METHODS:
  SINGLE_LINKAGE:
    cluster_distance :=
      MINIMUM_PAIRWISE_DISTANCE

  COMPLETE_LINKAGE:
    cluster_distance :=
      MAXIMUM_PAIRWISE_DISTANCE

  AVERAGE_LINKAGE:
    cluster_distance :=
      AVERAGE_PAIRWISE_DISTANCE

  WARD_METHOD:
    merge_choice:
      MINIMISE_INCREASE_IN
      WITHIN_CLUSTER_SUM_OF_SQUARES

  CAUTION:
    DIFFERENT_LINKAGES:
      MAY_PRODUCE:
        DIFFERENT_CLUSTER_STRUCTURES

MODEL_BASED_CLUSTERING:
  concept:
    DATA_GENERATED_FROM:
      MIXTURE_OF_PROBABILITY_DISTRIBUTIONS

  common_model:
    GAUSSIAN_MIXTURE_MODEL

  mixture_density:
    p(x) :=
      SUM[k=1..K]
        pi_k p(x | theta_k)

  require:
    pi_k >= 0
    SUM[k=1..K] pi_k = 1

  inference:
    ESTIMATE:
      MIXTURE_WEIGHTS
      COMPONENT_PARAMETERS
      POSTERIOR_CLUSTER_PROBABILITIES

  assignment:
    MAY_BE:
      HARD
      OR:
      PROBABILISTIC

GAUSSIAN_MIXTURE_MODEL:
  alias: GMM

  component:
    p(x | k) :=
      N(x | mu_k, Sigma_k)

  estimation:
    COMMONLY:
      EXPECTATION_MAXIMISATION

  posterior_membership:
    P(k | x)
      proportional_to
    pi_k * N(x | mu_k, Sigma_k)

DENSITY_BASED_CLUSTERING:
  concept:
    CLUSTERS:
      DENSE_REGIONS
    SEPARATED_BY:
      LOWER_DENSITY_REGIONS

  example:
    DBSCAN

  DBSCAN:
    parameters:
      epsilon := NEIGHBOURHOOD_RADIUS
      min_samples := MINIMUM_LOCAL_DENSITY_REQUIREMENT

    identifies:
      - CORE_POINTS
      - BORDER_POINTS
      - NOISE_POINTS

    advantage:
      DOES_NOT_REQUIRE:
        K_IN_ADVANCE

    supports:
      NON_SPHERICAL_CLUSTER_SHAPES

FUZZY_CLUSTERING:
  concept:
    OBSERVATION:
      MAY_HAVE:
        DEGREE_OF_MEMBERSHIP
      IN:
        MULTIPLE_CLUSTERS

  membership:
    u_ik in [0,1]

  common_method:
    FUZZY_C_MEANS

  distinction:
    FUZZY_MEMBERSHIP
      !=
    HARD_CLUSTER_ASSIGNMENT

NUMBER_OF_CLUSTERS:
  methods:
    - DOMAIN_KNOWLEDGE
    - ELBOW_METHOD
    - SILHOUETTE_ANALYSIS
    - GAP_STATISTIC
    - INFORMATION_CRITERIA_FOR_MODEL_BASED_CLUSTERING
    - DENDROGRAM_INSPECTION

  RULE:
    NO_SINGLE_METHOD:
      PROVIDES:
        UNIVERSALLY_CORRECT_CLUSTER_COUNT

SILHOUETTE:
  FOR_OBSERVATION_i:
    a_i :=
      AVERAGE_DISTANCE_TO_OWN_CLUSTER

    b_i :=
      MINIMUM_AVERAGE_DISTANCE_TO_OTHER_CLUSTER

    s_i :=
      (b_i - a_i)
      /
      max(a_i, b_i)

  range:
    -1 <= s_i <= 1

  interpretation:
    HIGHER_VALUES:
      GENERALLY_INDICATE:
        BETTER_WITHIN_CLUSTER_COHESION
        RELATIVE_TO:
          NEAREST_OTHER_CLUSTER

CLUSTER_VALIDATION:
  INTERNAL:
    evaluates:
      STRUCTURE_USING_DATA_AND_ASSIGNMENTS

    examples:
      - SILHOUETTE_SCORE
      - WITHIN_CLUSTER_SUM_OF_SQUARES
      - DAVIES_BOULDIN_INDEX
      - CALINSKI_HARABASZ_INDEX

  EXTERNAL:
    requires:
      REFERENCE_LABELS

    examples:
      - ADJUSTED_RAND_INDEX
      - NORMALISED_MUTUAL_INFORMATION

  STABILITY:
    evaluates:
      ROBUSTNESS_OF_CLUSTER_STRUCTURE
      UNDER:
        RESAMPLING
        PERTURBATION
        INITIALISATION_CHANGES

CLUSTER_INTERPRETATION:
  FOR_EACH_CLUSTER:
    ANALYSE:
      - SIZE
      - CENTRE_OR_MEDOID
      - FEATURE_DISTRIBUTIONS
      - WITHIN_CLUSTER_VARIABILITY
      - DISTANCE_TO_OTHER_CLUSTERS

  REQUIRE:
    DOMAIN_INTERPRETATION

  CAUTION:
    ALGORITHM_OUTPUT:
      DOES_NOT_AUTOMATICALLY_ESTABLISH:
        NATURAL_OR_CAUSAL_GROUPS

OUTLIERS_AND_NOISE:
  OUTLIERS:
    MAY:
      DISTORT_CENTROIDS
      ALTER_DISTANCES
      FORM_SMALL_ARTIFICIAL_CLUSTERS

  DENSITY_BASED_METHODS:
    MAY:
      LABEL_LOW_DENSITY_POINTS
      AS:
        NOISE

  RULE:
    OUTLIER_HANDLING:
      MUST_BE_EXPLICIT

HIGH_DIMENSIONAL_CONTEXT:
  ISSUE:
    DISTANCE_CONCENTRATION
    AND:
    SPARSE_DATA_GEOMETRY

  consequences:
    - REDUCED_DISTANCE_DISCRIMINATION
    - UNSTABLE_CLUSTERS
    - INCREASED_NOISE_SENSITIVITY

  responses:
    - FEATURE_SELECTION
    - PCA
    - REGULARISATION
    - DOMAIN_DRIVEN_REPRESENTATION
    - SUBSPACE_CLUSTERING

APPLICATIONS:
  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> CUSTOMER_SEGMENTATION

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> PATTERN_DISCOVERY

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> BIOINFORMATICS

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> IMAGE_ANALYSIS

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> DOCUMENT_GROUPING

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> ANOMALY_EXPLORATION

  CLUSTER_ANALYSIS
    -> SUPPORTS
    -> SCIENTIFIC_CLASSIFICATION

MODEL_CONNECTIONS:
  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> MULTIVARIATE_STATISTICS

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> DISTANCE_METRICS

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> UNSUPERVISED_LEARNING

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> PRINCIPAL_COMPONENT_ANALYSIS

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> MIXTURE_MODELS

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> MACHINE_LEARNING

  CLUSTER_ANALYSIS
    -> CONNECTS_TO
    -> DATA_MINING

SEMANTIC_EQUIVALENCE:
  "cluster analysis"
    ~= "clustering"

  "cluster"
    ~= "derived group of similar observations"

  "centroid"
    ~= "mean vector of a cluster"
    IN:
      CENTROID_BASED_CONTEXT

  "hierarchical clustering"
    ~= "nested cluster construction"

  EXCLUDE_EQUIVALENCE:
    CLUSTERING != SUPERVISED_CLASSIFICATION
    CLUSTER_LABEL != KNOWN_CLASS_LABEL
    CLUSTER != CAUSAL_CATEGORY
    CENTROID != MEDOID
    SIMILARITY != IDENTITY

VALIDATION_RULES:
  RULE_1:
    DISTANCE_OR_SIMILARITY:
      MUST_BE:
        APPROPRIATE_FOR_FEATURE_TYPES

  RULE_2:
    FEATURE_SCALING:
      MUST_BE:
        ASSESSED
      BEFORE:
        DISTANCE_BASED_CLUSTERING

  RULE_3:
    K_MEANS:
      REQUIRES:
        NUMERIC_GEOMETRIC_REPRESENTATION
      AND:
        MEANINGFUL_CENTROID_DISTANCE

  RULE_4:
    CLUSTER_COUNT:
      MUST_NOT_BE_ASSUMED:
        UNIVERSALLY_CORRECT
      FROM:
        SINGLE_HEURISTIC

  RULE_5:
    RANDOM_INITIALISATION:
      SHOULD_BE:
        CONTROLLED_OR_REPEATED
      WHEN:
        ALGORITHM_IS_INITIALISATION_SENSITIVE

  RULE_6:
    CLUSTER_VALIDATION:
      SHOULD_INCLUDE:
        STABILITY
        AND_OR
        INTERNAL_OR_EXTERNAL_CRITERIA

  RULE_7:
    CLUSTER_INTERPRETATION:
      MUST_NOT_INFER:
        CAUSATION
        OR:
        NATURAL_KIND_STATUS
      FROM:
        ALGORITHM_OUTPUT_ALONE

CONFIDENCE:
  ontology_identity: 0.99
  clustering_definition: 0.99
  k_means_structure: 0.99
  hierarchical_structure: 0.99
  model_based_structure: 0.98
  validation_structure: 0.98
  semantic_distinctions: 0.99

UPDATE_MODEL:
  IF:
    NEW_OBSERVATIONS_ARRIVE

  THEN:
    UPDATE:
      DATA_MATRIX

    OPTIONAL_RECOMPUTE:
      DISTANCE_MATRIX
      CLUSTER_ASSIGNMENTS
      CENTROIDS
      MEDOIDS
      VALIDATION_METRICS

  IF:
    NEW_FEATURES_ARRIVE

  THEN:
    EXPAND:
      FEATURE_SPACE

    REASSESS:
      SCALING
      DISTANCE_METRIC
      DIMENSIONALITY
      CLUSTER_STABILITY

  IF:
    CLUSTERING_PARAMETERS_CHANGE

  THEN:
    RECOMPUTE:
      CLUSTER_MODEL

    REVALIDATE:
      CLUSTER_COUNT
      STABILITY
      INTERPRETABILITY

  PRESERVE:
    OBSERVATION_IDENTITIES
    FEATURE_IDENTITIES
    FEATURE_UNITS
    SCALING_METHOD
    DISTANCE_METRIC
    ALGORITHM_PARAMETERS
    RANDOM_SEED_WHEN_RECORDED
    DATA_PROVENANCE

AI_CONSUMPTION:
  parse_as: FORMAL_SEMANTIC_SPECIFICATION
  execution_mode: RECURSIVE_REASONING

  preferred_reasoning_order:
    - IDENTIFY_OBSERVATIONS
    - IDENTIFY_FEATURES
    - VALIDATE_DATA_TYPES
    - CHECK_MISSING_VALUES_AND_OUTLIERS
    - ASSESS_FEATURE_SCALING
    - SELECT_DISTANCE_OR_SIMILARITY
    - SELECT_CLUSTERING_FAMILY
    - SELECT_OR_ESTIMATE_CLUSTER_COUNT_IF_REQUIRED
    - FIT_CLUSTER_MODEL
    - VALIDATE_CLUSTER_STRUCTURE
    - ASSESS_STABILITY
    - CHARACTERISE_CLUSTERS
    - RETURN_CLUSTER_ASSIGNMENTS_AND_LIMITATIONS

  constraints:
    - DO_NOT_TREAT_CLUSTER_LABELS_AS_GROUND_TRUTH_CLASSES
    - DO_NOT_INFER_CAUSATION_FROM_CLUSTER_MEMBERSHIP
    - EXPOSE_DISTANCE_METRIC
    - EXPOSE_SCALING_METHOD
    - EXPOSE_CLUSTER_COUNT_DECISION
    - ACCOUNT_FOR_INITIALISATION_SENSITIVITY
    - VALIDATE_CLUSTER_STABILITY

FLOW_HASH:
  canonical_entity: "cluster-analysis"
  namespace: "probability-statistics/multivariate-statistics"
  version: "4.0"
  identity_basis:
    - PAGE_URL
    - CANONICAL_ENTITY
    - ENTITY_TYPE
    - DISTANCE_OR_SIMILARITY_STRUCTURE
    - CLUSTER_ASSIGNMENT
    - UNSUPERVISED_GROUP_STRUCTURE

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ