Zgli: A Pipeline for Clustering by Compression with Application to Patient Stratification in Spondyloarthritis

Sensors (Basel). 2023 Jan 20;23(3):1219. doi: 10.3390/s23031219.

Abstract

The normalized compression distance (NCD) is a similarity measure between a pair of finite objects based on compression. Clustering methods usually use distances (e.g., Euclidean distance, Manhattan distance) to measure the similarity between objects. The NCD is yet another distance with particular characteristics that can be used to build the starting distance matrix for methods such as hierarchical clustering or K-medoids. In this work, we propose Zgli, a novel Python module that enables the user to compute the NCD between files inside a given folder. Inspired by the CompLearn Linux command line tool, this module iterates on it by providing new text file compressors, a new compression-by-column option for tabular data, such as CSV files, and an encoder for small files made up of categorical data. Our results demonstrate that compression by column can yield better results than previous methods in the literature when clustering tabular data. Additionally, the categorical encoder shows that it can augment categorical data, allowing the use of the NCD for new data types. One of the advantages is that using this new feature does not require knowledge or context of the data. Furthermore, the fact that the new proposed module is written in Python, one of the most popular programming languages for machine learning, potentiates its use by developers to tackle problems with a new approach based on compression. This pipeline was tested in clinical data and proved a promising computational strategy by providing patient stratification via clusters aiding in precision medicine.

Keywords: CompLearn; Kolmogorov complexity; Zgli; clustering by compression; clustering techniques; normalized compression distance.

MeSH terms

  • Algorithms
  • Cluster Analysis
  • Data Compression* / methods
  • Humans
  • Noncommunicable Diseases*
  • Spondylarthritis*