  Despite rapid advances in machine learning tools, the majority of neural
decoding approaches still use traditional methods. Modern machine learning
tools, which are versatile and easy to use, have the potential to significantly
improve decoding performance. This tutorial describes how to effectively apply
these algorithms for typical decoding problems. We provide descriptions, best
practices, and code for applying common machine learning methods, including
neural networks and gradient boosting. We also provide detailed comparisons of
the performance of various methods at the task of decoding spiking activity in
motor cortex, somatosensory cortex, and hippocampus. Modern methods,
particularly neural networks and ensembles, significantly outperform
traditional approaches, such as Wiener and Kalman filters. Improving the
performance of neural decoding algorithms allows neuroscientists to better
understand the information contained in a neural population and can help
advance engineering applications such as brain machine interfaces.
