Learn machine learning, but don’t know how to start? Tried a variety of learning methods, why is still a layman? Why are traditional approaches to machine learning slow to take hold?
As a programmer with a passion for machine learning, how do I start?
If you have the same confusion, this article is recommended.
I was a software developer who wanted to get into the AI industry. To get up to speed, I read books on machine learning, browsed a few posts, and took a Coursera course on machine learning.
But, but, still don’t know how to start… .
Do you have the same experience?
Images are copyrighted by Peter Alfred Hess
A lot of developers ask me: How do I start learning machine learning?
I can’t remember how many people have asked that question. In view of this, I wrote a special article to answer your doubts. Through this article, you will know:
-
Why didn’t traditional teaching methods work?
-
How to turn the traditional framework of teaching machine learning on its head.
In addition, I will share with you my experience in learning machine learning.
Get into the business
I’ve tried everything, but I still don’t know where to start
Based on my past experience, I can imagine some of the things you’ve tried to do, such as surf the web for blog posts, take a machine learning open class at Stanford, try to get a deeper understanding of machine learning concepts and models, try to deal with small data sets, and still feel blocked.
I’ve tried everything, but I still don’t know where to start
The problem, in my opinion, is that you have not yet formed a body of knowledge of the theories, algorithms, and mathematics you learn from textbooks and videos.
Deepen your understanding in real work situations
Assuming that you already have a number of discrete knowledge points, the best way to think about forming a system is to think about them in real situations. Here are a few scenarios:
-
Scenario 1: Disposable model
One day your boss says to you: Xiao Li, do you know anything about machine learning? Can you use last year’s customer data to predict which customers in our sales channel are likely to renew with us?
I call this the disposable model.
Ask questions from your boss. The data he gave was so small that it could be opened in Microsoft Excel. But he needed accurate and stable predictions. You can deliver, and you can add to the end result.
-
Scenario 2: Embedded model
You and your team collect requirements for party A’s software project. You learn that the best (or only practical) way to solve a problem is to design and train a predictive model and embed it in your software product.
I call this an embedded model.
There are also some variations (is the model fixed, or will it be automatically updated periodically? Is it run locally? Remote access via API?) But these are just details.
The point in this scenario is that you have experience identifying a requirement that is best addressed using a predictive model, and that you have the ability to design, train, and deploy that model.
-
Scenario 3: Depth model
You start a new job on a system that consists of at least one predictive model. Whether you’re maintaining a system or adding functionality, you need to have an understanding of the model, what its inputs are and what its outputs are.
Model prediction accuracy is a very important indicator of software products, and your job responsibilities include improving model prediction accuracy. For example, when testing a pre-release system, you can’t show a model that is less accurate or more accurate than the last version.
I call this the depth model.
You need to develop a deep understanding of a particular predictive model and use your experience and skills to improve and validate its accuracy.
All three of these scenarios have been experienced by me.
It makes one thing very clear — while machine learning is a fascinating field, to a software developer it’s just another set of skills, like multithreaded programming or 3D graphics programming. Machine learning, however, is designed for specific classes of problems.
How can traditional approaches lead to machine learning
Find a few books on machine learning, and you’ll find that they tend to start with basic definitions, then elaborate mathematical formulas, and finally very complex algorithms.
The traditional answer is bottom-up
The definition of basic concepts and the presentation of mathematical theory are clear, concise and unequivocal. However, they are very dry, boring, and require a mathematical background to analyze and understand.
Is that why universities put machine learning in their graduate programs? Because teaching the fundamentals of machine learning requires years of foundation.
For example, it suggests you have the following basics:
-
statistical
-
The probability of
-
Linear algebra
-
Multivariate statistics
-
Differential and integral calculus
If you stray into some strange, interesting algorithm, your machine learning path will be worse.
This bottom-up and algorithmic approach to learning machine learning is everywhere.
MOOCs and YouTube courses also teach machine learning in the same way that universities do, which is fine if you have the basics or if you’ve already invested a lot of time in these advanced courses. However, this doesn’t work for most software developers.
If you go to Quora, StackExchange, Reddit and ask how to get started on machine learning, you’ll probably get the same response.
No wonder some software developers keep looking for the right approach, only to end up having to go back to school and get a graduate or PhD degree so they can start learning machine learning.
Think about this bottom-up approach to machine learning. It’s more rigorous and systematic, and it sounds fine, but how could it go wrong?
Why is traditional learning wrong?
Let’s say you’re a young software developer. You have more or less learned some programming languages. Now you are ready to learn how to develop a stand-alone software.
You tell your friends and family that you want your job to be programming every day. But they tell you you need a degree in computer science before you can become a programmer.
And so you begin your degree in computer science. Semester after semester, you learned the hard math of linear algebra, calculus, and discrete math. You’re using an outdated programming language. It’s all killing your passion for programming and software development.
There is a gap between traditional learning methods and becoming a practitioner
You may have successfully completed your studies, only to realize in retrospect that you didn’t learn a single modern software development skill, language, tool, or anything else you could have used to develop software.
Have you seen a similar case of teaching machine learning?
Fortunately, programming has a long history and we have found the right way to teach young programmers relevant skills.
There is no need for a learning programmer to learn computing theory or computational complexity theory, or the minutiae of algorithms and data structures. The details of algorithmic complexity and data structures can be learned later. You might want to focus on a particular set of tools, from the point of view of an engineer who does programming and can deliver software.
If a software developer wants to do machine learning, do they really need to spend years and a lot of money on math and advanced degrees?
The answer is definitely no! There’s a better way
Start machine learning with the right posture
Like computer science courses, which never focus on the practical skills needed to develop and deliver software, machine learning courses and books have the same shortcomings.
For machine learning, you need a top-down approach. This approach is more about results: solving real machine learning problems with the best combination of tools and platforms.
Top-down learning machine learning
Here are my favorite learning methods
1. Iterating results through a systematic process
Once you know how to use tools, solving problems through machine learning algorithms is relatively easy, and you call it “perfect.”
This is very dangerous.
How do you know you’ve solved the problem perfectly? How do you know this is for the best? How do you know that this result is reliable on this data set?
When you use machine learning to solve related problems, you need to be systematic. This is a project, like software development, where quality results can be achieved through good handling and improved through constant iteration.
If you think about the flow of such a system, you can think of some specific requirements, such as:
-
The flow of a system can take you all the way through, from a particular problem to the presentation or deployment of the results. As with software development projects, you may think you’re done, but you probably aren’t.
-
A systematic process can take you step by step through your tasks so that you know exactly what to do next. Not knowing what to do next is a project killer.
-
A systematic process can guarantee good results, that is, results that are better than average or far exceed the requirements of the project. In projects, results are often required with a degree of reliability, not necessarily with the best accuracy.
-
The flow of a system is not tied to a particular tool, programming language, or algorithmic model. The tools used are constantly updated, so the process must be adaptable. Given the academic pursuit of algorithms, new and better algorithms emerge all the time.
Choose a systematic, iterative process that continually improves the results you deliver.
There are a lot of high quality systems, including older systems, that you can tweak to fit your needs.
2. Choose the best combination of tools for your system process
Machine learning tools and libraries are constantly being updated, but at any given moment you have to choose the best combination of tools for your chosen system process.
You don’t need to validate and select any old algorithms or libraries, you need a so-called best combination that gives you fast, reliable, high-quality results and is as automated as possible.
However, you need to choose your tool mix based on your needs.
For example, for the above three scenarios, I recommend the following tool combination:
-
One-time models: Using the Weka platform, it is possible to load CSV in a very short time, design an experiment, and get the best model, with almost different programming (see my rundown of this process).
-
Embedded predictive models: Using the SciKit-learn library in Python, I can develop models in the same language. IPython is a great way to show your team how your model is working. MLaaS is a good choice for big data.
-
Deep Models: THE R language, on the R platform, I can quickly and automatically try many of the highest level models.
In fact, the combination of the three tools in these three cases also depends on the particular application scenario.
As with software development, you need to learn how to use these tools so you can get the most out of them. You also need to keep an eye on the industry and use better tools. As better tools are released, you can constantly adapt them to fit your system’s flow.
Open your projects selectively
Software development skills are acquired by developing a large number of software products. For machine learning, you can use a similar approach.
-
Choose your practice data set carefully
You are better off choosing a real data set than an artificial one. There are now a large number of data sets out there of varying complexity.
I recommend starting with some small data sets, available from the UCI Machine Learning library. They are well known, relatively simple, and suitable for beginners to learn using machine learning algorithms for system processes and related tools.
After that, it is highly recommended to use some larger data sets, such as those provided by Kaggle and KDD contests. They are a bit messy and require more different skills.
Stick with tabular data. This is my advice to all students.
Processing image and text data (computer vision and natural language processing, respectively) is a new and different field. They will require you to use certain methods and tools specific to the field. If you want to work with this type of data, you’d better start there.
In another blog post, I explained in detail how to make an open portfolio of exercises. “How to Practice Machine learning Algorithms, starting with small data from the UCI Machine Learning Database”
-
Document the results and establish a public set of projects
Keep track of what you did and learned in a separate document. For reference in other projects.
This is similar to how software developers often put each software project in a folder and use code and ideas from previous projects. This can greatly speed up development and is highly recommended.
Organize your notes, code, and generated images, but it’s also important to write down what you find. Think of this as a comment to your code. A stand-alone document can be as simple as a powerpoint or text file, as elaborate as a speech, or as good as a YouTube video.
Commit each project to a public version management repository (such as Github) so that other newcomers can learn from your experience and expand on it. Link to your project on your blog, LinkedIn, or any other public form to showcase your skills and capabilities.
For more information on this idea, please refer to my other blog post “Building a Machine Learning Public Project Set: Focus on completing small projects and demonstrating your skills.”
Posting and maintaining projects on Github has become an essential part of a developer’s resume, especially if the company is particularly focused on skills and project experience.
This is a learning method for software developers that you can apply to machine learning.
Is that enough for machine learning?
Still, you have questions. For example, as a beginner, do I need to write code, do I need to be particularly good at mathematics, do I need a higher degree, do I need to learn knowledge related to big data, etc.
Ha, don’t worry. We’ll talk one by one.
1. A lot of code?
Not necessarily.
You could be a web developer or something, and you don’t have to write a lot of code. You can use this method to start learning and using machine learning. Tools like Weka make it very easy to design machine learning experiments and build models, and require no programming at all.
Being able to write code makes it easier to use many different tools, but it’s not necessary, and you don’t have to learn it first.
2. Be good at math?
Don’t have to.
Just like software development, you don’t have to understand concepts like computational complexity or Big O to write code and deliver useful and reliable software products. You can work in machine learning, and you don’t need a background in statistics, probability theory or linear algebra.
We don’t start with theory, but we don’t ignore it. When an algorithm is needed, it is important to learn and understand the method or algorithm in depth. You actively learn about math because, in your quest for better results and more accurate predictions, you search for as much information as you can and learn as much as you can to solve your existing problems.
If your goal is to master the theory, this approach is slower and less effective. But for a software developer committed to machine learning, it works.
Do I need an advanced degree?
Don’t need.
With today’s Internet, you can easily acquire knowledge about machine learning without having to spend a lot of time and money to get an advanced degree.
It is recommended that you think about the next real machine learning problem before you think about getting an advanced degree, and then think about whether you really need an advanced degree so that your understanding of the field will become clearer.
As for me, I got a higher degree. I like doing research, but I also like solving practical problems, and my clients are satisfied with my solutions. But I worked on machine learning for a while before I went on to get a higher degree. I didn’t realize I already had the resources and methods.
That’s why I want to convince you to start machine learning, because you already have the foundation
4. Do you need to start with big data?
Don’t need
Machine learning algorithms are best learned and understood from small data. Small enough to be opened using Microsoft Excel software, loaded into memory, or run on your workstation.
Big data! = Machine learning. You can use big data to build a predictive model, but that’s just a specific performance of the skills you have in a particular area. I generally advise my students to start with small data when they start learning machine learning.
If you’re learning machine learning to deal with big data, start with big data.
5. Do I have to have a laptop?
Don’t need
Indeed, some of today’s most sophisticated algorithms, such as deep learning, require tens of millions of computing units, multiple Gpus working together. However, these algorithms can still be used to solve relatively small problems, and the amount of computation is more than your current CPU can handle.
You don’t have to be stuck in machine learning just because you don’t have access to high-performance computers.
Before you’re ready to buy a high-performance computer or rent a very large EC2 virtual cloud server, take the time to learn how to leverage existing algorithms as much as possible on small, easy-to-understand data.
6. Does a beginner need to spend a lot of time
As I said before, working on machine learning algorithms is addictive. If you entered a machine learning algorithm contest, you would gladly sacrifice a month of evening TV viewing to improve the algorithm’s accuracy.
That said, if you start with a clear system and the best set of tools, it could take an hour or two, or a night or two.
You can break tasks into smaller tasks and post them on a kanban board.
What are the obvious mistakes developers make,
How to avoid it?
1. Not taking action
Everything is set up, but I still see some software developers not taking action. Watching TV or the news is far easier than sitting around building a new model and learning an important skill.
2. Choosing a difficult question
I often see software developers start with one or two very difficult data sets. That’s a very large, very complex data set. However, these software developers do not have the ability to analyze this data. What’s worse, such a setback will kill their motivation to learn, so much so that software developers will drop out of their learning plans.
Choose a small problem, preferably one that you can complete in 60 minutes or less. Keep doing this for a while before moving on to bigger challenges.
3. Not sticking to established procedures
Being involved in an Agile development process can be difficult and often disastrous if you stray from it. It is important to follow through on agile processes as a systematic approach to problem solving.
You may find some “interesting issues” during development, but be sure to complete the development process first and deliver on time.
4. Not using resources
For machine learning, the web is full of excellent papers, books, and blogs. You can use these resources to improve your system processes, tool skills, and model accuracy. Use third-party sources to access more algorithms and data sets, gain an in-depth understanding of algorithms and problem frameworks, and a creative idea that will change the course of your project. Remember, if you’re taking a top-down approach, you have to do theoretical research at the end. Take the time to understand your final model.
Don’t make any of these mistakes.
The next step
We’ve talked a lot about this, and I hope I’ve convinced you that you can start and keep making progress in machine learning. In the future, you will be in high demand as a software developer who also knows machine learning algorithms.
Your next step is:
-
Choose a process for designing and using a machine learning algorithm system
-
Choose the right tools and platforms
-
Select your first data set
-
Leave a comment below the blog
Bonus: The following mind map summarizes some of the most important concepts in this blog.
The original:
Machinelearningmastery.com/machine-lea…
Want to receive ai-related high-quality technical content first time every day?
Scan the qr code to follow the public account: AI training field