Руководство по использованию неконтролируемого машинного обучения с кластеризацией K-средних

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

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

Кластеризация K-средних через scikit-learn

Образец кластеризации

Scikit-learn — это библиотека машинного обучения, доступная через Python. Его можно использовать для создания алгоритмов машинного обучения, чтобы делать точные прогнозы. Модель кластеризации K-средних была импортирована через scikit-learn с использованием приведенного ниже кода.

from sklearn.cluster import KMeans

Набор данных был необходим для использования модели кластеризации K-средних. Таким образом, набор данных о рейтингах книг Goodreads был загружен с Kaggle и загружен в Jupyter Notebook. Затем были извлечены числовые переменные, такие как средний рейтинг, количество страниц, количество оценок и количество текстовых обзоров. Используя эти четыре переменные, можно было подогнать кластер K-средних к набору данных.

Следующим шагом было выяснить количество кластеров (групп), которое было бы оптимальным для разделения набора данных на разумные группы. Попробовав разное количество кластеров, можно было рассчитать их инерцию. Инерция кластера K-средних является мерой того, насколько последовательными и отличительными являются кластеры. При построении графика зависимости инерции от количества кластеров оптимальное количество кластеров выбирается в точке, которая создает на графике локтевую структуру. Это делается потому, что увеличение количества кластеров за пределами точки изгиба не сильно меняет значение инерции и в конечном итоге приводит к созданию ненужных дополнительных кластеров/групп.

Поэтому в качестве количества кластеров было выбрано четыре кластера. Затем он был подогнан к набору данных книги goodreads, чтобы присвоить метки точкам данных.

kmeans_book = KMeans(n_clusters = 4)
kmeans_book.fit_predict(books_df)

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

Кластеризация как форма предварительной обработки

Кластеризация K-средних также может использоваться в качестве метода предварительной обработки при построении алгоритма машинного обучения. Это можно сделать, создав конвейер, в котором кластер K-средних применяется к независимым переменным для измерения расстояния каждой точки данных от центров кластеров. Затем можно применить классификатор для маркировки данных на основе расстояния точек данных до центров кластеров.

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

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state = 10, train_size = 0.8)
pipeline = Pipeline([("kmeans", KMeans(n_clusters = 2)), ("dec", DecisionTreeClassifier())])

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

pipeline.fit(x_train, y_train)
y_pred = pipeline.predict(x_test)

Центры кластеров можно увидеть на изображении ниже.

Оценка точности конвейера составила примерно 0,74.

Вывод

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

Ссылку на код, использованный для этой статьи, можно посмотреть здесь.

Большое спасибо за чтение!