The Isolation Forest algorithm is an unsupervised learning algorithm for anomaly detection that works on the principle of isolating anomalies, instead of the most common techniques of profiling normal data points. It has shown high detection rates with lower computational cost, compared to classical anomaly detection methods. This blog post introduces you to the Isolation Forest method and how you can implement it in Python.
The Isolation Forest 'isolates' observations by randomly selecting a feature and then randomly selecting a split value between the minimum and maximum value of that selected feature. The logic argument goes: isolating anomaly observations is easier because only a few conditions are needed to separate those instances from the normal observations.
The number of conditions required to separate the sample is representative of the anomaly score. Anomalies require fewer conditions to be isolated compared to regular points, thus anomalies have lower path lengths on an average.
The anomaly score is then used to identify which points are anomalies.
To start the implementation, we need to install the necessary libraries, namely numpy
, pandas
, matplotlib
and the Scikit-Learn
machine learning library.
# Installation of the libraries !pip install numpy pandas matplotlib sklearn
Next, we import the packages needed for implementing the Isolation Forest Algorithm.
# Importing the libraries import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.ensemble import IsolationForest
We can then create synthetic data using numpy
and apply the Isolation Forest model to it.
# Creating synthetic data rng = np.random.RandomState(42) X = 0.3 * rng.randn(100, 2) X_train = np.r_[X + 2, X - 2] X_test = np.r_[X + 2, X - 2] clf = IsolationForest(max_samples=100, random_state=rng) clf.fit(X_train) y_pred_train = clf.predict(X_train) y_pred_test = clf.predict(X_test)
We can visualize the results using matplotlib
.
# Visualize the results plt.figure(figsize=(10, 7)) plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred_test) plt.title('Visualization of the data points') plt.show()
The graph shows the separation of anomalies with the help of the Isolation Forest method.
In conclusion, the Isolation Forest is a highly efficient algorithm for anomaly detection, especially when applied to large, high-dimensional datasets. Its success is owed to its use of a completely different approach to identify outliers, which proves to be faster and more accurate against deception attacks in particular.