0. Transformación digital3-Habilitando tecnológicamente la transformación3.1-Analítica digital y big data I

Introducció al k-means: agrupar dades per descobrir patrons

K-means, clustering,


T’has preguntat mai com agrupen automàticament els científics de dades grans volums de dades en categories amb sentit? Una de les eines més conegudes és l’algorisme k-means. En aquest post veurem què és i com funciona, amb un exemple pràctic.

Què és el k-means

El k-means (k-mitjanes) és un algorisme d’aprenentatge no supervisat: no necessita dades etiquetades. El seu objectiu és dividir les dades en k grups (clusters) de manera que els elements de cada grup s’assemblin entre si. Serveix per descobrir estructures amagades en les dades i és molt útil en l’anàlisi exploratòria.

Com funciona

  1. Inicialització. Es trien k punts com a centres inicials dels grups (centroides). Es poden triar a l’atzar, tot i que és millor fer servir el mètode k-means++, que els reparteix millor.
  2. Assignació. Cada punt de dades s’assigna al centroide més proper.
  3. Actualització. Es recalcula cada centroide com la mitjana dels punts del seu grup.
  4. Convergència. Es repeteixen els passos 2 i 3 fins que els centroides pràcticament deixen de moure’s.

Exemple pràctic

Tenim dades dels clients d’una botiga en línia: la despesa mensual i el temps mitjà de navegació. Volem segmentar-los en grups.

  1. Inicialització: triem k = 3 i escollim tres clients com a centroides inicials.
  2. Assignació: cada client s’assigna al grup del centroide més proper.
  3. Actualització: calculem els nous centroides com la mitjana de despesa i de temps de navegació de cada grup.
  4. Convergència: repetim fins que els grups s’estabilitzen.

El resultat podrien ser, per exemple, tres segments: clients que gasten molt i naveguen poc (saben què volen), clients que naveguen molt però gasten poc (comparen molt) i clients ocasionals. Cada grup pot rebre una estratègia de màrqueting diferent.

Si vols provar-ho, en Python només calen unes quantes línies amb la biblioteca scikit-learn (sklearn.cluster.KMeans). Tens una introducció a Python per a l’anàlisi de dades a explorar dades amb Python.

Usos i limitacions

El k-means es fa servir en molts àmbits: segmentació de clients, compressió d’imatges, agrupació de documents, detecció de patrons… Però té limitacions:

  • Cal triar k. No sap quants grups hi ha: l’hi has de dir. Per triar-ho es fan servir mètodes com el del colze (provar diversos valors de k i veure a partir de quin la millora és petita) o el coeficient de silueta.
  • Sensible a la inicialització. Segons els centroides inicials, el resultat pot variar. Per això es repeteix diverses vegades o es fa servir k-means++.
  • Cal escalar les dades. Com que es basa en distàncies, les variables amb valors grans (per exemple, euros) pesen més que les petites (minuts). Cal normalitzar-les abans.
  • Grups esfèrics. Funciona bé quan els grups són més o menys rodons i de mida semblant, i és sensible als valors atípics.

Conclusió

El k-means és una eina senzilla i potent per descobrir patrons en dades sense etiquetar. Entendre’l t’obrirà portes en l’anàlisi de dades i en la presa de decisions. Prova’l en el teu proper projecte i descobreix quins patrons amaguen les teves dades.