September 19, 2020

My approach to learning new data science concepts

Learning data science can be challenging at times. It’s very possible to get sucked into the bottomless rabbit hole of things to learn and feel defeated when you make little to no progress. That's why it's good to have a conscious approach to learning new concepts.

Throughout my education and professional life, I had to deal with situations where I needed to quickly pick up a new skill or learn a new concept. This helped me come up with a system which I still use today. Lately, I have been working on learning about a pre-trained NLP model called BERT. Thanks to this experience, I was able to observe myself and see the path I follow to learn things.

Here is my approach when learning new concepts, ideas, solutions.

Collect a list of pre-requisites

One of the biggest problems of learning a new concept is that many times you don’t know what you don’t know. In return it makes the learning task feel impossible and daunting. I've found that completely throwing myself at this problem makes the task seem easier. It’s sort of like exposure therapy.

First thing I do is assess the situation. How much information am I missing?

To figure this out I find resources and content that talks about the specific thing I'm trying to learn. These could be articles, videos, lectures on YouTube... Anything goes.

I do a first-pass over them to see which parts I don't understand and what techniques they talk about that I don't know about. I just note down everything that doesn’t make sense to me. At this point, my goal is not to learn the concept yet. I just want to get the lay of the land around this new concept. The notes I take will either include or point me to the pre-requisites of learning this concept.

This is a crucial step because even though there are great "beginner's", "for dummies" sort of content out there, it's not uncommon for them to assume some sort of basic knowledge on the topic. By having a list of pre-requisites you will have more control of the situation.

It’s very natural for this step to make you self-conscious or overwhelmed. Looking at the seemingly endless list of things you don’t know yet, will make the learning task seem huge. But this shouldn't stop you! It's almost always better than what it seems. It’s likely that many of those concepts in your list are highly related. This means that, while you're trying to learn concept A you will also learn and understand concept B, C and D. This happens to me all the time when I’m learning something new.

Find the best resources for you

There are many options for learning data science concepts. There is a great number of people creating quality content online about everything data science. First decide, what type of content helps you learn better? Chances are, there is a couple of these options available:

  • a published paper on the topic
  • blog posts written on the topic
  • video recording of a university lecture on the topic
  • YouTube videos of people explaining the topic

You don’t have to choose only one of course. For me, it works best when I get a high-level understanding from a YouTube video, then I watch a more in-depth lecture. I then read the paper published on this topic if I feel I need more in-depth knowledge. And that brings me to my next point

Decide how deep you want to go

You should have a reason for learning this new thing. This specific reason will help you calibrate your learning efforts. It will help you figure out how deep to go and where to stop.

I understand that it might be hard to find a solid reason when you're just starting to learn data science. One option is to come up with a project you can use these skills on. A project for your portfolio maybe? Or just have the intention of using them for a project and you can come up with the project on the way.

If these don't work for you, you might need to use your consciousness skills to make sure you're not getting lost in learning unnecessary parts of the concept.

So you might:

  • want to apply this new knowledge on a project. Then you probably need to know the fundamental workings of the new algorithm (assuming it's an algorithm) and how to implement it in practice. You don’t need to be able to prove the equations associated with this certain concept. You just need to use it and trust that the people who made the calculation were right.
  • be involved in writing academic papers using this concept. Then you would want to be fully informed about the pitfalls, shortcomings of a new model/algorithm or concept. Reporting research results would require you to have a deeper understanding of the overall workings of a concept.
  • want to use or maintain someone else’s code or work with a more senior person who will do most of the work. Then, maybe in the first place, you would only need to know on a high-level how the code works and the general logic behind it and not so much about the theory behind it.

Decide for yourself, how deep do you want to go? If you don't stop yourself, you can almost always go deeper. Make sure you have a pretty well-defined stopping point. Do not lose yourself in the academic papers, blog posts and the interesting shiny thing you learned on the way which distracts you from the actual goal.

Of course, sometimes there are things related to the concept which are just interesting and you want to learn more about them. How I cope with this is basically when there is something like that, I note it down on my note-taking app. When I have time, I can always go back and look into it.

Find libraries, how-to guides on implementation and get in there‍

After you understand the theory, you also need to know how to implement it, given that’s what you want to do at the end. There is no shortage of how-to videos, blog posts or tutorial documentation. You just need to find them. And to find them, my suggestion is Googling shamelessly.

When you're starting out, it’s easy to think that everyone has an inherent knowledge of how to use each new library that comes out about the latest technology. But that’s not the case. Many people go through a beginner’s period when they first start using a new tool/framework/library. That’s why there are so many tutorials and how-to guides on the internet.

I started this part of my learning by literally Googling, “how to implement BERT for NER tasks”. This made me realise that there is a GitHub repository by a company called Hugging Face that had a lot of tutorials and documentation which was immensely helpful. They even had guide notebooks I can immediately start using. So my next step is trying the code myself, breaking things and working fixing them.

My point is, just start looking for what you’re looking for with the best query you can come up with. It will lead you somewhere and the more you dig deeper the more you’ll learn. Everything you do hands-on will help you learn the implementation better. Even the frustrating hour-long searches for how to install this new library will help you learn some new things about this library that you didn't know about.

Keep in mind that the implementation bit is a much different skill than learning the theory. You might feel like you’re starting from scratch even though you know how the algorithms work in theory. Depending on the library, it might feel overwhelming and too hard to understand. But don't let it stop you. The best way to learn implementation is just trying it.

The right course can make a big difference

It’s normal to prefer to go with free resources when studying a new concept but a well-structured course can make the biggest difference in your learning. For my purposes, I realised I needed a refresher on how RNNs work and in general, sequence to sequence models. I came across Andrew Ng’s short course on this and boy am I glad. It saved me so much trial and error and frustration time.

Especially if you’re a busy professional who’s trying to take the leap from their current profession to data science, it’s more than worth it to save time by taking a well-structured course.

I’ve seen that one of the biggest problems of starters is that they have trouble figuring out how everything they learned fits together. You can learn ML models in one blog posts, data cleaning on another YouTube video but bringing that knowledge together and learning how they affect each other is a whole different skill.

If you're struggling with this too, I have some good news! My new course will be a start-to-finish fully-guided data science project builder. We will start from scratch, from setting up a data science environment, structuring a project and gathering data, up until model training, tuning and making the project portfolio-ready. Stay tuned for updates and a special launch discount.

In the meantime, keep your learning light-hearted. It's normal to feel lost and overwhelmed. But even the hardest things to learn are not impossible. If you follow these steps, you will be in control of your learning and can start making progress efficiently.