Definición del algoritmo de cambio medio

El algoritmo de cambio medio se enmarca en el aprendizaje no supervisado que se clasifica como el algoritmo de agrupamiento. La ideología del algoritmo Mean Shift es que asigna de forma iterativa puntos de datos a los clústeres desplazándose hacia el punto que tiene el punto de mayor densidad (Modo). La lógica subyacente del cambio medio se basa en el concepto de estimación de densidad de Kernel denominado KDE.

Agrupación de algoritmos de cambio medio

Una técnica de aprendizaje no supervisada descubierta por Fukunaga y Hostetler para encontrar grupos:

  • El cambio medio también se conoce como el algoritmo de búsqueda de modo que asigna los puntos de datos a los clústeres de una manera desplazando los puntos de datos hacia la región de alta densidad. La mayor densidad de puntos de datos se denomina modelo en la región. El algoritmo Mean Shift tiene aplicaciones ampliamente utilizadas en el campo de la visión por computadora y la segmentación de imágenes.
  • KDE es un método para estimar la distribución de los puntos de datos. Funciona colocando un núcleo en cada punto de datos. El núcleo en términos matemáticos es una función de ponderación que aplicará ponderaciones para puntos de datos individuales. Agregar todo el núcleo individual genera la probabilidad.

La función Kernel es necesaria para satisfacer las siguientes condiciones:

  • El primer requisito es garantizar que la estimación de la densidad del núcleo esté Normalizada.
  • El segundo requisito es que KDE está bien asociado con la simetría del espacio.

Dos funciones populares del kernel

A continuación se muestran las dos funciones populares del núcleo que se utilizan en él:

  1. Kernel plano
  2. Kernel Gaussiano
  • Según el parámetro Kernel utilizado, la función de densidad resultante varía. Si no se menciona ningún parámetro del núcleo, el núcleo gaussiano se invoca por defecto. KDE utiliza el concepto de función de densidad de probabilidad que ayuda a encontrar los máximos locales de la distribución de datos. El algoritmo funciona haciendo que los puntos de datos se atraigan entre sí permitiendo que los puntos de datos se dirijan hacia el área de alta densidad.
  • Los puntos de datos que intentan converger hacia los máximos locales serán del mismo grupo de clúster. A diferencia del algoritmo de agrupación de K-Means, la salida del algoritmo de cambio medio no depende de suposiciones sobre la forma del punto de datos y el número de agrupaciones. El algoritmo determinará la cantidad de grupos con respecto a los datos.
  • Para realizar la implementación del algoritmo Mean Shift, utilizamos el paquete de Python SKlearn.

Implementación del algoritmo de cambio medio

A continuación se muestra la implementación del algoritmo:

Ejemplo 1

Basado en el tutorial de Sklearn para el algoritmo de clúster de desplazamiento medio. El primer fragmento implementará un algoritmo de desplazamiento medio para encontrar los grupos del conjunto de datos bidimensionales. Paquetes utilizados para implementar el algoritmo de cambio medio.

Código:

fromcluster importMeanShift, estimate_bandwidth
from sklearn.datasets.samples_generator import make_blobs as mb
importpyplot as plt
fromitertools import cycle as cy

Una cosa clave a tener en cuenta es que utilizaremos la biblioteca make_blobs de sklearn para generar puntos de datos centrados en 3 ubicaciones. Para aplicar el algoritmo de desplazamiento medio a los puntos generados, debemos establecer el ancho de banda que representa la interacción entre la longitud. La biblioteca de Sklearn tiene funciones integradas para estimar el ancho de banda.

Código:

#Sample data points
cen = ((1, .75), (-.75, -1), (1, -1)) x_train, _ = mb(n_samples=10000, centers= cen, cluster_std=0.6)
# Bandwidth estimation using in-built function
est_bandwidth = estimate_bandwidth(x_train, quantile=.1,
n_samples=500)
mean_shift = MeanShift(bandwidth= est_bandwidth, bin_seeding=True)
fit(x_train)
ms_labels = mean_shift.labels_
c_centers = ms_labels.cluster_centers_
n_clusters_ = ms_labels.max()+1
# Plot result
figure(1)
clf()
colors = cy('bgrcmykbgrcmykbgrcmykbgrcmyk')
fori, each inzip(range(n_clusters_), colors):
my_members = labels == i
cluster_center = c_centers(k) plot(x_train(my_members, 0), x_train(my_members, 1), each + '.')
plot(cluster_center(0), cluster_center(1),
'o', markerfacecolor=each,
markeredgecolor='k', markersize=14)
title('Estimated cluster numbers: %d'% n_clusters_)
show()

