¿Está seguro de que agrupación de big data ¿se utiliza realmente en alguna parte?
Por lo que puedo decir, es no utilizado. Todo el mundo utiliza la clasificación, nadie utiliza la agrupación. Porque el problema de la agrupación es mucho más difícil, y requerirá análisis manual de los resultados.
K-means: el algoritmo habitual de Lloyd es ingenuamente paralelo y, por lo tanto, trivial de implementar en Hadoop. Pero al mismo tiempo, no tiene sentido utilizar k-means en big data . La razón es sencilla: no hay big data de vectores densos . K-means funciona bien para digamos hasta 10 dimensiones. Con doble precisión, necesito entonces 80 bytes por registro. En un ordenador modesto con 1 GB de RAM ya caben unos 13 millones de vectores en la memoria principal. Tengo máquinas con 128 GB de RAM...
Así que te será difícil encontrar un conjunto de datos reales donde:
- Me quedo sin memoria en un solo ordenador.
- k-means produce resultados notables. (En datos de gran dimensión, k-means suele ser tan eficaz como las particiones aleatorias de Voronoi).
- el resultado mejora sobre una muestra.
El último punto es importante: k-means calcula significa . La calidad de un media no mejora infinitamente cuando se añaden más datos. Sólo se obtiene marginal cambios (si el resultado es estable, es decir, k-means funcionó). Lo más probable es que tu cálculo distribuido ya haya perdido más precisión en el camino de la que ganas al final...
En cuanto a DBSCAN: no conozco ningún popular implementación distribuida. De vez en cuando se propone un nuevo DBSCAN paralelo, normalmente utilizando rejillas, pero nunca he visto que se utilice en la práctica o que esté disponible públicamente. De nuevo, hay problemas con la disponibilidad de datos interesantes en los que haría sentido para utilizar DBSCAN.
- En el caso de los big data, ¿cómo se establece el
minPts
y epsilon
¿parámetros? Si te equivocas, no tendrás ningún cluster; o todo será un único gran custer.
- Si sus datos son de baja dimensión, véase más arriba para k-means. Utilizando técnicas como R*-trees y rejillas un solo ordenador ya puede agrupar datos de baja dimensión con miles de millones de puntos mediante DBSCAN.
- Si tiene datos complejos, en los que la indexación ya no funciona, DBSCAN escalará cuadráticamente y, por lo tanto, será una opción inadecuada para los big data.
A muchas plataformas/empresas les gusta pretender que pueden ejecutar razonablemente k-means en su cluster. Pero el hecho es que no tiene sentido de esta manera, y es sólo maketing y demostración técnica. Por eso suelen utilizar datos aleatorios para presumir, o el temido conjunto de datos rotos KDDCup1999 (¡que todavía puedo clusterizar más rápido en un solo ordenador que en cualquier cluster Hadoop!)
Así que lo que realmente se hace en la práctica
- El clúster Hadoop es su almacén de datos (rebautizado como nuevo big data).
- Se ejecuta un preprocesamiento distribuido en los datos brutos, para darles forma.
- Los datos preprocesados son lo suficientemente pequeños como para ser agrupados en un solo ordenador, con algoritmos más avanzados (que pueden incluso escalar cuadráticamente, y no tienen que ser ingenuamente paralelos)
- Lo vendes a tu departamento de marketing
- Su departamento de marketing lo vende al CSomethingO.
- Todo el mundo está contento, porque ahora son expertos en big data.