GES with the BIC score or generalized score

Algorithm Introduction

Greedy Equivalence Search (GES) algorithm with BIC score 1 and generalized score 2.


from import ges
Record = ges(X, score_func, maxP, parameters)


X: numpy.ndarray, shape (n_samples, n_features). Data, where n_samples is the number of samples and n_features is the number of features.

score_func: The score function you would like to use, including (see score_functions.).

maxP: Allowed maximum number of parents when searching the graph.

parameters: when using CV likelihood,
  • parameters[‘kfold’]: k-fold cross validation.

  • parameters[‘lambda’]: regularization parameter.

  • parameters[‘dlabel’]: for variables with multi-dimensions, indicate which dimensions belong to the i-th variable.


  • Record[‘G’]: learned causal graph.

  • Record[‘update1’]: each update (Insert operator) in the forward step.

  • Record[‘update2’]: each update (Delete operator) in the backward step.

  • Record[‘G_step1’]: learned graph at each step in the forward step.

  • Record[‘G_step2’]: learned graph at each step in the backward step.

  • Record[‘score’]: the score of the learned graph.


Chickering, D. M. (2002). Optimal structure identification with greedy search. Journal of machine learning research, 3(Nov), 507-554.


Huang, B., Zhang, K., Lin, Y., Schölkopf, B., & Glymour, C. (2018, July). Generalized score functions for causal discovery. In Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (pp. 1551-1560).


Schwarz, G. (1978). Estimating the dimension of a model. The annals of statistics, 461-464.


Buntine, W. (1991). Theory refinement on Bayesian networks. In Uncertainty proceedings 1991 (pp. 52-60). Morgan Kaufmann.