Why Machine Learning Does Not Have to Be So Hard

Last Updated on December 30, 2020

Technical topics like mathematics, physics, and even computer science are taught using a bottom-up approach.

This approach involves laying out the topics in an area of study in a logical way with a natural progression in complexity and capability.

The problem is, humans are not robots executing a learning program. We require motivation, excitement, and most importantly, a connection of the topic to tangible results.

Useful skills we use every day like reading, driving, and programming were not learned this way and were in fact learned using an inverted top-down approach. This top-down approach can be used to learn technical subjects directly such as machine learning, which can make you a lot more productive a lot sooner, and be a lot of fun.

In this post, you will discover the concrete difference between the top-down and bottom-up approaches to learning technical material and why this is the approach that practitioners should use to learn machine learning and even related mathematics.

After reading this post, you will know:

  • The bottom-up approach used in universities to teach technical subjects and the problems with it.
  • How people learn to read, drive, and program in a top-down manner and how the top-down approach works.
  • The frame of machine learning and even mathematics using the top-down approach to learning and how to start to make rapid progress as a practitioner.

Let’s get started.

You're Doing it Wrong. Why Machine Learning Does Not Have to Be So Hard

You’re Doing it Wrong. Why Machine Learning Does Not Have to Be So Hard
Photo by popofatticus, some rights reserved.


This is an important blog post, because I think it can really help to shake you out of the bottom-up, university-style way of learning machine learning.

This post is divided into seven parts; they are:

  1. Bottom-Up Learning
  2. Learning to Read
  3. Learning to Drive
  4. Learning to Code
  5. Top-Down Learning
  6. Learn Machine Learning
  7. Learning Mathematics

Bottom-Up Learning

Take a field of study, such as mathematics.

There is a logical way to lay out the topics in mathematics that build on each other and lead through a natural progression in skills, capability, and understanding.

The problem is, this logical progression might only make sense to those who are already on the other side and can intuit the relationships between the topics.

Most of school is built around this bottom-up natural progression through material. A host of technical and scientific fields of study are taught this way.

Think back to high-school or undergraduate studies and the fundamental fields you may have worked through: examples such as:

  • Mathematics, as mentioned.
  • Biology.
  • Chemistry.
  • Physics.
  • Computer Science.

Think about how the material was laid out, week-by-week, semester-by-semester, year-by-year. Bottom-up, logical progression.

The problem is, the logical progression through the material may not be the best way to learn the material in order to be productive.

We are not robots executing a learning program. We are emotional humans that need motivation, interest, attention, encouragement, and results.

You can learn technical subjects from the bottom-up, and a small percentage of people do prefer things this way, but it is not the only way.

Now, if you have completed a technical subject, think back to how to you actually learned it. I bet it was not bottom-up.

Learning to Read

Think back; how did you learn to read?

My son is starting to read. Without thinking too much, here are the general techniques he’s using (really the school and us as parents):

  • Start by being read to in order to generate interest and show benefits.
  • Get the alphabet down and making the right sounds.
  • Memorize the most frequent words, their sounds, and how to spell them.
  • Learn the “spell-out-the-word” heuristic to deal with unknown words.
  • Read through books with supervision.
  • Read through books without supervision.

It is important that he continually knows why reading is important, connected to very tangible things he wants to do, like:

  • Read captions on TV shows.
  • Read stories on topics he loves, like Star Wars.
  • Read signs and menus when we are out and about.
  • So on…

It is also important that he gets results that he can track and in which he can see improvement.

  • Larger vocabulary.
  • Smoother reading style
  • Books of increasing complexity.

Here’s how he did not learn to read:

  • Definitions of word types (verbs, nouns, adverbs, etc.)
  • Rules of grammar.
  • Rules of punctuation.
  • Theory of human languages.

Learning to Drive

Do you drive?

It’s cool if you don’t, but most adults do out of necessity. Society and city design is built around personal mobility.

How did you learn to drive?

I remember some written tests and maybe a test on a computer. I have no memory of studying for them, though I very likely did. Here’s what I do remember.

I remember hiring a driving instructor and doing driving lessons. Every single lesson was practical, in the car, practicing the skill I was required to master, driving the vehicle in traffic.

Here’s what I did not study or discuss with my driving instructor:

  • The history of the automobile.
  • The theory of combustion engines.
  • The common mechanical faults in cars.
  • The electrical system of the car.
  • The theory of traffic flows.

To this day, I still manage to drive safely without any knowledge on these topics.

In fact, I never expect to learn these topics. I have zero need or interest and they will not help me realize the thing I want and need, which is safe and easy personal mobility.

If the car breaks, I’ll call an expert.

Learning to Code

I started programming without any idea of what coding or software engineering meant.

At home, I messed around with commands in Basic. I messed around with commands in Excel. I modified computer games. And so on. It was fun.

When I started to learn programming and software engineering, it was in university and it was bottom up.

We started with:

  • Language theory
  • Data types
  • Control flow structures
  • Data structures
  • etc.

When we did get to write code, it was on the command line and plagued with compiler problems, path problems, and a whole host of problems unrelated to actually learning programming.

I hated programming.

Flash-forward a few years. Somehow, I eventually starting working as a professional software engineer on some complex systems that were valued by their users. I was really good at it and I loved it.

Eventually, I did a course that showed how to create graphical user interfaces. And another that showed how to get computers to talk to each other using socket programming. And another on how to get multiple things to run at the same time using threads.

I connected the boring stuff with the thing I really liked: making software that could solve problems, that others could use. I connected it to something that mattered. It was no longer abstract and esoteric.

At least for me, and many developers like me, they taught it wrong. They really did. And it wasted years of time, effort, and results/outcomes that enthusiastic and time-free students like me could dedicate to something they are truly passionate about.

Top-Down Learning

The bottom-up approach is not just a common way for teaching technical topics; it looks like the only way.

At least until you think about how you actually learn.

The designers of university courses, masters of their subject area, are trying to help. They are laying everything out to give you the logical progression through the material that they think will get you to the skills and capabilities that you require (hopefully).

And as I mentioned, it can work for some people.

It does not work for me, and I expect it does not work for you. In fact, very few programmers I’ve met that are really good at their craft came through computer science programs, or if they did, they learned at home, alone, hacking on side projects.

