Inspiration

We don't have exact papers to cite for this section, everything was a mix of ideas, putting multiple things together hoping that our models will improve their performances.

Some keywords: images, auto encoders, convolutional neural networks, multi layers neural networks, representation learning.

What it does

All the algorithms use regression to predict the velocities.

How we built it

All the attempts we had at solving this problem use Neural Netowrks. We had two successful ways to model this problem.

For the first approach we draw inspiration from Convolutional Neural networks (CNN), modelling the problem in such a way that allowed us to use them.

We projected our coordinates on a grid of fix size. The third dimension was used to emulate the channels of an image. Instead 3 or 1 we had 11, representing the number of features for a point.

As a first input to our algorithm we use the data collected for the same day of the year in the format described above which includes all the features. We pick randomly an individual and take it out from that image like structure.

In order to regress to the u, v velocities we add a second input to our architectures that's formed from all the features except u and v velocities and id buoy. This input gets fed the random individual picked above for which the CNN will learn to predict the u, v buoy.

For the second approach we grouped data points based on the year and the day of that year. For each item we used its relevant features. This yield us a grid like structure to input to a multi-layer neural network. Any algorithm that we developed falls into one of the above described ways to model the problem.

In the end we built 3 sets of architectures:

  1. Multiple dense layers stacked on top of each other
  2. Basic CNN layers stacked on top of each other with the usual mechanisms of regularisation (batch norm, dropout etc.)
  3. An auto encoder based one in hopes that we'll learn to represent features as good as possible due to the reconstruction part. The resulted encoded vector is later on concatenated with the second input.

Challenges we ran into

Our initial thought was that this problem would be perfect for using graph neural networks, but after a close analysis of the data set we rendered this approach as not feasible.

The hardest part was to let the idea go, partially because both of us wanted to learn more about these sort of algorithms.

Accomplishments that we're proud of

This is our 1st AI hackathon so we are proud that we explored so many options.

We managed to model the problem in 3 different ways.

Pair programming - there were moments when we didn't have too many leads in order to split the work. This way both of us felt like we contributed.

What we learned

To adapt to a faster pace.

Modelling the same problem in many different ways in a short span of time.

To come up with a huge amount of ideas regrading model architectures and prioritise based on possible biggest gains.

Submission

Our results can be find at this github address. We have multiple models (4) that had similar performances, therefore we ask you kindly to evaluate each one of the submitted CSVs.

Built With

Share this project:

Updates