Friday 14 August 2015

Meat and Matrices

What have I been up to?

I will write about my experiences in the past few days - in particular, Wednesday and Thursday.

On Wednesday, I experimented more with MATLAB, forgoing my code for implementing GP regression and instead lookeding further into the GPML package, which contains many helpful features for the purpose of GP regression. It is also very fast, which helps. I spent most of the day trying to get my head around the documentation provided online and in the source code.

Due to tradition adopted from university, every Wednesday is a 'sports night', which was initially designed for members of different sports clubs and societies at university to get together and mingle, but nowadays it is a time for anyone from anywhere to get together and intoxicate themselves. Therefore, we headed to the 'Lush' bar in Wudaokou (五道口), a popular student hangout, to attend a pub quiz. We ended up coming third, winning beer, alongside more beer offered in another bar further down the street for all quiz participants.

On Thursday, I invested more into the GPML package, learning more about its power and how it can help me in my task. From my data set of 'training examples' (a 5022 x 19 matix) I narrowed it down to just the past 24/48 hours to learn from, which led to much quicker computation times and allowed me to actually see some helpful results. I generated a test set to be just like the training set but with a little bit of normally-distributed noise added to make it a bit more realistic, but will allow me to see how close the predictions for the noisy test data is to the corresponding training examples.

The figure below shows the results. The red curve shows predictions, the blue crosses are the training examples target values, and the region between the two blue curves is a 95% confidence interval. GP regression is very handy in that for each prediction, it returns how uncertain it is about such prediction.
Results with my test data = training examples + a tiny bit of noise
Pretty accurate, I thought. All was well and good until I changed my training set to be the data points given at every 100th hour. I modified my test set to be the original data, and wanted to see how well the GP could train itself to be able to replicate the original data. I noticed that at every point that wasn't exactly a training example, the algorithm spat out a big fat zero. Not good. I received a WeChat message that we were meeting to get dinner at 5:30pm so I had to leave this problem until tomorrow.

Dinner was amazing. A friend of mine had a relative who would be studying in London next semester, so naturally the Imperial lot alongside his extended family members ate out to celebrate. It was a traditional Chinese 'hotpot', where a huge array of meats and vegetables are thrown into a large steaming brew located in the middle of the dining table. It was a great chance to relax and meet some of my friends extended family (and extended friends).

What will I change for tomorrow?

I will find out what is wrong with the GP code and why. 

I had a nice discussion with somebody from the dinner party about my experience in Beijing. It was nice to reflect on how much I have learned from the difficult situations forced upon me since arriving, but which have helped me immensely during my trip. It was a reminder to ensure that my final week in Beijing is not a wasted one.

No comments:

Post a Comment