131 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			131 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Clustering Algorithms | |||
|  | localeTitle: Алгоритмы кластеризации | |||
|  | --- # Алгоритмы кластеризации | |||
|  | 
 | |||
|  | Кластеризация - это процесс деления данных на отдельные группы (кластеры), гарантируя, что: | |||
|  | 
 | |||
|  | *   Каждый кластер содержит похожие объекты | |||
|  | *   Объекты, которые не принадлежат к тем же кластерам, не похожи | |||
|  | 
 | |||
|  | Алгоритмы кластеризации помогают находить структуру в коллекции немаркированных данных и попадают в категорию неконтролируемого обучения. | |||
|  | 
 | |||
|  | Трудность заключается в определении меры подобия, которая может отделять данные так, как вы хотите. Например, группу лиц можно разделить по полу, цвету волос, весу, расе и т. Д. | |||
|  | 
 | |||
|  | Алгоритмы кластеризации имеют задачу группировки набора объектов таким образом, что объекты в одной и той же группе (называемые кластером) более схожи (в том или ином смысле) друг с другом, чем с другими группами (кластерами). Это основная задача поискового анализа данных и общий метод анализа статистических данных. Он используется во многих областях, включая компьютерное обучение, распознавание образов, анализ изображений, поиск информации, биоинформатику, сжатие данных и компьютерную графику. | |||
|  | 
 | |||
|  | Некоторые приложения алгоритмов кластеризации включают в себя: | |||
|  | 
 | |||
|  | *   Группировка потребителей в соответствии с их схемами покупки | |||
|  | *   Группировка фотографий животных того же типа вместе | |||
|  | *   Классификация документов разных типов | |||
|  | 
 | |||
|  | ## Типы алгоритмов кластеризации:
 | |||
|  | 
 | |||
|  | 1.  Кластеризация на основе соединений (иерархическая кластеризация) | |||
|  | 2.  Кластеризация на основе центра или точки (кластеризация k-означает) | |||
|  | 3.  Кластеризация на основе распространения | |||
|  | 4.  Кластеризация на основе плотности | |||
|  | 
 | |||
|  | Некоторые примеры алгоритмов кластеризации: | |||
|  | 
 | |||
|  | 1.  Алогермирующая кластеризация | |||
|  | 2.  Кластеризация K-средних | |||
|  | 3.  Кластеризация K-mediods | |||
|  | 4.  Кластеризация разделов | |||
|  | 
 | |||
|  | ### Иерархическая кластеризация
 | |||
|  | 
 | |||
|  | Существуют методы кластеризации, которые используют только сходства экземпляров, без каких-либо других требований к данным; цель состоит в том, чтобы найти группы, так что экземпляры в группе более похожи друг на друга, чем экземпляры в разных группах. Это подход, используемый иерархической кластеризацией. | |||
|  | 
 | |||
|  | Это требует использования сходства или эквивалентного расстояния, определенного между экземплярами. Обычно используется евклидово расстояние, где нужно убедиться, что все атрибуты имеют одинаковый масштаб. | |||
|  | 
 | |||
|  | ### Назначение точек
 | |||
|  | 
 | |||
|  | Этот метод поддерживает набор кластеров и помещает точки в ближайшие кластеры. | |||
|  | 
 | |||
|  | ## Специальные алгоритмы кластеризации
 | |||
|  | 
 | |||
|  | ### Кластеризация K-сред
 | |||
|  | 
 | |||
|  | Алгоритм K-средних является популярным алгоритмом кластеризации, поскольку он относительно прост и быстр, в отличие от других алгоритмов кластеризации. Алгоритм определяется следующим образом: | |||
|  | 
 | |||
|  | 1.  Определить входной параметр k (количество кластеров) | |||
|  | 2.  Выберите k случайных точек данных для использования в качестве центроидов | |||
|  | 3.  Вычислить расстояния для всех точек данных для каждого k центроидов и назначить каждую точку данных кластеру, содержащему ближайший центроид | |||
|  | 4.  После того как все точки данных были классифицированы, вычислите среднюю точку всех точек для каждого кластера и назначьте их как новый центр тяжести | |||
|  | 5.  Повторите шаги 3 и 4, пока центроиды не сходится в определенных k точках. | |||
|  | 
 | |||
|  | Поскольку нам нужно только вычислить расстояния kxn (а не n (n-1) расстояния для алгоритма knn), этот алгоритм достаточно масштабируемый. | |||
|  | 
 | |||
