Hi! My name is Reuben Fletcher-Costin. I ply my trade as a software engineer, with experience applying mathematical modelling and combinatorial optimisation algorithms to help make better decisions.
I am interested in probabilistic modelling and Bayesian inference.
Open source: hmmlearn -- fix multi-sequence fit for Gaussian mixture model hidden Markov model (pull-request).
Prototype: hmmmix implements a MAP inference algorithm for mixtures of hidden Markov models. By framing the MAP inference problem as a joint maximisation over the models participating in the mixture, their hidden states, and their contributions to the observed variables, we can formulate the maximisation problem as an exact set cover problem in exponentially many decision variables. The exact set cover problem can be approximated by a linear relaxation, and we can apply column-generation to efficiently search the exponentially large implicit search space. The algorithm iteratively solves a relaxed set cover problem in a reduced number of variables, recovers the optimal dual solution, then uses the dual solution to set "prizes" for a Viterbi-like dynamic programming algorithm to search for a MAP estimate of a hidden Markov model to add into the mixture that can improve the global objective function during the next iteration.
Prototype: hphmm considers a discrete hidden Markov model for event counts with additive Poisson noise. When the rate of the Poisson noise is unknown, exactly computing the posterior distribution requires an amount of memory and compute that grows proportionally with the total number of observed events. If we assume the conditional posterior distribution for the unknown noise rate given the state can be approximated as a Gamma distribution, we can prevent the number of parameters from blowing up by fitting a Gamma distribution to minimise the approximation error -- in the sense of KL-divergence -- each time step. This approximation scheme is compared with a much simpler grid approximation scheme where the noise rate is discretised.
Open source: scikit-learn -- improve performance of ridge regression generalised cross-validation (pull-request).
Hobby project: abfc, a compiler for the esoteric brainfuck programming language, implemented in brainfuck; abfc_hs, a parser and compiler for a macro language used to express above brainfuck compiler.
If you'd like to get in touch, you are welcome to email me at reuben.fletchercostin@gmail.com.