Feature contributions from PCA

I had an interesting discussion on /r/MachineLearning the other day. The crux was, having applied PCA to some data and measuring some aspect of the principal components, how would we relate that back to the original data? It should be simple in principle, but I found myself scratching my…

Reflections on Submission (viva pending)

It's been a long road to get to this point, but I thought I'd condense my thoughts about the part-time PhD experience for anyone considering one. To preface, if you're reading this thinking about starting a part time PhD, my advice to you is don't. Yes, really. Do it full…

Using PCA when there are less samples than dimensions

A significant part of my PhD research [1,2] has involved the application of PCA (Principal Components Analysis) in unsupervised change detection problems. Working with high-dimensional streaming data, I typically have to work on the assumption that we have no context and no data in advance. We also often need…

Recursive statistics for data streams

If you ever have to process an indeterminate length stream of data, it's useful to be able to compute some basic statistics as you go. The key phrase there is as you go - we could easily compute a mean of an arbitrary number of samples $N$ $$ \bar{x} = \frac{…

Overriding Spring Data REST Repositories

We often use spring-data-rest to abstract away simple RESTful CRUD boilerplate, and it is very good at it. The problem comes in more complicated situations. Sometimes you need to step in and override one of the request handlers to do something slightly differently, or trigger an event. So, how do…

The underappreciated importance of the pilot project

If a lot of developer CVs pass over your desk, you'll be familiar with the idea of the 'polygot' developer - that is; the developer who is proficient in lots of languages, frameworks, paradigms, whatever. The full stack++ engineer. Personally, I think this is a little overblown. Especially early in…

Back to MVVM

The last WPF application that I worked on and saw through to the bitter end was the control software for the RoboBlot. The last time I worked on it was in 2014, by which point I had migrated to working almost exclusively in Java, for a bunch of reasons. So,…

Who am I?

I'm Will Faithfull. I'm a software engineer and doctoral student, and this is purely an outlet for my intrigue, frustration and self promotion. I am: Lead Java Developer (and often begrudging sysadmin / devops / automation) at Infinity EPOS. Part time PhD student at Bangor University and author of several publications. Managing…