An alternative is the top-down approach.

Flip the conventional approach on its head.

Don’t start with definitions and theory. Instead, start by connecting the subject with the results you want and show how to get results immediately.

Lay out a program that focuses on practicing this process of getting results, going deeper into some areas as needed, but always in the context of the result they require.

It Is Different

It is not the traditional path.

Be careful not to use traditional ways of thinking or comparison if you take this path.

The onus is on you. There is no system to blame. You only fail when you stop.

  • It is iterative. Topics are revisited many times with deeper understanding.
  • It is imperfect. Results may be poor in the beginning, but improve with practice.
  • It requires discovery. The learner must be open to continual learning and discoverery.
  • It requires ownership. The learner is responsible for improvement.
  • It requires curiosity. The learner must pay attention to what interests them and follow it.

It Is Dangerous

Seriously, I’ve heard “experts” say this many times, saying things like:

You have to know the theory first before you can use this technique, otherwise you cannot use it properly.

I agree that results will be imperfect in the beginning, but improvement and even expertise does not only have to come from theory and fundamentals.

If you believe that a beginner programmer should not be pushing changes to production and deploying them, then surely you must believe that a beginner machine learning practitioner would suffer the same constraints.

Skill must be demonstrated.

Trust must be earned.

This is true regardless of how a skill is acquired.

You’re a Technician


This is another “criticism” I’ve seen leveled at this approach to learning.

Exactly. We want to be technicians, using the tools in practice to help people and not be researchers..

You do not need to cover all of the same ground because you have a different learning objective. Although you can circle back and learn anything you like later once you have a context in which to integrate the abstract knowledge.

Developers in industry are not computer scientists; they are engineers. They are proud technicians of the craft.

Efficient, Effective, and a Fun Way to Learn

The benefits vastly outweigh the challenge of learning this way:

  • You go straight to the thing you want and start practicing it.
  • You have a context for connecting deeper knowledge and even theory.
  • You can efficiently sift and filter topics based on your goals in the subject.

It’s faster.

It’s more fun.

And, I bet it makes you much better.

How could you be better?

Because the subject is connected to you emotionally. You have connected it to an outcome or result that matters to you. You are invested. You have demonstrable competence. We all love things we are good at (even if we are a little color blind to how good we are), which drives motivation, enthusiasm, and passion.

An enthusiastic learner will blow straight past the fundamentalist.

Learn Machine Learning

So, how have you approached the subject of machine learning?

Seriously, tell me your approach in the comments below.

  • Are you taking a bottom-up university course?
  • Are you modeling your learning on such a course?

Or worse:

Are you following a top-down type approach but are riddled with guilt, math envy, and insecurities?

You are not alone; I see this every single day in helping beginners on this website.

To connect the dots for you, I strongly encourage you to study machine learning using the top-down approach.

  • Don’t start with precursor math.
  • Don’t start with machine learning theory.
  • Don’t code every algorithm from scratch.

This can all come later to refine and deepen your understanding once you have connections for this abstract knowledge.

  1. Start by learning how to work through very simple predictive modeling problems using a fixed framework with free and easy-to-use open source tools.
  2. Practice on many small projects and slowly increase their complexity.
  3.  Show your work by building a public portfolio.

I have written about this approach many times; see the “Further Reading” section at the end of the post for some solid posts on how to get started with the top-down approach to machine learning.

“Experts” entrenched in universities will say it’s dangerous. Ignore them.

World-class practitioners will tell you it’s the way they learned and continue to learn. Model them.


  • You learned to read by practicing reading, not by studying language theory.
  • You learned to drive by practicing driving, not by studying combustion engines.
  • You learned to code by practicing coding, not by studying computability theory.

You can learn machine learning by practicing predictive modeling, not by studying math and theory.

Not only is this the way I learned and continue to practice machine learning, but it has helped tens of thousands of my students (and the many millions of readers of this blog).

Learning Mathematics

Don’t stop there.

A time may come when you want or need to pull back the curtain on the mathematical pillars of machine learning such as linear algebra, calculus, statistics, probability, and so on.

You can use the exact same top-down approach.

Pick a goal or result that matters to you, and use that as a lens, filter, or sift on the topics to study and learn to the depth you need to get that result.

For example, let’s say you pick linear algebra.

A goal might be to grok SVD or PCA. These are methods used in machine learning for data projection, data reduction, and feature selection type tasks.

A top-down approach might be to:

  1. Implement the method in a high-level library such as scikit-learn and get a result.
  2. Implement the method in a lower-level library such as NumPy/SciPy and reproduce the result.
  3. Implement the method directly using matrices and matrix operations in NumPy or Octave.
  4. Study and explore the matrix arithmetic operations involved.
  5. Study and explore the matrix decomposition operations involved.
  6. Study methods for approximating the eigendecomposition of a matrix.
  7. And so on…

The goal provides the context and you can let your curiosity define the depth of study.

Painted this way, studying math is no different to studying any other topic in programming, machine learning, or other technical subjects.

It’s highly productive, and it’s a lot of fun!

Further Reading

This section provides more resources on the topic if you are looking to go deeper.


In this post, you discovered the concrete difference between the top-down and bottom-up approaches to learning technical material and why this is the approach that practitioners should and do use to learn machine learning and even related mathematics.

Specifically, you learned:

  • The bottom-up approach used in universities to teach technical subjects and the problems with it.
  • How people learn to read, drive, and program in a top-down manner and how the top-down approach works.
  • The frame of machine learning and even mathematics using the top-down approach to learning and how to start to make rapid progress as a practitioner.

Do you have any questions?
Ask your questions in the comments below and I will do my best to answer.

