Алгоритм неконтролируемой кластеризации на основе плотности, устойчивый к выбросам

Вы узнаете, что такое DBSCAN, как он работает, плюсы и минусы DBSCAN и, наконец, реализацию.

Что такое DBSCAN?

DBSCAN - это пространственная кластеризация на основе плотности для приложений с шумом, неконтролируемый алгоритм кластеризации, который находит основные образцы с высокой плотностью и расширяет кластер из них.

  • Группирует данные в области с высокой плотностью, разделенные областями с низкой плотностью.
  • Кластеры, образованные DBSCAN, могут иметь любую форму и не обязательно выпуклой.
  • Это неконтролируемый детерминированный алгоритм кластеризации, который возвращает те же кластеры с теми же данными в том же порядке; однако при изменении порядка данных вы можете получить другое формирование кластера.

Как работает DBSCAN?

DBSCAN - это алгоритм кластеризации, предназначенный для обнаружения кластеров и шума в наборе пространственных данных.

DBSCAN построен на предпосылке, что в каждом кластере у нас есть высокая плотность точек по сравнению с точками за пределами кластера. Плотность в областях шума ниже, чем плотность в любом из кластеров.

Несколько точек будут близки друг к другу в зависимости от расстояния, называемого образцами керна. Несколько образцов будут близки к образцам керна, но могут находиться на краях кластера, называемых граничными точками или образцами, не являющимися образцами керна и несколько образцов, которые могут быть очень удалены от керна и пограничные точки, основанные на измерении расстояния, считаются выбросами.

DBSCAN имеет два ключевых параметра для определения основных, неосновных или пограничных образцов, а также выбросов.

min_sample: это минимальное количество выборок или точек в окрестности точки , включая точку, чтобы ее можно было идентифицировать как ядро. точка, неосновная точка или выброс.

eps: Параметр, задающий радиус окрестности, представляет собой максимальное расстояние между двумя точками, которые считаются соседними.

Параметр eps необходимо правильно выбрать для набора данных, поскольку он определяет количество точек в окрестности. Когда eps маленькие, большинство точек не будут сгруппированы и могут считаться шумом. Когда eps большой, близкие кластеры объединяются в один.

Подводя итог, DBSCAN основан на концепции

  • Основные образцы: образцы в области с высокой плотностью пикселей и имеют min_sample точек по соседству с радиусом eps.
  • Пограничные или неосновные образцы: образцы близки к образцам керна, но не являются образцами керна, но достижимы до точки керна. Неосновные образцы лежат в пределах радиуса eps точки ядра, но могут не иметь min_samples в своей окрестности.
  • Выбросы: любой образец, который не является частью основного образца или пограничного образца и находится на определенном расстоянии от образцов керна в зависимости от набора параметров для DBSCAN. Выбросы лежат за пределами радиуса eps центральной точки и не имеют точек min_sample в своей окрестности.

Кластер DBSCAN удовлетворяет двум свойствам:

  1. Все точки в кластере должны быть взаимно доступны.
  2. Если точка достижима из некоторой точки кластера, она является частью кластера.

Плюсы и минусы DBSCAN

Сильные стороны DBSCAN

  • DBSCAN отделяет кластеры с высокой плотностью от кластеров с низкой плотностью в наборе пространственных данных.
  • DBSCAN устойчив к выбросам.
  • В DBSCAN кластер может иметь произвольную форму и не ограничивается кластером выпуклой формы.
  • Количество кластеров указывать не нужно, в отличие от K-средних.

Слабость DBSCAN

  • Чувствителен к выбору значения для двух ключевых параметров, min_sample и eps.
  • Порядок данных влияет на кластеризацию.
  • DBSCAN борется с набором данных, имеющим кластеры схожей плотности.

Выполнение

Здесь используется набор данных кредитной карты.

Цель состоит в том, чтобы разработать сегментацию клиентов для определения маркетинговой стратегии с помощью кластеризации DBSCAN.

Импортировать необходимые библиотеки

import numpy as np
import pandas as pd
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import normalize 
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
%matplotlib inline

Прочтите файл CSV

df = pd.read_csv('CC_GENERAL.csv') 
df.head(2)

Очистка данных и обновление отсутствующих значений

# Dropping the CUST_ID column from the dataframe
df = df.drop('CUST_ID', axis = 1) 
  
# Handling the missing values 
df.fillna(df.mean(), inplace = True)

Масштабирование и нормализация данных

# Scaling the data to bring all the attributes on same range 
scaler = StandardScaler() 
X_scaled = scaler.fit_transform(df) 
  
# Normalizing the data for normalized distribution
X_normalized = normalize(X_scaled) 
  
# Converting the numpy array to a DataFrame 
X_normalized = pd.DataFrame(X_normalized)

Уменьшите размерность данных для визуализации

pca = PCA(n_components = 2) 
X_principal = pca.fit_transform(X_normalized) 
X_principal = pd.DataFrame(X_principal) 
X_principal.columns = ['V1', 'V2']

Примените DBSCAN

Вы можете изменить значение eps и min_sample, чтобы получить другую кластеризацию. Знание предметной области поможет выбрать правильные значения для параметров DBSCAN.

db = DBSCAN(eps = 0.036, min_samples =4).fit(X_principal) 
labels = db.labels_ 
print(np.unique(labels))

label_: метки кластера для каждой точки в подобранном наборе данных. Всем образцам с шумом присваивается метка -1.

Добавьте значения кластера в исходный набор данных.

df['cluster']=db.labels_
df.tail(3)

Визуализация кластеров, сформированных DBSCAN

Cluster_color = {0: u'yellow', 1: u'green', 2: u'blue', -1: u'red'}
# Building the colour vector for each data point 
cvec = [Cluster_color[label] for label in labels] 
plt.figure(figsize =(12, 12))
plt.scatter(X_principal['V1'], X_principal['V2'], c = cvec)
plt.show()

Вывод:

DBSCAN, Пространственная кластеризация приложений с шумом на основе плотности, представляет собой алгоритм неконтролируемой кластеризации, предназначенный для обнаружения кластеров и шума в пространственной базе данных. Он основан на предпосылке, что у нас есть высокая плотность точек в каждом кластере по сравнению с точками за пределами кластера. Кластеризация выполняется с использованием соответствующих значений параметров для eps и min_sample.

Использованная литература:

Алгоритм на основе плотности для обнаружения кластеров в больших пространственных базах данных с шумом

Https://en.wikipedia.org/wiki/DBSCAN



Https://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html