A few weeks ago I participated in my first ever machine learning competition. It was a contest initiated by Honeywell, hosted on CrowdAnalytix. A data driven approach was used to predict fuel consumption in aircrafts during different phases of flight (taxi, take-off, climb, cruise, descent, roll-out) based on flight data recorder (FDR) archives. I’m happy to say I took 1st place! Below is an overview of my approach.
The objective was two-fold:
- Predict fuel flow for every second during different flight phases. The more fuel in an airplane, the heavier it is. A heavier airplane will have higher fuel consumption. So I’m assuming the predictive model can then be used to predict fuel consumption during future flights, which can help reducing the amount of fuel entered in the fuel tanks before flight.
- Use the model to extract actionable insights and provide these in a report.
I first split the training data in several parts, one for each Flight Phase. I ran through below steps for each of the parts:
- First I removed unnecessary and noisy features that could negatively impact the model’s accuracy. There were a lot of features that didn’t have any, or almost no variance, so these were easily removed. Then there was also data in the training set where fire was detected. In those cases I removed the feature AND the observations (if it wasn’t too much data).
- I did quite a lot of manual feature engineering and I have no doubt this is the key to this model’s strength. In total I added about 40 new features (rough guess). Most new features were lags. Here’s just one example: I noticed that there was barely any correlation between throttle target and fuel consumption. That doesn’t make any sense, does it? The throttle of the engines SHOULD impact fuel flow. So I noticed that when I took an X seconds lag then suddenly the correlation was quite obvious! This makes sense. If the pilot changes the throttle target then it will take some time for the engines to adapt to it.
- I used XGBoost to train the model. I simply used the standard settings for training, because unfortunately I ran out of time to tune the hyperparameters. No doubt some tuning could make it predict even better. Time was really an issue for me: I wasn’t able to train my latest and best model on all data (notably my final submission for the cruising phase was based on an older model).
Personally I was really missing an ‘actual engine throttle’ feature. I think this extra feature could make a big contribution to an even better predictive model. However, perhaps predicting would be way too easy with this feature, so I’m thinking maybe Honeywell decided to remove this parameter from their dataset in order to let participants actively search for other, less visible relationships.