# Preface

In the last few years, machine learning has become an increasingly important field in the majority of industries. Several processes once considered impossible to automate are now completely managed by computers, allowing human beings to focus on more creative tasks. This revolution has been made possible by the dramatic improvement of standard algorithms, together with a continuous reduction in hardware prices. The complexity that was a huge obstacle only a decade ago is now a problem that even a personal computer can solve. The general availability of high-level open source frameworks has allowed everybody to design and train extremely powerful models.

The main goal of the second edition of *Mastering Machine Learning Algorithms* is to introduce the reader to complex techniques (such as semi-supervised and manifold learning, probabilistic models, and neural networks), balancing mathematical theory with practical examples written in Python (using the most advanced and common frameworks). I wanted to keep a pragmatic approach, focusing on the applications but never forgetting the theoretical foundations. A solid knowledge of this field, in fact, can be acquired only by understanding the underlying logic, which is always expressed using mathematical concepts. This extra effort is rewarded with a more solid awareness of every specific choice and helps the reader understand how to apply, modify, and improve all the algorithms in specific business contexts.

Machine learning is an extremely wide field and it's impossible to cover all the topics in a book. In this case, I've done my best to cover a selection of algorithms belonging to supervised, semi-supervised, unsupervised, and reinforcement learning, providing all the references necessary to further explore each of them. The examples have been designed to be easy to understand without any deep insight into the code; in fact, I believe it's more important to show general cases and let the reader improve and adapt them to cope with particular scenarios. I apologize for mistakes: even though many revisions have been made, it's possible that some details (both in the formulas and in the code) got away.

In particular, the second edition corrects some typos and mistakes present in the first one, improves the readability of some complex topics, and is based on the most recent version of production-ready frameworks (like TensorFlow 2.0). Given the overall complexity of the work, I apologize since despite the hard work of the author and all editors, it's always possible to find imprecisions or errors.

I've finished this book in a particular period of my life and I'd like to dedicate it to my father, an artist and art professor, who has been always a guide for me, teaching me how it's always possible to join scientific rigor with an artistic approach. At the end of the day, data science needs creativity and, conversely, creativity can find in data science an extremely fertile soil!