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
- 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.
- Assignació. Cada punt de dades s’assigna al centroide més proper.
- Actualització. Es recalcula cada centroide com la mitjana dels punts del seu grup.
- 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.
- Inicialització: triem k = 3 i escollim tres clients com a centroides inicials.
- Assignació: cada client s’assigna al grup del centroide més proper.
- Actualització: calculem els nous centroides com la mitjana de despesa i de temps de navegació de cada grup.
- 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.