My Research

I am enthusiastic about
research; it's one of my favourite ways to spend my time. I particularly
enjoy trying to frame existing problems in new ways (e.g., more than
trying to solve open problems specified by others), and am most
satisfied when a single project can run the whole spectrum from
theoretical rigor to practical realization as working software. My
desire to craft new problem formulations draws me to interdisciplinary
approaches; some of my favourite papers draw together theoretical tools
from different disciplines. I favour collaborations, and hence have
worked widely with colleagues and both graduate and undergraduate students. (Thus, nearly all the work
described below involves collaborators; when discussing specific papers
I use the first person plural to emphasize their contributions. Please see
my publications page for details.)
Overall, I have coauthored about 70 peer reviewed technical articles,
five book chapters and two books. One of these books has become a
standard text in its area; two years after publication, it is now in its
second printing, and the free online PDF has been downloaded by about
20,000 people from 150 countries.I conduct research in
two distinct areas:

*algorithmic game theory*and

*empirical algorithmics and machine learning*. In what follows, I describe each area, and summarize some of my most significant contributions.

Game-theoretic environments are those in which two or more agents interact, and agents' desires cannot be relied upon to coincide. Examples include the housing market, a game of poker, a morning commute, and the United Nations. Lately, computers have started to feature in such environments too: large-scale distributed systems like the internet are becoming ubiquitous, and in such systems users cannot simply be trusted to behave responsibly. At the same time, there is a recent trend for markets to move online and to become more complex, in the process encountering computational obstacles. For both of these reasons, game theory has moved in the last decade from being the province of theoretical microeconomists (along with a smattering of political scientists, psychologists, operations researchers and philosophers) to being a major research area in computer science.

Here's the video of a recent talk in which I discuss my research in this area.

My work in game theory can be
grouped into two main lines of inquiry. First, I investigate
the design of protocols with desirable properties. When
applied to the problem of resource allocation, such protocols are termed
*auctions*. With my collaborators, I was among the first to
investigate the computational problem of determining the winners of
combinatorial auctions—a complex auction
type in which bidders can request indivisible bundles of goods, of
substantial interest for the allocation of radio spectrum. We proposed
two novel algorithms and designed a test suite that has become a de
facto standard. Separately, we have shown how bidders can compensate for
"hidden bids" in online markets such as eBay. In theoretical work, we
have proven that virtually all dominant-strategy combinatorial auctions
can improve revenue by denying participation to certain bidders,
constructed a novel protocol for collusion in single-good auctions, and
shown how bidders' uncertainty about their own valuations impacts their
bidding behaviour. Beyond auctions, we have considered how incentives
can be used to obtain good system behaviour in computer networks. Most
significantly, we wrote what I believe was the first paper demonstrating
the usefulness of game theory for analyzing P2P file-sharing systems.

Second, researchers have long been interested in answering game-theoretic questions computationally. However, naive representations of simultaneous-move games scale exponentially in the number of players, and previously-existing compact game representations do no better than the naive approach for many game theoretic settings of interest. We proposed a novel game representation and gave an algorithm that provides provably-exponential speedups to equilibrium finding algorithms. We also leveraged this representation to provide the first quantitative, equilibrium-based comparisons between Google and Yahoo's auction designs.

Despite substantial progress in game theory research over the last decade, significant gaps still exist between theory and practice. For example, game-theoretic models are typically very small and built on the assumptions that agents are omniscient and utility-maximizing. Even if such an agent did exist, most current theories would not tell her how to reason about more limited competitors. Approaches to resource allocation usually assume that goods for sale cannot be resold and are unique, that agents face no transaction costs or budgets, that markets can be redesigned without any constraints, and that agents know their valuations for the goods being allocated. My current research on multiagent systems focuses on developing new theoretical approaches to better model such practical settings. For example, I've recently initiated a research project that aims to build computational models of real human behaviour in strategic situations, starting with existing models from the "behavioural economics" literature in economics and cognitive psychology, and extending and evaluating them using techniques from machine learning and statistics.

Empirical Algorithmics and Machine Learning

Sophisticated computer systems are
becoming integrated into almost every aspect of human life. Examples
include the operation of the stock market, decisions about where to open
new hospitals or where police should patrol, the design and testing of
drugs and airplanes, the creation of movies and works of art, and the
optimization of power usage in a smart building or a hybrid car. In each
case, the quality of the results depends on complex *algorithms*
created by computer scientists and engineers. It is therefore important
to analyze algorithms' behaviour to understand how effective they will
be in novel situations. The formal description of an algorithm and its
practical realization are one and the same—i.e.,
algorithms are their own models. Hence, the main school of thought holds
that they are most appropriately analyzed theoretically. However, when
faced with large, real-world problems, it is often the case that
cutting-edge algorithms' behaviour defies closed-form analysis beyond
trivial, exponential worst-case running time bounds. Such algorithms
nevertheless often exhibit excellent performance in applications, and
hence are widely used. I therefore believe that theoretical analysis of
algorithms should be supplemented using the same empirical and
statistical approaches that are used to study natural phenomena.

To give one example, I've pioneered the idea of using machine learning
techniques to model an algorithm's empirical runtime variation. My
collaborators and I have focused on building *empirical hardness
models*: statistical models that can predict the amount of time a
given algorithm will take to solve a given problem instance. We've shown
that such models can reliably make very accurate predictions of
algorithm runtime on novel problem instances, and can be analyzed to
explain runtime variability. These models can also be applied to the
construction of algorithm portfolios by selecting the best among a set
of algorithms on a per-instance basis. Notably, one such portfolio we
designed ("SATzilla")
performed outstandingly well at the past two
International SAT Competitions,
winning medals in five out of nine categories each time. The paper
describing SATzilla was also recognized as the
best paper published in the
Journal of Artificial Intelligence Research over the previous five
years.

SATzilla can be understood as a *meta-algorithm*—an
algorithm that takes other algorithms, rather than just data, as its
input. Meta-algorithms are an appealing idea because they offer the
prospect of problem-independent, automatic methods for improving the
performance of arbitrary algorithms; they are hence the focus of my
current research. One fundamental problem is the configuration of
algorithms with high-dimensional parameter spaces. Indeed, when this
parameter space is specified broadly enough, *algorithm configuration*
becomes another way of thinking about *algorithm design*. My
collaborators and I have built the world's most effective algorithm
configurator, a local search algorithm called
ParamILS.
We are now working to rival ParamILS' performance through an alternate
approach based on response-surface models from statistics; this work has
already yielded two best paper awards. We have also recently worked to
combine algorithm configuration with algorithm portfolios, developing a
method for automatically building a set of uncorrelated algorithms and a
method for choosing between them, starting with just a single highly
parameterized algorithm.