Taking the plunge into data science can be a daunting task: with so many excellent (and, unfortunately, superfluous) resources available on the web, it can be difficult to know where to spend your valuable time. After struggling down this same path and gathering recommendations from dozens of practitioners in the field, I’ve synthesized my favorite resources in this post in hopes of paying it forward.
There are many great ways to learn programming and machine learning, and one method isn’t necessarily better than all the rest. After much trial and error, I’ve found textbook content to have a significantly higher learning-to-time-spent ratio than other mediums for a few key reasons:
Textbook authors are generally professors with deeper knowledge and stronger incentives than the typical MOOC producer or blogger
**Taking notes while you read requires continuous focus; **it’s far too easy to tune-out when sitting in a classroom or watching an online tutorial
A wealth of amazing textbooks are available for free on the web, as are interesting datasets with which you can apply your learnings
In order for this learning process to be effective, I’d highly recommend that you apply your readings to a real-world challenge or Kaggle dataset immediately after finishing each book. This final step will ensure that you’ve mentally digested what you’ve read and give you a codebase to work off of should you need to revisit the book in the future. Here’s a recent example that I wrote after reading *Forecasting: Principles & Practice *(see my review below).
If you’re new to the field, the links below should be all you need to reach an intermediate level of proficiency. Each book builds on the last, so I’d recommend going through them in listed order.
Gareth James, Daniela Witten, Trevor Hastie and Robert Tibshirani
This is the classic introduction to machine learning, with plenty of easy-to-follow visualizations and R code to get you up and running. I can’t recommend this book enough: it’s easily the most digestible textbook I’ve read on either statistics or programming. Start here!
Garrett Grolemund, Hadley Wickham
An excellent resource for those who want to understand data wrangling and visualization in R, two skills which will easily occupy 60% of your working time. After you take a dip into R while learning statistics via ISLR, this site will help you bring your basic programming skills up to speed.
Undoubtedly the most useful textbook I’ve read on machine learning in Python. Chapter 1, organized as a high-level FAQ on various ML topics, was a particularly strong overview of a number of different niches. You can find it on Amazon, but I’d recommend asking your school or employer if they offer free access through O’Reilly’s media site.
The classic MOOC from the master himself. This course taught me that I prefer reading books to watching MOOCs, but Andrew’s engaging teaching style and deep level of expertise makes this series a must-watch. This class is taught in MATLAB, so you’ll want to learn programming basics before giving it a try. If you want to put your new-found skills to the test, try each assignment in Python and compare to your answers in MATLAB.
After you learn the basics via the resources above, you’ll want to let your personal interests and use cases point you to the next step in your learning journey. Listed below are a few of my favorite deep-dives, organized by subject area.
Stuart Russell, Peter Norvig
Written by Stanford and Google heavyweights, this tome is a comprehensive, well-written guide on the building blocks of ML and, most interestingly, reinforcement learning. At over 1,000 pages, this book is one that I’d skim selectively rather than consume wholly.
A massive reference on all things Bayes with accompanying code in R. Understanding Bayesian inference will complement the frequentist perspective that you developed in the ‘Getting Started’ section of this list. Again, this book is more of a skim-worthy title than one that is made for cover-to-cover reading. For a quick overview of Bayesian statistics, our friends at Analytics Vidhya have you covered.
Joshua D. Angrist, Jörn-Steffen Pischke
In this accessible guide to modern causal inference modeling, Angrist and Pischke explore how regression can be a invaluable tool for understanding causal relationships. Other topics of interest include matching, propensity scoring, and fixed-effect modeling. This book is much easier to understand than Gelman and Hill’s tome in my “Advanced Reading” list, but they pair well together and cover similar topics at different levels of granularity.
Sarah Guido, Andreas Müller
The authors cover everything from basic unsupervised methods to natural language processing in Python. Consider this the Python-equivalent of ISLR with more of a focus on intermediate users. This read also comes free with an O’Reilly subscription.
Ian Goodfellow, Yoshua Bengio, Aaron Courville
Our list wouldn’t be complete without the technical bible of deep learning, covering everything from perceptrons to convolutional neural networks. This tome is “the only comprehensive book on the subject” according to Elon Musk and, unlike the other massive reference titles on this list, I’d recommend reading it from cover-to-cover.
The most thorough textbook I’ve read on generalized additive models and regressional analysis. Extremely useful overview of GAMs and their interpretability, with a great deal of R code to smoothen the learning process. Professor Berk also covers more modern predictive techniques (e.g., boosting), but his thoughtful approach to inference modeling is what makes this book a must-read.
Robert C. Martin
Though this book was originally written for software engineers, it’s equally important for data scientists to read and understand. If you aspire to write production-ready code, this book offers a number of high-level suggestions to guide your thinking.
The author begins with a high-level overview of neural networks before diving into LSTMs and GRUs. This book provides a useful, high-level introduction to these nets, but the accompanying Keras code is a few generations old and, frankly, isn’t very useful.
Rob J Hyndman, George Athanasopoulos
Great read on time series forecasting in R, with helpful code and visuals to explain the end-to-end modeling process. If you need a little motivation to dive into this text, Hyndman’s R library, *forecast, *was recently used to win the high-value Walmart competition on Kaggle.
Christoph does an excellent job at capturing visualization best practices for everything from linear regression to XGBoost. His guide is short, practical, and engaging, and I’ve added Shapley values, PDPs, and ICE plots to my normal workflow as a direct result of his e-book.
If you can read, understand, and apply your learnings from the books listed above, then you may enjoy a few of my more recent favorites. **These recommendations are extremely technical; if you’re looking for pages filled with math notation and code samples, then you’re in the right place.
Andrew Gelman, Jennifer Hill
I’d never paid multilevel regression much thought until I read Richard McElreath say “multilevel models deserve to be the default mode of regression.” After reading this text, I finally understand why we almost always prefer to run a multilevel model (linear, logistic, generalized, etc.) to an ordinary regression. This text is extremely thorough and offers hands-on examples in both R (frequentist) and Buds (Bayesian), but is probably 150 pages longer than necessary.
If you’re excited to learn about Bayesian statistics but haven’t quite found the right guide, this extremely well-written textbook should be at the top of your reading list. The author begins with a thorough overview of Bayesian statistics before sharing several techniques to help improve your causal inference game.
Paul Chiusano, Rúnar Bjarnason
This book combines functional programming best practices with an engaging introduction to Scala, a general-purpose programming language that forms the backbone of Apache Spark.
This book took my Python skills to the next level. Consider this a must-read if you spend a significant amount of time in Python, though most of Ramalho’s suggestions won’t generalize well to other programming languages.
One of my favorite things about this field is how quickly it’s evolving. No matter how much we read, there will always be more for us to digest and learn. After you make it through this list, you’ll finally be ready for the best part: poring over research papers on arXiv. Exciting times ahead!
Originally posted on Medium.