My principal research interests lie in developing numerical algorithms that bridge the divide between optimization and machine learning. See the sections below for details.
Optimization in Aviation
Optimization in the commercial aviation sector. For example, consider the airline sector which is a low-margin business with high fixed costs, namely operating the aircraft themselves.
It is therefore of great importance for an airline to maximize passenger capacity on its network, a process known as revenue management
Studies have shown that effective revenue management can increase airline revenues by up to 7%, which in today's challenging environment can be the difference between making a profit as opposed to a loss.
There has been a great deal of research on optimization techniques for revenue management, however the majority of existing work focuses on full-service airlines and their largely outdated capacity allocation models based on customer segmentation.
As a result, there is an urgent need for more sophisticated optimization strategies in revenue management that do not rely on customer segmentation.
Exploratory Data Analysis
Statistical pattern mining algorithms for exploratory data analysis.
The problem of pattern mining, that is extracting interesting patterns from data, has traditionally been formulated as
finding the most frequent
patterns in a dataset. However, more recent approaches
seek to mine those patterns that are considered statistically the most interesting
In particular, see our novel probabilistic models for mining interesting itemsets
) and mining interesting sequential patterns
). See the video below for a brief overview:
Machine Learning for Source Code
Machine learning techniques for the analysis of program source code.
Source code has a very well-defined structure making it amenable to machine learning techiniques once suitably adapted. This leads to exciting and novel
applications, for example, see our live demo of source code summarization using autofolding
based on our paper
and associated implementation (see video below)
One can also apply statistical pattern mining techniques to source code, for example, in order to mine sequences of API calls, as we have done in our latest
Algorithms for the global optimization of functions that are expensive to evaluate.
Such functions need to be approximated using a cheap to evaluate surrogate which can
be iteratively optimized and updated in place of the underlying expensive function.
See our paper
for a general surrogate optimization algorithm and
follow up paper
for an implementation
with improved bounds.