|  | Вот пример кластеризации в Python, который использует [набор данных Iris](https://www.kaggle.com/uciml/iris) | |||
|  | 
 | |||
|  | ```python | |||
|  | import pandas as pd  | |||
|  |  import numpy as np  | |||
|  |  iris = pd.read_csv('Iris.csv')  | |||
|  |  del iris['Id']  | |||
|  |  del iris['SepalLengthCm']  | |||
|  |  del iris['SepalWidthCm']  | |||
|  |   | |||
|  |  from matplotlib import pyplot as plt  | |||
|  |  # k is the input parameter set to the number of species  | |||
|  |  k = len(iris['Species'].unique())  | |||
|  |  for i in iris['Species'].unique():  | |||
|  |     # select only the applicable rows  | |||
|  |     ds = iris[iris['Species'] == i]  | |||
|  |     # plot the points  | |||
|  |     plt.plot(ds[['PetalLengthCm']],ds[['PetalWidthCm']],'o')  | |||
|  |  plt.title("Original Iris by Species")  | |||
|  |  plt.show()  | |||
|  |   | |||
|  |  from sklearn import cluster  | |||
|  |  del iris['Species']  | |||
|  |  kmeans = cluster.KMeans(n_clusters=k, n_init=10, max_iter=300, algorithm='auto')  | |||
|  |  kmeans.fit(iris)  | |||
|  |  labels = kmeans.labels_  | |||
|  |  centroids = kmeans.cluster_centers_  | |||
|  |   | |||
|  |  for i in range(k):  | |||
|  |     # select only data observations from the applicable cluster  | |||
|  |     ds = iris.iloc[np.where(labels==i)]  | |||
|  |     # plot the data observations  | |||
|  |     plt.plot(ds['PetalLengthCm'],ds['PetalWidthCm'],'o')  | |||
|  |     # plot the centroids  | |||
|  |     lines = plt.plot(centroids[i,0],centroids[i,1],'kx')  | |||
|  |     # make the centroid x's bigger  | |||
|  |     plt.setp(lines,ms=15.0)  | |||
|  |     plt.setp(lines,mew=2.0)  | |||
|  |  plt.title("Iris by K-Means Clustering")  | |||
|  |  plt.show()  | |||
|  | ``` | |||
|  | 
 | |||
|  | Поскольку точки данных принадлежат обычно высокомерному пространству, мера подобия часто определяется как расстояние между двумя векторами (евклидовым, манхатаном, косином, махаланобисом ...) | |||
|  | 
 | |||
|  | ### Плотность смеси
 | |||
|  | 
 | |||
|  | Мы можем написать _плотность смеси_ как:  где Gi - компоненты смеси. Их также называют группой или кластерами. p (x | Gi) - плотность компонент, а P (Gi) - пропорции смеси. Число компонентов, k, является гиперпараметром и должно быть указано заранее. | |||
|  | 
 | |||
|  | ### Ожидание-максимизация (EM)
 | |||
|  | 
 | |||
|  | В этом подходе вероятностно, и мы ищем параметры плотности компонента, которые максимизируют вероятность выборки. | |||
|  | 
 | |||
|  | Алгоритм ЭМ является эффективной итерационной процедурой для вычисления оценки максимального правдоподобия (ML) при наличии отсутствующих или скрытых данных. В оценке ML мы хотим оценить параметр (ы) модели, для которого наиболее вероятными являются наблюдаемые данные. | |||
|  | 
 | |||
|  | Каждая итерация ЭМ-алгоритма состоит из двух процессов: Э-шаг и М-шаг. | |||
|  | 
 | |||
|  | 1.  В ожидании или E-шаге недостающие данные оцениваются с учетом наблюдаемых данных и текущей оценки параметров модели. Это достигается с помощью условного ожидания, объясняющего выбор терминологии. | |||
|  | 2.  На М-шаге функция правдоподобия максимизируется в предположении, что недостающие данные известны. Оценка отсутствующих данных с E-шага используется вместо фактических отсутствующих данных. | |||
|  | 
 | |||
|  | Конвергенция гарантируется, поскольку алгоритм гарантированно увеличивает вероятность на каждой итерации. | |||
|  | 
 | |||
|  | ## Дополнительная информация:
 | |||
|  | 
 | |||
|  | *   [Статья аналитика кластера Википедии](https://en.wikipedia.org/wiki/Cluster_analysis) | |||
|  | *   [Введение в кластеризацию и связанные с ней алгоритмы](https://www.analyticsvidhya.com/blog/2016/11/an-introduction-to-clustering-and-different-methods-of-clustering/) | |||
|  | *   [Алгоритмы кластеризации - Стенды Стэнфордского университета](https://web.stanford.edu/class/cs345a/slides/12-clustering.pdf) | |||
|  | *   [Алгоритмы кластеризации: от начала до состояния искусства](https://www.toptal.com/machine-learning/clustering-algorithms) | |||
|  | *   [Кластерный анализ: основные понятия и алгоритмы](https://www-users.cs.umn.edu/~kumar/dmbook/ch8.pdf) | |||
|  | *   [Кластеризация K-сред](https://www.datascience.com/blog/k-means-clustering) | |||
|  | *   [Алгоритм максимизации ожиданий](https://www.cs.utah.edu/~piyush/teaching/EM_algorithm.pdf) | |||
|  | *   [Использование кластеризации K-Means с Python](https://code.likeagirl.io/finding-dominant-colour-on-an-image-b4e075f98097) |