My major research interests include evolutionary algorithms, co-evolution, evolvable hardware, evolutionary artificial neural networks, evolutionary learning, evolutionary games, neural network ensembles, analysis of evolutionary algorithms, global optimisation, and data mining.
This link leads you to my presentation on 28 April 2010, summarising my research areas and three selected project areas. Most of the following are also possible as projects.
The following is a partial list of potential projects for third-year and MSc students. I am happy to supervise other projects proposed by our industrial collaborators. (Although that list was prepared for MSc in NC students, the projects are appropriate for other MSc and third year students.)
I also have another page on my research interests and projects, which is designed more towards research MSc and PhD students. You are welcome to browse it. You might find an interesting project there.
Data mining can be regarded as the process of discovering useful and interesting knowledge from large databases. One typical task in data mining is to discover interesting patterns where "interestingness" is not specified exactly. For example, one might like to discover frauds in an insurance database or buying patterns in an supermarket database. However, we don't really know all the possible frauds and interesting patterns (or else we would search for them). On the other hand, given some patterns or examples, a human expert usually knows whether they are interesting or not (from his point of view of course). This project aims at developing an interactive system that helps a domain expert to discover interesting patterns in a database. The system will show the expert some interesting examples based on the expert's initial (vague) guess and keep refining its internal representation of interestingness according to the expert's feedback. The expert's feedback is just a ranking of examples from high to low interestingness. This is much less demanding for the expert than asking him/her to tell the computer exactly what he/she wants.
Note: A large part of this project involves software development. You must be competent in C/C++/Java under UNIX/Solaris. You will need to learn basics of evolutionary algorithms, to implement an evolutionary algorithm, and to design and develop a good user interface.
Designing a complex monolithic system which contains everything can be very difficult. Machine learning systems are no exception. Trying to design a single neural network to solve a complex problem is hard. A better approach is divide-and-conquer, i.e., divide a complex problem into several simpler components, solve them individually and integrate the sub-solutions into the final complete solution. This works fine when you know how to divide a problem into several components. What if you don't? We can use a learning algorithm to learn to decompose a problem into several components automatically and solve them. Negative correlation learning is such an algorithm for designing neural network ensembles where each neural network in the ensemble does slightly different things. The whole ensemble, which consists of many individual neural networks, solves a problem collectively. After all, two heads are better than one. Why not more heads?
Note: The aim of this project is to develop a software package for the negative correlation learning algorithm so that it can be used by non-expert. The emphasis will be on the ease to use and efficiency of the algorithm. A good user interface for easy importing training data and visualising output networks is essential. You must be very competent in C/C++/Java under UNIX/Solaris. You also need to know neural networks.
The motivation of this project is similar to the previous one, i.e., how to solve a complex problem with less effort. Of course we should break it down and solve it piece by piece. However, we don't really don't how to break a problem down into pieces for most real world problems. That's why they are so difficult. This project investigates various speciation and niching techniques in the field of evolutionary computation and applies these techniques to designing machine learning systems (e.g., neural networks or rule-based systems). The idea is to evolve a population of species each of which is specialised toward solving certain parts of a complex problem. Collectively, the whole population solve the entire problem. The main task of this project is to implement a system which evolves a group of neural networks using evolutionary algorithms with speciation and niching.
Note:Programming in C/C++/Java under UNIX/Solaris is required. You will need to learn various artificial speciation and niching methods.
This project has a clear emphasis on experimental studies. You will be given one or two time series data sets. Then you are expected to pre-process the data, partition the data into training anf testing parts, and train a neural network ensemble to learn from the data. The training algorithm will be negative correlation learning.
Note:Programming in C/C++/Java under UNIX/Solaris is essential. Some mathematical and statistical background would be useful although not essential.
Evolutionary algorithms are good at global sampling but not fine-tuned local search in general. This project investigates various ways to combining an evolutionary algorithm (e.g., a genetic algorithm) with a local search algorithm (e.g., Brent's algorithm). The problems used will be a set of benchmark functions.
Note:Programming in C/C++/Java under UNIX/Solaris is essential. A mathematically trained brain would help although I don't use much mathematics. Your implementation should be useable by non-experts (i.e., people do not know evolutionary algorithms).
This project requires the implementation of a number of evolutionary algorithms under Windows. User interface is a key part of this project. The software package will contain a number of programmed benchmark functions. It should also allow a user to enter his/her own function to be optimised.
Note:Programming in Java, Visual Basic or Visual C/C++ under Windows is essential. The package is to be used by non-experts. Potential extension by adding an interface to Excel should be considered. You need to know evolutionary algorithms.
Some jokes have styles (patterns). Different people find different jokes to be more interesting than others. The idea of this project is to use interactive evolution to generate short jokes. The project may touch on case-based reasoning or analogical reasoning. But the emphasis is on interactive evolution.
Professor Xin Yao
School of Computer Science
The University of Birmingham
Edgbaston, Birmingham B15 2TT
U.K.
Phone: +44 121 414 3747
Fax: +44 121 414 4281
Email: x.yao@cs.bham.ac.uk