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)
							 |