About Me

My name is Edwin Onuonga. I was born in Nairobi, Kenya and shortly moved to Dubai, United Arab Emirates where I grew up. After my A-Levels, I decided to go and study in Edinburgh, United Kingdom (at The School of Informatics, University of Edinburgh) where I chose to do a degree in Computer Science!

It's hard to say exactly when and how I became interested in computer science, but it was likely during my A-Levels where I developed a strong interest in mathematics. I found many of the areas of mathematics simply amazing, but began to wonder how they can be used to interact with, manipulate and uncover meaning from data. This ultimately led me to pursue the path of Computer Science, and even more specifically, data science and machine learning.

Contact Details

Edwin Onuonga
Edinburgh
United Kingdom
[email protected]

Education

School of Mathematics, University of Edinburgh

MSc Statistics with Data Science 2020 - Current

Courses:

  • Bayesian Theory
  • Bayesian Data Analysis
  • Statistical Methodology
  • Incomplete Data Analysis
  • Stochastic Modelling
  • Fundamentals of Optimization
  • Large Scale Optimization for Data Science
  • Probabilistic Modelling and Reasoning

School of Informatics, University of Edinburgh

BSc Computer Science (1st class, Honours) 2016 - 2020

Research project:

Automatic detection and classification of human head gestures
(Supervised by Dr. Hiroshi Shimodaira)

Click here to view the abstract.

Head gestures are a simple, yet expressive form of human-to-human interaction, used as a medium for conveying ideas and emotions. Despite their simplicity as a form of communication, the accurate modelling and recognition of human head gestures has posed many challenges and provided many opportunities for machine learning research. The frequent use of motion-tracking devices, video, virtual-reality headsets and motion capture systems in the modern age of technology further motivates the need for effective head gesture recognition systems.

In this dissertation, we focused primarily on the task of isolated head gesture recognition on rotation signals obtained from motion capture data. For this task, we performed in-depth research, application and evaluation of various widely-used sequence classification algorithms, including k-Nearest Neighbors with Dynamic Time Warping, Hidden Markov Models, Feed-Forward Neural Networks, and Recurrent Neural Networks with Long Short-Term Memory (LSTM). Comparisons between classifiers were done on the basis of recognition performance, which was measured with F1 score, and efficiency, which was measured in terms of peak memory consumption and fitting/prediction times.

The most effective method of modelling gestures was a bidirectional multi-layer LSTM, which yielded an accuracy of 53.75±1% and an F1 score of 52.30±1%. This result is a vast improvement of +15.1% F1 score over previous works on the same dataset.

Courses:

  • Algorithms, Data Structures and Learning
  • Introductory Applied Machine Learning
  • Machine Learning Practical
  • Machine Learning and Pattern Recognition
  • Extreme Computing and Database Systems
  • Foundations of Natural Language Processing
  • Processing Formal and Natural Languages
  • Automatic Speech Recognition
  • Natural Language Understanding, Generation and Machine Translation

The English College, Dubai

GCE/A-Levels (Mathematics - A*, Physics - A, Computing - B) 2007 - 2016

Activities:

  • Heriot-Watt University Programming Challenge
  • IT Department Assistance

Skills

In addition to being able to efficiently manipulate data, I have a solid understanding of a number of machine learning algorithms and concepts, including but not limited to:

  • Linear, Logistic and Softmax Regression
  • k-Nearest Neighbor Classifiers
  • Neural Networks (FFNNs, RNNs, CNNs)
  • Hidden Markov Models
  • Gaussian Mixture Models
  • Clustering (k-Means, DBSCAN, GMM)
  • Bayes Classifiers
  • Regularization
  • Data Augmentation
  • Dimensionality Reduction

I have also learned about some ways to use these methods in specific application areas, such as: using Bayes Classifiers for text classification, using HMMs to perform part-of-speech tagging or sequence classification, and combining Dynamic Time Warping with k-Nearest Neighbors to classify sequences of different length. I have also come across other algorithms such as Decision Trees and Random Forests, Bayesian Methods (Regression and Gaussian Processes) and Support Vector Machines, but have less practice with them.

Below is a summary of my technological skills and knowledge.


Programming Languages and Libraries:

  • Ruby: Sinatra, Rails (Limited), Thor, ActiveRecord, Nokogiri, Rake, RSpec
  • Python: Jupyter Notebook, NumPy, SciPy, SciKit Learn, Pandas, Matplotlib, Seaborn, NLTK, PyTorch, Tensorflow, Pomegranate, TQDM, LibROSA
  • SQL: Postgres, SQLite
  • Other languages: R, JavaScript

I mostly use Ruby for my general scripting needs, but also use it to design web-related things such as APIs, frameworks and websites.

For tasks involving data science and machine learning, I am very comfortable working with Python. I can effectively use Jupyter Notebooks (coupled with visualization libraries such as Matplotlib and Seaborn) as a means of clearly representing my work.

I have also written and published a number of libraries in both Python and Ruby on the public repositories PyPI and RubyGems.


Markup, Typesetting and Other Languages

  • LaTeX
  • Markdown
  • HTML
  • SCSS/CSS
  • YAML
  • JSON
  • XML + XQuery

I am very confident with the use of all of the above languages for tasks such as writing notes and reports, designing websites, and storing and querying semi-structured data.

Code

eonu's GitHub chart

During my time at university, I have developed many coursework-related and personal projects ranging from machine learning packages to websites, web frameworks and APIs. Most of these projects were written in Ruby and Python, but I have also done a few in some other languages such as R. You can find all of my projects on my GitHub profile, Ruby gems on my RubyGems profile and Python packages on my PyPI profile.

Here is a brief list of some of the larger projects that I have worked on, or are currently working on:

Sequentia

Sequentia
Python
NumPy
Pomegranate
SciPy
SciKit-Learn

A machine learning interface for isolated temporal sequence classification algorithms in Python.

Created as part of my Honours project research involving the use of sequential classifiers for automatic detection and recognition of head gestures in motion capture data.

Eucalypt

Eucalypt
Ruby
Sinatra
ActiveRecord
Thor

Micro-framework, application generator and CLI wrapped around the Sinatra DSL.

Designed to simplify the process of getting new Sinatra applications up and running by providing commands for quick scaffolding and MVC file generation.

Deeper Blue

Deeper Blue
Python
Flask
jQuery
React
SCSS

An assistive chess-playing robot aimed at making chess played on a physical board more accessible towards the disabled.

Developed for the System Design Project — a 3rd year group project at the School of Informatics, University of Edinburgh.