El fragmento anterior realiza la agrupación y el algoritmo encontró grupos centrados en cada blob que generamos. Podemos ver que en la imagen a continuación trazada por el fragmento se muestra el algoritmo de desplazamiento medio capaz de identificar la cantidad de grupos necesarios en el tiempo de ejecución y calcular el ancho de banda apropiado para representar la longitud de interacción.

Salida:

Ejemplo # 2

Basado en la segmentación de imágenes en visión artificial. El segundo fragmento explorará cómo se utilizó el algoritmo de cambio medio en el aprendizaje profundo para realizar la segmentación de la imagen en color. Estamos utilizando el algoritmo de desplazamiento medio para identificar los grupos espaciales. El fragmento anterior usamos un conjunto de datos en 2D, mientras que en este ejemplo exploraremos el espacio en 3D. El píxel de la imagen se tratará como puntos de datos (r, g, b). Necesitamos convertir la imagen al formato de matriz para que cada píxel represente un punto de datos en la imagen que vamos al segmento. La agrupación de los valores de color en el espacio devuelve una serie de grupos, donde los píxeles en el grupo serán similares al espacio RGB. Paquetes utilizados para implementar el algoritmo de cambio medio:

Código:

importnumpy as np
fromcluster importMeanShift, estimate_bandwidth
fromdatasets.samples_generator importmake_blobs
importpyplot as plt
fromitertools import cycle
fromPIL import Image

Debajo del fragmento para realizar la segmentación de la imagen original:

#Segmentation of Color Image
img = Image.open('Sample.jpg.webp')
img = np.array(img)
#Need to convert image into feature array based
flatten_img=np.reshape(img, (-1, 3))
#bandwidth estimation
est_bandwidth = estimate_bandwidth(flatten_img,
quantile=.2, n_samples=500)
mean_shift = MeanShift(est_bandwidth, bin_seeding=True)
fit(flatten_img)
labels= mean_shift.labels_
# Plot image vs segmented image
figure(2)
subplot(1, 1, 1)
imshow(img)
axis('off')
subplot(1, 1, 2)
imshow(np.reshape(labels, (854, 1224)))
axis('off')

La imagen generada indica que este enfoque para identificar las formas de las imágenes y determinar los grupos espaciales se puede hacer de manera efectiva sin ningún procesamiento de imágenes.

Salida:

Ventajas y aplicaciones Algoritmo de cambio medio

A continuación se detallan los beneficios y la aplicación del algoritmo medio:

  • Es ampliamente utilizado para resolver la visión por computadora, donde se utiliza para la segmentación de imágenes.
  • Agrupación de puntos de datos en tiempo real sin mencionar el número de agrupaciones.
  • Se desempeña bien en la segmentación de imágenes y el seguimiento de video.
  • Más robusto para los valores atípicos.

Ventajas del algoritmo de cambio medio

A continuación se presentan los algoritmos de cambio medio de profesionales:

  • La salida del algoritmo es independiente de las inicializaciones.
  • El procedimiento es efectivo ya que solo tiene un parámetro: ancho de banda.
  • Sin supuestos sobre el número de grupos de datos y la forma.
  • Tiene mejor rendimiento que K-Means Clustering.

Contras del algoritmo de cambio medio

A continuación se presentan los contras del algoritmo de cambio medio:

  • Caro para grandes características.
  • En comparación con la agrupación de K-Means, es muy lenta.
  • La salida del algoritmo depende del ancho de banda del parámetro.
  • La salida depende del tamaño de la ventana.

Conclusión

Aunque es un enfoque sencillo que se utiliza principalmente para resolver problemas relacionados con la segmentación de imágenes, la agrupación. Es comparativamente más lento que K-Means y es computacionalmente costoso.

Artículos recomendados

Esta es una guía del algoritmo de cambio medio. Aquí discutimos problemas relacionados con la segmentación de imágenes, la agrupación, los beneficios y dos funciones del núcleo. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. K- Algoritmo de agrupamiento de medios
  2. Algoritmo KNN en R
  3. ¿Qué es el algoritmo genético?
  4. Métodos Kernel
  5. Métodos de Kernel en Machine Learning
  6. Explicación detallada del algoritmo C ++