157 Responses to Why Machine Learning Does Not Have to Be So Hard

  1. The c0d3R March 28, 2018 at 6:05 am #

    Hi Jason,

    From my anecdotal experience I can say that the top down approach suited me more than the bottom up. I have taken a lot of ML & DL courses but I would always either loose interest or get so bogged down by the early complexity that it would deter me from actually learning the fun application’s part. I got way better with ML when I started applying models to real world problems.

    Thanks for confirming my bias!

    • Jason Brownlee March 28, 2018 at 6:36 am #


      • Ahmed May 21, 2019 at 9:57 pm #

        Hey I want to build a ML model to read the PDF and then seggregate based on the diffrence( like creating a diffrent folder and moving those pdf to those folders )

    • Rizwan Ali July 13, 2019 at 8:34 pm #

      Thank you so much for giving insight to the approach of learning, I mostly get borred by the conventional learning and I had two supervisor in my MPhil research work one is a researcher and other is an engineer and I wasted a complete smester of 1 year research in digging the basic of nueral network than I will meet my other supervisor who is an engineer he started things by giving me code of discriminatig the cat and dogs via their image datset and it worked I started my own research topic and finished my research surprisingly in two months

  2. Will Bidstrup March 28, 2018 at 6:24 am #

    Thank you Jason,

    I believe this is excellent advice, at least for me. I find I need to oscillate between top down and bottoms up, but here’s the kicker – I can ONLY make myself learn bottoms up when I have motivation which I get from being enthused about doing something exciting like solving a real world problem or making something cool.

    I’m looking forward to working through some of your material and also beginning to populate my own learning blog.

    Thanks for the clear thinking and inspirational post.


  3. Lissy March 28, 2018 at 11:57 am #

    I agree, this is the best way to learn machine learning. I skipped all the math and dove into the fun stuff. Now I’m going back and taking a statistics course. I never would have mad it through if I started with statistics

  4. Jeff March 28, 2018 at 12:41 pm #

    I had the same experience with learning programming in college. Took a class in 2006, to learn C. Had to also use command line and Linux, which made it that much harder. Fast forward to 2012 – learned Java on iTunes U, by moving little robots around and making balls bounce… in an IDE, on my familiar computer. So much more fun. Went on to learn C#, Python, and R in the last few years by doing random little projects that helped me at work or automated something boring at home.

  5. Raj March 28, 2018 at 6:54 pm #

    Agree and thanks again for putting it in a simpler way.

  6. Muyi Ibidun March 28, 2018 at 10:06 pm #

    I totally agree with the top-down approach to learning especially in a fast pace field like computing science, data science and machine learning where techniques and technologies transforms faster than you could master the theories behind them. However, I have come to realise my background in computing has helped me in ways it has become really easy to grasp the underlying concepts behind the techniques on-demand.

  7. Dhrumil March 29, 2018 at 12:36 pm #

    I feel like I had an explosion.You articulated really well what I have been doing for a some time already but feeling fear,self-deceit,guilt,paranoia etc.I guess I won’t anymore.

    Thank you Jason.

  8. Tim March 29, 2018 at 3:38 pm #

    Thank you for writing this. I just discovered your blog and I will be reading everything you’ve written here. 2 months ago, I got super excited about Machine Learning and AI and did the usual googling rounds of “How do I get started in ML” and “Which languages should I learn for ML” and “Prerequisites for ML”.

    The results I got from that research shaped my decision of what to study and how to get started – I made a list of all the courses starting from the Ng ML course, got the Multivariable calculus, linear algebra, statistics books, and started teaching myself Python and Calculus. Two Months later? Still reading Python and Calculus books, solving problems, doing exercises (sigh.)

    I’m a little bit of a perfectionist (read: fan of bottom-up learning in theory). I mean, plan out everything, take every course, understand every underlying mathematical theory before attempting machine learning courses and EVERYTHING will go smoothly and I will master everything in the shortest amount of time, it’s totally supposed to work right?!

    Sometimes, I forget how I learned to read, make music, use a computer, or play a sport. Bottom-up is a beautiful idea, but it only works in a utopian world where I have unlimited motivation every day to master things that don’t directly interest me.

    I’m going to change my approach from today (read: throw everything out and play with stuff). I want the excitement back. Thanks again for writing this, Jason.

    • Jason Brownlee March 30, 2018 at 6:31 am #

      I’m glad the message helped Tim.

      Focus on providing value, being useful. You cannot learn everything, and if you go down that road, almost all of it will not help you to be useful to others (e.g. as a data scientist/ml engineer).

      Hang in there.

  9. Franco March 29, 2018 at 7:45 pm #

    The famous mathematician Carl Jacobi would probably agree with you. His maxim was “invert, always invert” (German: “man muss immer umkehren”) or WORK BACKWARD.

    Another deeply profound post Jason! Thank you.

    • Jason Brownlee March 30, 2018 at 6:36 am #

      Thanks Franco, I’m glad it helped.

      Thanks for sharing the quote!

  10. Patrick March 29, 2018 at 10:18 pm #

    Completely agree – great post!

  11. Doi April 6, 2018 at 8:24 pm #

    Thats such an aid.
    It seems I have been approaching things the wrong way.
    And then I read your article and it tells me why even after studying ml for so long around two years i havent been satisfied.
    I took a hybrid approach.

    I will get it sorted.
    Where should I get started?
    I cant start from very basic. I have iteratively left it incomplete.
    And cant approach it again.

    Suggestions please.

  12. BitBarrel April 11, 2018 at 7:36 pm #

    Very well said. It is a problem in many fields of education.

    I remember my first IT class in high school where the teacher explained how a floppy drive is divided into different sections. I mean, seriously? You really need to know this in order to operate a computer? You should have seen the faces of my classmates. I consider myself lucky for being able to see through crap like that. Not everyone can.

  13. Mahesh April 12, 2018 at 11:11 pm #

    3 months back i started learning ML in bottom up approach. So many i felt bored and i stopped learning again i resumed. My study was intermittent. I felt Top down approach will work for me.
    Thank You

    • Mahesh April 12, 2018 at 11:12 pm #

      *So many Times*

    • Jason Brownlee April 13, 2018 at 6:40 am #

      I’m glad to hear that Mahesh, stick with it!

  14. Germán Goñi Núñez April 21, 2018 at 8:37 am #

    Thank you for the amazing content that you create Jason.

  15. Sean O'Connor April 23, 2018 at 2:41 pm #

    There is some sort of discussion about similarity alignment and also the quirky topic of feedback alignment here:


    I was also practicing html5 and I did a WHT toy example:


    • Jason Brownlee April 23, 2018 at 2:55 pm #

      Great, how does this relate to the post exactly Sean?

  16. Vinícius Gonçalves de Oliveira April 26, 2018 at 7:41 am #

    Man, how can I post a gift for you from Brazil, due the insights contained in these texts?

    I’m very happy to know that many practioners including you share or have shared time ago the same difficulties that I’ve been crossing right now.

    Thanks for your motivational work and technical posts…

    You’re giving me a huge help.

    Top-Down forever….

    Thanks a lot again…

    Best regards

  17. Sharp Sight April 30, 2018 at 8:58 am #

    Strongly agree with this.

    I tell my students that it’s like being a race-car driver: you don’t need to be able to engineer the car to be able to drive it.

    For a practitioner, it’s almost always best to just learn to use ML tools in a practical way and then “backfill” the mathematics as you need to start fine-tuning models, or as you need to deepen your knowledge.

    I think the only major difference in our philosophies is that I strongly suggest that students master basic analysis first: http://www.sharpsightlabs.com/blog/machine-learning-prerequisite-isnt-math/

  18. Hongli May 2, 2018 at 7:59 am #

    I like you post very much!

    I think learning a programming language(any language), we always learn it in top-bottom fashion.
    Because in order to learn it from bottom-up, this would mean, we need to know how the hardware works, and the OS that operates on the hardware, then the language that written to run in the os, then the compiler, finally the language itself. This is not possible and not efficient for any human being. In order to learn, we don’t need to know how our brain instructs us on how to learn. It’s implicitly Top-down by design.

  19. Evi June 13, 2018 at 9:45 pm #

    Thank you for your post. I am currently getting a PhD in Informatics in Germany, where we do not have courses. My research area is currently time series analysis with deep learning.
    I actually come from physics, and I switched my area of research completely. In the first month of my PhD, I made myself read the free Deep Learning book by Bengio and Goodfellow. While I think it is a good book, I was infinitely bored reading it from morning until evening. And I lost a month, basically. Now I try to use a different approach. For example, I have recently hacked a variational convolutional autoencoder and made it work for my time series dataset. And now I am happy to read the original paper on VAEs. Similarly, to get a better understanding of my models, I am motivated to read books on statistics in my free time. But starting my PhD work with reading a book gave me nearly nothing. In fact, I probably should reread the Deep Learning book, since now, I would certainly get more out of it.

    • Jason Brownlee June 14, 2018 at 6:03 am #

      Well done.

      How was the skill of your VAE on your time series problem?

  20. Landon Eggleston June 20, 2018 at 2:24 am #

    I rarely leave replies to articles / blogposts, but the principal and analogies you provide here are spot on. I have a feeling that both your free and paid content will accelerate the learning curve of those that are already motivated to learn, and better yet – may provide the confidence to begin for potential ML learners who feel inadequate due to the perception of complexity, and the often assumed “requirement” of knowledge, both in depth and breadth even to start.

    — Start now, Fail often. Nothing motivates more than success learned from prior failure —

  21. Eric Pearce June 28, 2018 at 6:26 am #

    I’ve only been learning Machine Learning for about two weeks. I think I have been bouncing back and forth between the bottom up approach to trying to find examples that fit my problem (top down). I am sure the top down approach is the way to go, but my problem isn’t really a discrete problem, it is dealing with a very physical system, whose governing equations are simply to complex to distill into one neat little equation. As a result, I have what seems to me like a supervised system, and it is continuous. I have four inputs, two highly intertwined outputs and just can’t make sense of where to go now. Open to suggestions as I continue to look for examples and methods. Thanks for your site, just found it today and am binge reading… 😉

  22. Grant June 28, 2018 at 9:17 pm #

    This is a wonderful article, thank you for spelling it out like that.

    I have approached ML and pre reqs from the bottom-up so far, but realize that I could be much farther along if I had approached it differently. I have spent countless hours trying to work though compiler errors or equivalent roadblocks in other subjects and see that a lot of that was wasted time.

    This is my first year out of my near finished undergrad program; unfortunately it was not going to be able to deliver its bottom-up promise, and only delaying and indebting me.

    I’ve been trying to fill in my gaps with mostly bottom-up approach with studying on my own, but feel buried and lost a lot of the time. There are so many wonderful resources online, I’m trying to balance forward momentum and my tendency to want to know every intricate detail of something before moving on.

    Thank you for this great article and the site! I know this will be a treasured resource as I figure out the plan going forward. A top-down learning approach will surely be a better way for me!

    • Jason Brownlee June 29, 2018 at 5:59 am #

      I’m glad it helped Grant. Stick with it.

      I’m here to help if I can along your journey.

      Focus on working problems end to end and delivering results. It is the skeleton that will allow everything else to make sense, or fall away.

  23. Ahmed July 10, 2018 at 1:54 pm #

    if this your way of thinking about learn, then I’m happy that by luck I found you..

  24. Shailna Patidar October 15, 2018 at 5:30 pm #

    Hey Jason,

    I think now I can earn anything with your approach and not just programming. 🙂

  25. Ankur October 24, 2018 at 4:20 pm #

    Thanks for introducing the new approach. I was just thinking of myself of using top down approach and with this article I confirmed… Let’s see how it works…

  26. Ronnie October 31, 2018 at 1:14 am #

    I like the approach and I have to say everything you’ve mentioned make sense. Personally i hated college for their approach on education and always prefer my “way”, now i see my way as the Top-Down Learning method, and I learn many things that way without even know.

    I think it is time to tame Machine Learning then

  27. Tanuj Dave November 9, 2018 at 10:30 pm #

    It really awesome article to start on ML, Thanks Jason

  28. Gaurav Tripathee November 29, 2018 at 9:43 am #

    You learned to drive by practicing driving, not by studying combustion engines.
    You cannot make a car if you dont know combustion engines.

    I totally agree with your arguments and guides. I am also learning university-based machine learning but the top-bottom approach seems much more interesting and more practical. But excelling in this field we really need to know theories.
    I understand this article is the motivation for the beginners. And, from your words, I am pushed to learn it in top-bottom approach. I think I can understand the bottom-top approach better if I have a good working knowledge in top-bottom approach.

    Thank you for sharing your wisdom.

    • Jason Brownlee November 29, 2018 at 2:36 pm #

      Thanks for sharing.

      Not sure if I agree, you can drive F1s (race cars at the top level) without building them.

      Perhaps you can decide if you want to use techniques or develop new techniques (or some mixture). Most business just need someone who can use the techniques and deliver a result, not innovate.

  29. BigAl_LBL January 10, 2019 at 10:42 pm #

    But if you are building cars you really do need to understand what the nuts and bolts do.

    It is true that in industry most people will be expected to drive for most of the time, but if you expect to hold a top position for any length of time you will eventually find that the car needs a rebuild and you will then need to understand the nuts and bolts.

    You do not need to understand a technique to use a prepackaged version of it, but you do need to understand it if you are going to tweak it, or use it for a different purpose. Top down will let you use an algorithm but not create it.

    There is a reason universities teach bottom up – it is not their purpose to teach people how to drive the car it is their job to get students to understand all the facts required to design and build one. Armed with that knowledge and understanding it is up to an employer to teach how to drive their specific car.

    If you do not want to understand the car then do not bother going to university instead use excellent resources like this web site to teach you to drive, but do appreciate that they are different tools with different goals and different outcomes.

    If you want to win a car race learn to drive if you want to build the best car study engineering. If you want to create a new type of car study science, but if you want to really master any of them you will need to get to grips with all of them.

    Top down eventually reaches the bottom, and bottom up eventually reaches the top. Choose the approach that will get you where you want to be soonest.

    Personally I find it easier to understand things from first principles and apply them – but I do agree that I appear to be in the minority and a top down context can certainly aid bring a problem into focus and may aid understanding

    • Jason Brownlee January 11, 2019 at 7:50 am #

      Sure, but most people are not building cars, nor do they ever need to. My point. We’re driving to the supermarket, not racing in F1. Perhaps you are and that’s fine.

      Almost no one needs to develop a new type of neural net or optimization algorithm. Ever.

      Just like you can be a java dev without ever having to write a compiler or read bytecodes or write an ide, etc.

      But they can fit and tweak models for their entire career and produce a ton of value to business.

      Agree with your final point – you MUST find an approach that suits your preferred approach and go all in.

  30. John Davis January 14, 2019 at 3:59 am #

    Thanks a lot.
    I’m really thrilled by reading this ;I never thought about this – of changing current education system.But when I read this I felt like this is all around me … I wasn’t able to understand it.
    And I’m in my early stages of Machine Learning learning process. Sure this insight will help me

    • Jason Brownlee January 14, 2019 at 5:30 am #

      I’m glad it helped.

      Hang in there, you’re not alone. There are millions of us – getting things done and delivering results.

  31. charan February 17, 2019 at 8:08 am #

    Thanks for sharing your valuable points sir.

  32. Anthony February 18, 2019 at 2:24 pm #

    That was truly inspirational for someone like me who is in the early stages of learning Machine Learning, and feel like I’m over my head and drowning in jargon and information overload.

    Thank you!

  33. Disha Bhatia March 13, 2019 at 4:57 pm #

    Hi, your post was extremely helpful as I am just in the beginning stage. One question which I would like to ask is like you mentioned about a child learning how to read, a person learning how to drive in a top-down fashion, we also train machines in a similar fashion right?

  34. Sachin S Babar March 15, 2019 at 2:19 am #

    Thanks Sir Jason.

    Indeed perfect Top down approach which should admire by every educational institutes.

    Thanks for being such a visionary coach.

  35. Alex March 19, 2019 at 7:24 am #

    That’s very inspirational. Thank you!

  36. Manasa March 19, 2019 at 10:07 pm #

    Faced a similar problem when I was introduced to programming in C in 10th grade. We were made to learn functions, pointers, data structures (literally cried my lungs out for this) and so on. I believed coding is something I would never want to do in my life.

    Got hired by a company having a team focusing on machine learning and artificial neural networks. I learnt python from scratch and wrote codes myself with the help of my manager.

    I can happily say that I have never found coding so liberating before. Whatever I learned, I did it through extensive google-ing, experimenting and playing around with bits of code.

    I could totally relate to your blog. Thanks so much for making me feel like I wasn’t the only one to hate programming in my initial years.

    • Jason Brownlee March 20, 2019 at 8:29 am #

      Thanks for sharing.

      Yes, you/we are not alone. I think it is a lot more common than is discussed.

  37. Pete March 20, 2019 at 9:19 pm #

    What a great and inspiring post, thanks for writing this!

    I found this site searching for some mathematics term that I’d never heard of, which I read in a ML book (and this was just the introduction chapter!).
    I’d just about given up on learning ML having attempted a bottom-up style, starting with some maths courses, only to discover that I didn’t even have enough knowledge to understand those so then I need to take even simpler maths courses… I was beginning to think I’d need to go back to school level basics before I could get anywhere.

    I don’t know why I approached it like this though, it’s certainly not how I learned to program nor how I would attempt to learn anything else, I guess there’s something about ML that feels a bit abstract and intimidating.

    Anyway I’m going to change my approach now and jump in and try to do something, I can work back from there if needed.

    • Jason Brownlee March 21, 2019 at 8:08 am #

      Thanks Pete, I’m so glad the post helped.

      Stick with it, I’m here to help if have questions about other ML terms!

  38. Daniel March 30, 2019 at 10:34 pm #

    i´ll start from here…

  39. Nick April 19, 2019 at 1:14 am #

    Jason, you’re the man!

    I agree with you totally.

    I worked with some of the most amazing programmers in IT. This was back in 2002 and these guys had created an application for the orthotics/prosthetics industry.

    They became the Microsoft of that industry. These guys created the application to solve a particular problem. None of them had taken any formal programming classes, and none of them had even started college. They just liked programming and would even create projects in their spare time. (They got their college degrees years after being professional programmers).

    I loved programming but I was awful at it. For every 25-50 lines of code I created these guys could do the same with 5!

    I thought that maybe I should take classes. I did take classes but it still wasn’t clicking.

    I think a part of the issue was that I wanted to solve a problem and there were already solutions. I’d get challenged to write a particular program, but then I’d think, “What’s the point? Someone already wrote one.”

    It wasn’t personal to me.

    It wasn’t until I got into SharePoint and SQL that things changed. I had no choice but to create queries and develop SharePoint apps specifically for my company at that time. I even ended up recoding parts of Procmail to process different file types back when I was a Linux admin.

    It took me a heck of a long time, and much of my code was crude (and even laughable at times) but I liked it and it was ‘me’.

    As time went on the theory I had learned started to click because my mind was relating it to something practical.

    I like writing stories quite a bit. Ever since I was a kid I’d write some adventure story or other. People liked my work but it needed “polish”. So I went and studied how to write novels, learned the rules of grammar, etc. But I started by writing stories that I liked and then connected to the theory later.

    In my opinion, a true sign of intelligence is how well a person can take a complicated topic and make it palatable.

    You’ve done that!

    I’ve always been interested in machine learning, but had no idea where to start. Thanks for your website and all your efforts. It’s pointing me in the right direction!

    • Jason Brownlee April 19, 2019 at 6:15 am #

      Fantastic Nick, thank you for sharing, it’s greatly appreciated.

      None of us are alone in this thing.

    • Ashabkaar July 19, 2019 at 9:30 am #

      First time going throug ML. I’m instructed by my final year supervisor to machine learning. But I’m curios to ML. I will be happy will all help/material/tools for ML. As it will be my final year project.
      I find this post extreme helpful. I do regard button-up approach and top-down approach. I’m novice to machine Learning. I’m curious to it. But pls help me with useful tools

  40. Jack June 11, 2019 at 1:32 am #

    I noticed you replied to a lot of the comments that most people will not need to create a new neural network architecture. That’s probably correct, but there are quite a few of us out there who like to work close to the metal, even if we don’t build a new car. Even in your analogy, I’m not comfortable merely driving the car. I have to know how the car works. I have to know the history. I don’t feel like I truly understand how to drive unless I know what’s inside the black or gray boxes.

    Practically speaking, this manifests (for me, at least) as a dearth of material connecting the top to the bottom. For speed, I have to start top-down, but eventually, I get to a place where all the top-down articles stop, or handwave something that’s really important. You search for more info, but all you can find are esoteric articles written for people who started from the bottom up, filled with jargon that only makes sense if you’ve steeped yourself in the bottom-up universe. In other words, there seems to be a limit on how far down you can go from the top in the top-down literature.

    • Jason Brownlee June 11, 2019 at 7:58 am #

      Fair enough, follow the approach that best suits your learning style.

      Perhaps. Once you learn the nomenclature for a field, diving deeper gets easier. It takes practice – e.g. learning what to focus on.

  41. Vinodkumar July 5, 2019 at 3:44 am #

    Thanks you Jason for such a great and amazing guidance.

    I just started with ML, tried different coerces and approach to study and understand the ML concepts but I like the approach suggested by you.
    I will follow it.

    Thank you

  42. Lloyd A. Courtenay July 13, 2019 at 7:50 pm #

    Fantastic post. I’m an archaeologist who used to struggle with maths… and because of this, I wouldn’t try to see how it could be applied. When I began hearing about the success of Machine Learning algorithms in other fields of science, such as medicine, it seriously caught my attention…

    I’ve been familiar with R for many years. In archaeology, many people frequently use R to do basic statistics. I always found using R relatively fun… because after hours of errors, the moment you get the code to actually work It always feels like you’ve achieved something. This got me into more advanced statistics in R and eventually Machine Learning. Through this you can probably say I followed what you call the Top Down approach. I began to find algorithms that worked, applied them to my data sets, then tried to find alternatives and other ways of achieving the best results possible. I eventually began playing around with Neural Networks and Deep Learning and was amazed at the results. I have to say a great deal of my success was thanks to Machine Learning Mastery books among other.

    After having found the success of applying these algorithms, I now feel a much more experienced programmer, especially in R, and have spent the last few months developing algorithms in Python. I’ve also began reading in to the fundamentals of Machine Learning theory, and now I think I can even say I quite enjoy maths and use it on a daily basis.

    I think the Top Down approach for many scientists from other fields interested in implementing these algorithms is the best way to begin learning about Data Science. For most archaeologists, they used to think what I do is science fiction… at least until they begin seeing the results I’ve been producing for the better part of a year now.

    Anyway, I really appreciate these posts and the books. I follow this website very closely and with it was able to develop my Master’s Thesis. I’ve just started research for my PhD research and can definitely say I’ll probably be revising these posts very closely over the next couple of years – highly recommendable

    Many thanks Jason and keep up the good work!

    • Jason Brownlee July 14, 2019 at 8:06 am #

      Thanks for sharing Lloyd, a wonderful and encouraging story.

      I wish you the best of luck with your PhD!

  43. Ansley July 18, 2019 at 12:43 am #

    Great article! I just want to share how I started learning ML, on 14th July 2019 I joined a meetup on TensorFlow 2.0 at Google Developer space without any prior knowledge of the subject. After the talk, we had an opportunity to play with TensorFlow and deploy it on Coral to perform object recognition. I truly enjoyed the event and I wanted to know more. I found the course TensorFlow in Practice in Coursera and for the past few days I’ve been learning it using the top-to-bottom approach. While doing my research I stumble upon your website and I’m glad I found it. Thank you. 🙂

  44. Ashabkaar July 19, 2019 at 9:33 am #

    Pls I need ur help. It is my final year project area. Need ur help. Please share inportant hint on ML tome @[email protected]

  45. Jacob August 10, 2019 at 8:46 pm #

    I am so happy I stumbled upon your website and found the top down approach, which is exactly the way I love to study, pick info on the go and for practically applicable purposes. I’m just beginning here after doing the course by Andrew Ng

    • Jason Brownlee August 11, 2019 at 5:56 am #

      Thanks. It’s great to have you here as part of the ML Mastery community.

  46. Hongbo Ai September 3, 2019 at 1:17 pm #

    do you write all posts yourselt, it is awesome.

    • Hongbo Ai September 3, 2019 at 1:19 pm #

      i am reading book of “Hands-on Machine Learning with Scikit-Learn and Tensorflow”, and trying to fix some basic competitions on Kaggle.

    • Jason Brownlee September 3, 2019 at 2:09 pm #

      Yes I do!

  47. Sumitha Sampath October 9, 2019 at 5:59 am #

    Hi Jason,

    I am a huge fan of your website. What I love the most is your approach to ML. In a subject that can be deeply technical/challenging, you are putting the person and the learner’s mindset ahead of the technical matter. Recognizing that people learn better in the context of achieving a result or solving a problem is key. The simple Iris example was a major confidence booster in an area where most people talk about complexities/mathematical modeling first. Congratulations on the making the positive impact you are and looking forward to learning more from your content.


  48. Ralph November 9, 2019 at 3:56 am #

    Like your thinking and your expression.


  49. Jeroen November 21, 2019 at 9:27 pm #

    I’m currently taking a bottom-up university math course due to guilt, math envy and insecurities from following a top-down approach. I’m noticing that it’s really hard to relate what I’m learning to what I use (so far), and this makes it hard to stay motivated. Time to revisit my approach, thanks for opening my eyes!

    • Jason Brownlee November 22, 2019 at 6:03 am #

      Yes, they are worlds apart.

      Like the theory of computation and programming.

  50. Jake November 23, 2019 at 6:00 am #

    Preach Jason!

    I must admit I have never found an article that reflected “exactly” how my journey into data science has gone thus far. I’ve also heard one of my favorite MOOC instructors state that “you can revisit and refine your understanding of the details at anytime; however, it’s far more important to have a framework of knowledge” (and I’m paraphrasing probably poorly).

    That being said, I will add one more reason why the bottom-up, university regurgitation SUCKS! By only expanding/developing on the work of few who originally paved the way (Newtonian physics for example), you completely disregard fundamental, potentially revolutionary pathways that allow for a larger diversity of thought/ideas. Unfortunately, the authors of these original works are the gatekeepers of new scientific publications, and let’s be honest, they are some prideful folks. I think I’ve overstayed my welcome on this reply; however, I want to thank you Jason for your candor and I too invite everyone to try the top-down approach! You’re not a robot!

    • Jason Brownlee November 23, 2019 at 6:57 am #

      Thanks Jake!

      I’m so happy the post rang true for you, thanks for sharing your experience.

      I see so many “practitioners” studying to become “academics”, like lemmings walking off a cliff. Such a waste of potential.

  51. Aigerim November 26, 2019 at 12:54 am #

    Hello, I was advised by my younger brother to read your point of view and how to understand everything in machine learning. The thing is, I’m in doctoral student and now I’m stuck at a certain stage of my PhD research, and I like your approach. I didn’t realize it before, but in life I moved in way you writing about. Theory has never been my strong side, I prefer a practical approach to things. Thank you, hope me this will help.

    • Jason Brownlee November 26, 2019 at 6:08 am #

      Thanks, I’m happy it helped!

      Hang in there and good luck with your research!

  52. Navneet December 8, 2019 at 1:47 pm #

    >>Are you following a top-down type approach but are riddled with guilt, math envy, and insecurities?

    When I went through those words, I was like is he in the same room as me!? That’s the exact feeling I had when I had just thought about taking up top-down approach. Thanks a lot for brushing away these feelings in the subsequent section. I still have a lingering feeling but I guess once I take the first few steps, things will get going and moving forward.

  53. Vijay January 24, 2020 at 8:43 pm #

    I’m so glad to find your website, this gave me motivation to get into machine learning after so much time thinking about on how to start

  54. jan February 9, 2020 at 3:36 am #

    You have PhD in applied Psychology. Lol 🙂 you know how to read people’s minds, you can profile people at first look. You have a balanced mindset and a very level-headed person. I can read you too with the way you write. probably more than 50% of your brain is being utilized at any single time. You are on your way to become a mutant. The AI machine itself should study you.

    Seriously, you know how people’s mind work.

    On the other hand, I think that AI has a long long way to go. But these contributions you are making help this world advance further.

    My thoughts on ML:
    Machine learning also cannot involve learning through senses like what a human being can do. We learn not only by visual perception but through touch, feel, hear, smell, taste not to mention human perception and imagination etc. You teach an “infant” AI by mimicking how you teach a toddler going to childhood to adulthood then AI can transcend what it terms as “training” to what I call as “experience” – just like what humans do we learn through experiences in life. My thinking is that if we teach an AI the way we teach a toddler and as the toddler grows he will have the same level of knowledge as an adult human being – only way way so much better.

  55. Ahmet April 8, 2020 at 8:58 pm #

    Thanks Jason,

    During Machine Learning courses I was feeling bad just because I did not understand the whole theory. Now, I realized that it is not necessary to get all logic behind math and stat, there is still some time to go back and think about them to understand better.

  56. Robby April 9, 2020 at 11:49 pm #

    I was not sure that I had started learning machine learning. However, after reading this blog I know I am. I recently jumped on Kaggle and went through the intro to machine learning and intro to Python. I am working on the Titanic problem now. I did not need 4 years of college to get to this point.

  57. indox April 23, 2020 at 8:27 pm #

    I have many cousins who migrated to middle east from India. They learnt arabic without any proper classes, only by practicing with people.

  58. Nima May 5, 2020 at 7:10 pm #

    Thanks a lot, it is really helpful, however, I’ve got a question. Now that I have very basic knowledge of Python and ML, how can I get involved in small projects? Where can I find them and join as a part of team or as an individual project? I don’t have a job in this field! I’m just sitting home learning it.

  59. Keith Bielamowicz May 18, 2020 at 10:35 pm #

    Dude. Thank you 🙏🏼 I am in the midst of combining a nine-year career in emergency nursing with a nascent understanding of Python (all things coding & programming really) with the intention of making a new career. My journey and curiosity led me to machine learning. I’m not sure what that means but your manner of gently explaining MCMC gave me the confidence to explore more machine learning with you. Let’s do this!!!

  60. Jagadish July 23, 2020 at 4:17 pm #

    Hi Jason, thank you for the wonderful post. I started learning in top down manner and it is quite successful. I need a small suggestion from you, i am going to start my Ph.D work soon and i would like to work in object detection / classification of images using Deep Learning. Can you help me what are the recent research problems in this area. or any other area in which there is a scope to work on.

    Thank you in advance

  61. husein October 26, 2020 at 1:05 am #

    that was fantastic jason.i started a top-down approach on programming 4 years ago, that was freaking fantastic.

  62. husein October 26, 2020 at 1:08 am #

    i started a top-down approach on programming 4 years ago, that was freaking fantastic.
    and lately i was about to make a mistake and start learning mathematics like a pro for machine learning, i didnt know about this approches, thanks for insight man, that was awsome 🙂

  63. MICHELE CAFAGNA November 11, 2020 at 10:06 am #

    Grazie Jason, per me sei stato chiaro esplicito e di grande aiuto, specialmente dal punto di vista psicologico.
    Non dimentichero’ mai cio che hai suggerito, facendolo in modo semplice e forte.
    I miei complimenti e ringraziamenti. Sei un grande .

  64. tiedurden December 29, 2020 at 3:22 am #

    The peptalk i needed.
    I have an idea for my bachelor thesis but always made myself believe I had to conquer it from the botttom even tho I got pretty far by learning to code on projects.
    Thank you very much !

  65. Nick December 29, 2020 at 8:18 pm #

    This is brilliant thanks a lot Jason ! This is exactly the reason university made me feel lost and I think your top-down really helps motivate people.

  66. Jean-Christophe Chouinard February 22, 2021 at 11:49 am #

    I have decided to adopt a top-down approach and try all the project that you have in your curriculum. It is way more exciting to start with projects. One thing I think is also good to help learning is to have a fixed cadence of learning. This is how I learned SEO, and how I will learn Machine learning. One article at the time. Thanks Jason

  67. Pete Kai C June 7, 2021 at 5:52 am #

    Fantastic article. I’m a top-down learner ordinarily but the world of programming seemed quite daunting for years (honestly even the jargon was like learning a second language, taking one look at the Python documentation gave me nightmares), so I opted to learn from the bottom-up. It isn’t my style and there aren’t many good tutors online, even with the large universities so finding a way to learn was difficult. Then I endured everything you listed; maths envy, insecurity, you name it. The biggest problem was feeling as if I *had* to learn like everybody else. I’m not much of a conformist and do pretty much everything differently to most, and learning like most proved nigh-on impossible.

    I started by looking at ML, finding I ‘got it’ pretty rapidly but decided I wanted a decent foundation, did the P4E course through the University of Michigan, almost every Python challenge online, a few HackerRank challenges, some LeetCode challenges, went through about 500 cycles of despair wondering what else I thought I had to do, which programming languages I thought I should pick up etc., learning maths, doing AI courses, then I went onto Kaggle and realised there wasn’t really anything to worry about! I still don’t like coding much but I love ML, it feels like a good place too be, everything seems to work logically, it isn’t OOP (coding trading algorithms is cripplingly boring), and the libraries are fascinating. I’m glad I got the foundation but I’m kicking myself for wasting weeks / months on HackerRank and LeetCode and stressing over what to do next when I should have gone straight to ML and picked up what I needed to learn this way. Anyway, it can’t hurt to have learned all that. And, great site by the way! I’ve looked at a metric s**t-ton of course material online and I think you have the best teaching style and material i’ve seen yet. Glad to have found your site.

  68. Vinod July 3, 2021 at 1:16 am #

    I have not started yet, but stopped many a times thinking how the hell am I supposed to catch up on so much of literature. Then it occurred – top down is the only way ahead and then I cam across your article. Thanks for writing this out, increases my willingness to learn.

  69. Barsha Banik August 13, 2021 at 5:09 pm #

    Its so good to get stumbled upon in your website as an ambitious data scientist…Truely am a fan of it…and it encourages me to learn.

    Thank you for the great effort and the article

    • Adrian Tam August 14, 2021 at 2:51 am #

      Thank you. Hope you enjoy it.

  70. hossein November 27, 2021 at 1:55 am #

    you are a great teacher ,
    I like your manner
    I wish you success.

  71. Kiran N S March 26, 2022 at 1:36 am #

    I liked the way you narrated the difference between bottom up and top down approach. While I have learnt many new things with top down approach, this narration makes it clear on how things can be learnt quickly. Thanks for putting this together.

    • James Carmichael March 28, 2022 at 8:00 am #

      Great feedback Kiran!

  72. Medini Kr. Bora April 9, 2022 at 8:26 pm #

    Great post!! Thank you Sir for sharing your knowledge.

    My knowledge is getting enriched after reading your blogs.

    • James Carmichael April 10, 2022 at 7:38 am #

      Great feedback Medini!

  73. Jonpaul June 10, 2022 at 10:30 am #

    I never attempted programming before my master’s and I had to do a research on AI, I wish I found this earlier, the painful thing is I understand what needs to be done but never confident of trying it out on my own, I am also scared of getting errors, I don’t know where to start when they occur

  74. Ali October 8, 2022 at 11:46 am #

    WOW that’s the coolest, the most helpful post, at least for me. Thanks a lot, Jason! Really appreciate it. In first semester at university I had a course on C programming, but I failed that subject) I thought I’m stupid and never gonna touch programming. But in my 4th year, one course covered intro to python. It was fun and then I took 2 courses of python in Coursera and got my first job due to these courses. At that job I had to look back to C again and I was shocked how easy and understandable it was) I didn’t realise it was top-down approach! I also failed some courses that seemed interesting at first, but got so boring and tough when I studied it. One of them was Signals and Systems. When it started topics like Convolution, Fourier Series, I got confused. Now, even late, I now how to learn such subjects!

  75. Ramesh December 17, 2022 at 9:59 pm #

    What can a doctor say? completely agree! Top-down approach is the way. I was taught medicine bottom-up. Out of medical school, still unable to make clinical diagnosis when I see a patient. What got me there in the end? Top-down approach; see the patient, what is his problem? what does he need? go back to books, pick what you want to study-make a diagnosis, go back again, what is the treatment? That is the way I finally learnt medicine. Knowing that, when I started learning python/ML this year, knew I need to go with top-down approach. When I read this post, how surprisingly similar thinking we both have!

    • James Carmichael December 18, 2022 at 10:19 am #

      Great feedback Ramesh! We greatly appreciate it!

Leave a Reply