Probabilistically predicting the output of an algorithm

39 Views Asked by At

I have an (optimization) algorithm that, on every iteration, outputs an integer number. Output is non-increasing; plotting the output wrt. cycle index shows that the relation from output to cycles looks roughly like the right hand of an hyperbola (or inverse exponential) that tends towards some optimal value $b$. I.e., if $x$ it the cycle index and $y$ the output number, a "fitting curve" could be either:

$y = a·x^{-k} + b$

or

$y = e^{a-kx} + b$

for some constants $a$, $k$ and $b$. Note that $x$ cannot be negative and for all that matters, $y$ can be considered undefined for $x=0$.

What I want is to be able to predict in the early iterations, what the value of $b$ will be, together with some probability. For example, at the $x$th iteration, I want to be able to ask "what is the probability that $b$ is less than 100?" I expect the answer to be very imprecise during the first iterations (i.e., will give very high probabilities for any query), and tends towards extreme answers (either 0 or 1) when $x$ tends towards infinity.

At first sight (under the hypothesis that the inverse exponential model is correct), it looks like computing an exponential regression. However, exponential regression models that I found usually consider that there is no such thing as a $b$ constant, and I have never found the way to compute a probability from a regression.

I have taken probability, statistics and numerical analysis courses years ago, but I have never heard of such a tool. Is this standard matter?

Here is an excerpt of my data:

cycle output
    1    552
    2    532
    3    513
    4    492
    5    480
    6    451
    7    420
    8    405
    9    383
   10    365
       …
   32    176
   33    176
   34    175
   35    171
   36    171
       …
  536    171
  537    167
  538    154
  539    154
       …
 2135    154
 2136    151
 2137    146
       …
 3000    146