Course abstract
If you are curious about what Machine Learning is about, and want to sharpen your developer skills, come with your laptop and… let’s hack together!
In this workshop with Mathias Brandewinder, you will be working on real-world datasets, applying a variety of machine learning techniques, using a functional programming approach.
In the process, you will gradually learn simple but fundamental and widely applicable machine learning ideas, and develop a sense for what it means to “do machine learning”, and how it is similar and different from writing “normal” code.
Rather than taking an abstract mathematical view of machine learning or jump straight into frameworks, we will implement together a selection of classic prediction algorithms, across datasets illustrating different practical problems you will encounter.
By coding things from the ground up, you will develop an intuition for how things actually work inside the black box, what types of techniques are available and the problems they are suitable for, and some of the potential issues you need to watch out for.
And, as we work our way through different problems, you will be gradually introduced to F# and functional techniques and how they are helpful.
Beyond F#, many of the ideas presented are applicable to other languages, functional or not… come along if you want to deep dive on Machine Learning!
Program
- We will explore a variety of problems, using 4 different datasets, looking at questions such as automatically recognizing what number is in a picture, detecting what language a piece of text is written in, predicting usage of a service for a particular day using historical data, or (perhaps the most important one) whether a wine is any good, based on its chemical profile.
Each dataset covers common different situations you might encounter: numerical and categorical inputs, and text, to a lesser extent, because natural language processing is a very large topic all by itself. - We will cover a wide range of techniques, to establish a good understanding for the overall machine learning landscape: what tools exist, what problems they are useful for, and simply what they are called – searching for things when you don’t know what they are called is hard! Specifically, we will present classification and regression prediction techniques (k nearest neighbors, perceptron/logistic regression, decision trees and random forests, classic regression), and unsupervised techniques that are useful to extract information from larger datasets (k-means clustering, principal components analysis).
- We will discuss neural networks, but only at a high level.
- We will emphasize primarily simple techniques that are broadly applicable. Rather than jumping directly into libraries, we will program algorithms from the ground up, using code as a vehicle to explore mathematical ideas in an interactive and concrete way, and build an intuitive understanding of how things work. In the process, we will see that the fundamental ideas are less complicated than they appear, and that seemingly quite different problems and techniques are in the end quite similar.
- We will code everything in F#, in the scripting environment (we will use the Code editor, but any other IDE or editor running F# should do). Each problem is designed to be F# beginner friendly and uses interactive scripts where language concepts and syntax are progressively introduced, in the context of the problem at hand.
- In the process, you will learn how functional programming techniques can be used to great effect for data manipulation and exploration, from reading data with type providers to reshaping it with pipes and filters, and more. Beyond F#, many of the ideas presented are applicable to other languages, functional or not.
Machine learning and regular development both involve writing code, but are subtly different.
Throughout the workshop, we will highlight these differences, and share practical tips on what to look out for, and emphasize setting up a workflow / methodology to enable reliable feedback and avoid common pitfalls.
What you will learn
By the end of the workshop, you will…
- Understand the language used in machine learning discussions
- Know how to search for tools to solve your issues, and evaluate them
- Be comfortable using F# scripts to explore and manipulate data
- Setup machine learning experiments to iteratively build prediction models
- Have picked up new ideas that will make you look at code differently
- Have had quite a bit of fun hacking at code together!