Practice makes perfect. That is so absolutely true about coding! Especially when it comes to machine learning and those algorithms that come with it. In this post we tried to cover some info on how you can be effective when implementing a machine learning algorithm and what conclusions you can draw from the coding process.
What’s the fuss about?
Before we proceed to the core of the issue, let us remind in short what Machine Learning essentially is.
As you surely know, Machine Learning (ML) is one of the spheres of application of Artificial Intelligence (AI). In the framework of ML, IT systems are engaged in an automatic learning process based on experiences (data) and evolve without an explicit need to resort to programming them. Basically, we may say that Machine Learning is focused on the development of software that utilizes data for pattern recognition.
However, for Machine Learning to function properly and the software to make decisions, we need to train our algorithms. If we provide it with good training data and examples, it can then recognize patterns and dependencies and thus learn from data. We call this process model training.
How does it work? Well, in short
The learning process starts with a prepared dataset (training dataset), which Machine Learning algorithms examine for patterns and dependencies. If this process ends successfully, the trained model will evaluate unknown data, which helps to make better decisions using these prognoses. The main goal here is to learn automatically without human intervention and to adapt actions accordingly.
The development of a model is an interactive process, which is often carried out several times until the result attains a certain quality level.
There are plenty of fish in the sea
For a start, let us briefly see what different algorithms used in Machine Learning we may employ. Actually, you can use these for practically any analytical problem.
Where can we find it?
Just a small and smart picture to illustrate where you can find ML without even noticing it.
Surely there are other examples of spheres of ML application such as maintenance of equipment or supply chain management. To put it simply, possibilities are unlimited.
How to implement machine learning algorithms?
There is no universal recipe for a successful implementation of machine learning algorithms. So we won’t be trying to cover it all. Below there is just some basic stuff that you may find useful.
In general, we may surely say that if you want to get a deeper and more practical understanding of how machine learning algorithms work, implementing one as a training exercise is the best way to reach this goal. In addition, you will be able to internalize the algorithm and its mathematical description since you will regard vectors and matrices as arrays and computational intuitions for transformations on those variable structures.
To implement machine learning algorithms, you are required to work through a wide range of micro-decisions which formal algorithm descriptions often lack. If you manage to learn and parameterize such decisions, you’ll soon find yourself at an intermediate or even advanced level of managing the ML process.
What is the process after all?
Of course there are certain patterns and procedures you may follow to enhance your abilities to implement a ML algorithm all by yourself starting from nothing. Show no doubt — the more you implement the faster you learn and the more efficient and more customized your own process of working with algorithms becomes.
Below we present you with an example that you are welcome to embrace and incorporate into your practice.
- Language. This choice affects APIs and libraries you can resort to in your implementation of machine learning algorithms.
- Type of Algorithm. The more specific you are the better. Go deep into the class, types, description and implementations you want to put into practice.
- Problem. Choose a problem or a few of them to test and validate how successful your implementation has been. ML algorithms hardly ever exist in isolation.
- Research. Look through books, websites, libraries and any other materials you can read and obtain descriptions of the algorithm from. Ideally, it would be nice to have one major description of the algorithm to proceed from, but multiple perspectives on the algorithm is anyway preferable. They may come in handy if you want to work through the algorithm description at a faster pace. Also, it will help you to overcome roadblocks caused by ambiguities or assumptions.
- Test. It’s better to have unit tests written for each function. Thus you will be able to grasp the purpose and expectations of each code unit prior to implementing them.
If you want to accelerate your progress along this path, we may advise you to port algorithms from one language to another. There are multitudes of open source implementations that you can code review and reimplement in another language.
On the other hand, you can open source your code during and after its development, adding solid comments and instructions on how one can build and use it. In doing so, you will market your skills, or be a source of inspiration for some beginners, or even come across a fellow ML programmer who may be interested in performing an audit or code review for you. Anyway, any feedback is always welcome, isn’t it?
If you have chosen to implement a machine learning algorithm by hand, you get an extra chance to develop valuable skills. Some of them will obviously help you in mastering the algorithm, others — in production system development, while certain remaining skills may be used for classical research in the domain.
Let’s consider some examples at a closer proximity:
- Master Your Algorithms. Algorithm implementation is the first step towards mastership. During the implementation process, we have no other choice but to inspect the algorithm in detail. What is more, you become the creator of your own lab for taking trouble over computation, debugging and introduction of extra measures to assess the running process.
- Development of Production Systems. Typically, custom implementation of ML algorithms takes place in production systems which require certain changes to be introduced into the algorithm for it to exhibit maximum efficiency. What do all businesses need? Lower costs and greater revenue. That is why results have to be better, faster, stronger. And that is where implementing algorithms by hand may prove to be immensely useful.
- Reference Review. To achieve results, you definitely need to perform research by reading multiple descriptions of the algorithm. Furthermore, you will be locating and code reviewing other implementations of the algorithm to prove that you’ve understood everything correctly. This is targeted research, and by performing it you will learn how to make good use of research publications.
As simple as it may sound, you must understand your algorithms to become good at machine learning. Right after the implementation is over, you can start with introducing improvements to the implementation, be it experiments, optimization, specialization or generalization. And as technologies develop and the situation in the world is constantly changing, you will see that there is always room for improvement.