pythonstatisticscausalitygolem

Why likelihood decreasing for GOLEM algorithm


I was applying the GOLEM algorithm for casual inference using python but for some reason over iterations, my likelihood score is decreasing. Why does this happen?

I have a pretty large dataset with 310127104 rows. I can't perform that because this method is improper for this particular task?

The output looks like this:

[2022-06-28 19:18:02,137][golem.py - line 204] - INFO - Started training for 1200 iterations.
[2022-06-28 19:18:04,794][golem.py - line 217] - INFO - [Iter 0] score=142.987, likelihood=142.987, h=0.0e+00
[2022-06-28 20:46:41,095][golem.py - line 217] - INFO - [Iter 100] score=141.733, likelihood=141.655, h=9.5e-04
[2022-06-28 22:07:21,093][golem.py - line 217] - INFO - [Iter 200] score=140.727, likelihood=140.475, h=2.0e-02
[2022-06-28 23:27:34,371][golem.py - line 217] - INFO - [Iter 300] score=139.868, likelihood=139.517, h=3.2e-02
[2022-06-29 00:48:43,334][golem.py - line 217] - INFO - [Iter 400] score=138.987, likelihood=138.560, h=4.0e-02
[2022-06-29 02:06:52,349][golem.py - line 217] - INFO - [Iter 500] score=137.903, likelihood=137.324, h=4.9e-02
[2022-06-29 03:28:45,860][golem.py - line 217] - INFO - [Iter 600] score=136.425, likelihood=135.597, h=7.0e-02
[2022-06-29 04:53:14,669][golem.py - line 217] - INFO - [Iter 700] score=135.297, likelihood=134.317, h=8.3e-02
[2022-06-29 06:19:03,769][golem.py - line 217] - INFO - [Iter 800] score=134.337, likelihood=133.297, h=8.3e-02

Thank you in advance!


Solution

  • I'll go ahead and assume you are refering to the "GOLEM" causal structure learning algorithm from Ignavier et al. 2020.

    In their optimization, they minimize a loss consisting of the negative log-likelihood and additional penalty terms (see e.g. equation 3). It is common practice in constraint optimization to use a loss (which has to be minimized) rather than a score which would have to be maximized. This is mostly for reasons of convention and consistency. For GOLEM, you can see this in the official implementation in line 85. It seems therefore that your model is training as intended (the words "score" and "likelihood" in the output may just be a little imprecise).

    Note of Caution:

    Given that you may be running GOLEM on real-world data, it could be important for you to consider that the excellent empirical results of GOLEM (and a range of similar algorithms) appear to be due to patterns in the benchmarks and likely do not translate to the real-world as shown in Reisach el al. 2021.