# Introduction to Machine Learning for Developers

Whether you are integrating a recommendation system into your app or building a chat bot, this guide will help you get started in understanding the basics of machine learning.

**By Stephanie Kim, Algorithmia**.

Today’s developers often hear about leveraging machine learning algorithms in order to build more intelligent applications, but many don’t know where to start.

One of the most important aspects of developing smart applications is to understand the underlying machine learning models, even if you aren’t the person building them. Whether you are integrating a recommendation system into your app or building a chat bot, this guide will help you get started in understanding the basics of machine learning.

This introduction to machine learning and list of resources is adapted from my October 2016 talk at ACT-W, a women’s tech conference.

While this is only a brief definition, machine learning means we can use statistical models and probabilistic algorithms to answer questions so we can make informative decisions based on our data.

An excerpt from Rob Schapire’s Theoretical Machine Learning lecture in 2008 sums up machine learning very nicely:

Machine learning studies computer algorithms for learning to do stuff. We might, for instance, be interested in learning to complete a task, or to make accurate predictions, or to behave intelligently. The learning that is being done is always based on some sort of observations or data, such as examples…direct experience, or instruction. So in general, machine learning is about learning to do better in the future based on what was experienced in the past.

The two main types of machine learning algorithms are supervised and unsupervised learning. Unsupervised algorithms are great for exploring your dataset and are used for pattern detection, object recognition in images and other classification problems like recommendations based on similar items.

The k-means algorithm is a popular unsupervised algorithm that makes no assumptions about the data meaning it uses random seeds and an iterative process that eventually converges. This unsupervised clustering algorithm uses a distance metric with the goal of minimizing the Euclidean distance from the data points to a centroid, remeasuring and reassigning each data point to a centroid on each iteration.

This algorithm takes n observations into *k* clusters with each observation belonging to thecluster with the nearest mean, serving as a prototype of the cluster. This results in a partitioning of the data space into Voronoi cells. K-means is used in market segmentation,computer vision, geostatistics, astronomy and agriculture.

A model is a supervised algorithm if it relies on training data that already contains the correct label for each input and makes inferences based on that relationship to predict new unseen data. Supervised algorithms are often used for classification problems such as sentiment labeling, object detection in images, credit card fraud detection, and spam filtering to just name a few use cases.

The two main types of supervised machine learning are regression and classification. For instance a regression model is used for the prediction of continuous data such as predicting housing prices based on historical data points and trends. A classification model is used for the prediction of categorical data, for example assigning discrete class labels in an image classification model that labels the image as a person or landscape.

There are many types of supervised algorithms available, one of the most popular ones is the Naive Bayes model which is often a good starting point for developers since it’s fairly easy to understand the underlying probabilistic model and easy to execute.

Decision trees are also a predictive model and have two types of trees: regression (which take continuous values) and classification models (which take finite values) and use a divide and conquer strategy that recursively separates the data to generate the tree.

Neural networks is a model inspired by how biological neural networks solve problems and can either be supervised or unsupervised. Neural networks that are supervised have a known output and are built in layers of interconnected weighted nodes with an output layer that gives us a known output such as an image label.