Interpretable Non-linear Survival Analysis with Evolutionary Symbolic Regression

Luigi Rovito, Marco Virgolin
4/8/2025
cs.LGcs.NE

Official code: lurovi/SurvivalMultiTree-pyNSGP (2 stars, MIT, last commit 2025-11-18).

Abstract

Survival Regression (SuR) is a key technique for modeling time to event in important applications such as clinical trials and semiconductor manufacturing. Currently, SuR algorithms belong to one of three classes: non-linear black-box -- allowing adaptability to many datasets but offering limited interpretability (e.g., tree ensembles); linear glass-box -- being easier to interpret but limited to modeling only linear interactions (e.g., Cox proportional hazards); and non-linear glass-box -- allowing adaptability and interpretability, but empirically found to have several limitations (e.g., explainable boosting machines, survival trees). In this work, we investigate whether Symbolic Regression (SR), i.e., the automated search of mathematical expressions from data, can lead to non-linear glass-box survival models that are interpretable and accurate. We propose an evolutionary, multi-objective, and multi-expression implementation of SR adapted to SuR. Our empirical results on five real-world datasets show that SR consistently outperforms traditional glass-box methods for SuR in terms of accuracy per number of dimensions in the model, while exhibiting comparable accuracy with black-box methods. Furthermore, we offer qualitative examples to assess the interpretability potential of SR models for SuR. Code at: https://github.com/lurovi/SurvivalMultiTree-pyNSGP.

View on arXivView PDF

Code Implementations(1)

MIT

Multi-objective Genetic Programming by NSGA-II in Python with Multi-Tree Individuals for Survival Regression

21Shell, PythonOct 22, 202411 months agoMIT

Similar Papers

Cite this paper

@article{rovito2025interpretable,
  title  = {Interpretable Non-linear Survival Analysis with Evolutionary Symbolic Regression},
  author = {Luigi Rovito and Marco Virgolin},
  year   = {2025},
  eprint = {2504.05756},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2504.05756v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2504.05756.svg)](https://codeofpaper.com/paper/2504.05756)

Discussion