Aller au contenu
coden

Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters

K-means et son affectation nette, fuzzy c-means avec des appartenances à tous les clusters, le fuzzificateur m, le coefficient de partition et l’indice de Xie–Beni pour choisir le nombre de clusters — et pourquoi les points aberrants reçoivent des appartenances élevées.

13 minutes Matěj Žalmánek 2026-10-15

Série Bases de l’IA Partie 36 sur 52
  1. Carte de l’intelligence artificielle : qu’est-ce qui est quoi et comment tout s’emboîte
  2. Brève histoire de l’intelligence artificielle : de Turing aux modèles de langage
  3. Données, modèle, entraînement, inférence : les notions de base sur un seul exemple
  4. Lire la notation mathématique : symboles, indices, sommes et quantificateurs
  5. Ensembles et relations : les briques dont sont faites les définitions en IA
  6. Fonctions et applications : pourquoi tout modèle d’IA est une fonction
  7. Logique et démonstrations : les règles selon lesquelles on raisonne en IA
  8. Graphes et arbres : la structure sur laquelle reposent la recherche et les réseaux de neurones
  9. Algèbre linéaire pour l’apprentissage automatique : vecteurs, matrices et pourquoi l’IA multiplie surtout
  10. Dérivées, gradient et règle de dérivation en chaîne : comment un modèle sait dans quelle direction apprendre
  11. Descente de gradient : comment un modèle apprend
  12. Qu’est-ce que la probabilité : du lancer de dé aux axiomes de Kolmogorov
  13. Probabilité conditionnelle et théorème de Bayes : comment réviser une estimation quand on apprend du nouveau
  14. Variable aléatoire et fonction de répartition : une seule fonction qui dit tout de la loi
  15. Fonction de densité et fonction de masse : pourquoi une variable continue a une probabilité nulle en chaque point
  16. Espérance, variance et covariance : où se situe une loi, quelle est sa largeur et ce qui varie avec quoi
  17. Panorama des lois de probabilité : Bernoulli, binomiale, Poisson, uniforme, normale et exponentielle
  18. Loi des grands nombres et théorème central limite : pourquoi les moyennes sont si prévisibles
  19. Statistique et estimation de paramètres : maximum de vraisemblance, MAP et intervalles de confiance
  20. Théorie de l’information : entropie, entropie croisée et divergence KL — d’où viennent les fonctions de perte
  21. Recherche dans l’espace d’états : BFS, DFS, UCS et A* en animations
  22. Jeux et adversaires : minimax, élagage alpha-bêta et Monte Carlo tree search
  23. Satisfaction de contraintes : backtracking, propagation de contraintes et AC-3 sur un sudoku et une carte des régions tchèques
  24. Logique et systèmes à base de connaissances : chaînage avant et arrière, résolution et systèmes experts
  25. Planification : STRIPS, monde des blocs, heuristiques par relaxation et planification dans les agents IA
  26. Recherche locale et recuit simulé : un voyageur de commerce à travers les chefs-lieux de région tchèques
  27. Algorithmes génétiques : population, croisement, mutation et sélection sur un sac à dos de randonnée
  28. Stratégies d’évolution et programmation génétique : de la règle du cinquième à la loi de Kepler
  29. Optimisation par colonies de fourmis : comment une piste de phéromone trouve un chemin court
  30. Optimisation par essaim de particules : inertie, expérience propre et expérience de l’essaim
  31. Neuroévolution : faire évoluer les poids et la forme des réseaux de neurones, et l’algorithme NEAT
  32. Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud »
  33. Logique floue et probabilité : pourquoi « un peu chaud » ne veut pas dire « probablement chaud »
  34. Logique floue : t-normes, implications et règles SI–ALORS
  35. Commande floue : Mamdani et Sugeno, du ventilateur au pendule inversé sur un chariot
  36. Clustering flou : l’algorithme fuzzy c-means et les points entre les clusters
  37. Systèmes neuro-flous (ANFIS) : des règles floues qui apprennent à partir des données
  38. Chaînes de Markov : matrice de transition, distribution stationnaire et PageRank
  39. Modèles de Markov cachés : l’algorithme de Viterbi et le casino malhonnête
  40. Réseaux bayésiens : pourquoi l’herbe est mouillée et ce que cela implique pour l’arroseur
  41. Le filtre de Kalman : comment estimer, à partir de mesures imprécises, où se trouve une voiture et à quelle vitesse elle roule
  42. Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus
  43. Prompts, contexte et RAG : comment donner au modèle les bonnes informations
  44. Autoencodeurs variationnels (VAE) : de nouvelles images à partir d’un espace latent continu
  45. Réseaux antagonistes génératifs (GAN) : le faussaire contre le détective
  46. Modèles de diffusion : comment une image naît du bruit pur
  47. Processus de décision markoviens : états, actions, récompenses et équations de Bellman
  48. Q-learning et DQN : apprendre la valeur des actions, du tableau au réseau de neurones
  49. Policy gradient et PPO : apprendre directement la politique
  50. Comment fonctionne un agent IA : un modèle de langage en boucle avec des outils
  51. Programmer avec des agents IA : consigne, tests et vérification
  52. Évaluation et sécurité des systèmes d’IA : comment mesurer et comment surveiller

Programme complet de la série 52 sur 83 sujets publiés

Ce que vous retiendrez
  • Comment fonctionne k-means et ce qu’il passe sous silence sur les points à la frontière des clusters.
  • Comment fuzzy c-means calcule les appartenances et les centres, et ce que fait le fuzzificateur m.
  • Comment choisir le nombre de clusters et où fuzzy c-means échoue.

Utile à connaître avant : Ensembles flous et fonctions d’appartenance : comment écrire « un peu chaud », Types d’apprentissage automatique : supervisé, non supervisé, semi-supervisé et plus

Le clustering cherche dans les données des groupes dont on ne sait rien à l’avance : des clients au comportement d’achat similaire, des zones d’un même tissu sur une image d’IRM, des documents sur des thèmes proches. L’algorithme classique k-means affecte chaque point à un seul et unique groupe. Mais les données réelles comportent souvent des points à la frontière — un client qui achète un peu comme un étudiant et un peu comme un parent, un pixel où se rencontrent la substance grise et la substance blanche du cerveau. Le clustering flou permet à un point d’appartenir à plusieurs groupes à la fois, un peu à chacun.

Il fait suite aux épisodes Ensembles flous et fonctions d’appartenance et Types d’apprentissage automatique, où le clustering est apparu comme une tâche typique de l’apprentissage non supervisé.

1. Clustering net : k-means

Définition — problème des k-means

Pour des points x1, …, xn ∈ ℝd et un nombre de clusters c, on cherche des centres v1, …, vc et une affectation des points aux clusters qui minimisent

J = ∑i=1n ‖xi − vshluk(i)‖2.

L’algorithme de Lloyd alterne deux étapes : affecte chaque point au centre le plus proche ; recalcule chaque centre comme la moyenne de ses points. Répète tant que l’affectation change.

En termes simples

Vous plantez quelques « drapeaux » dans les données. Chaque point rejoint le plus proche. Puis chaque drapeau se déplace au milieu de ses points. Les points rejoignent à nouveau le drapeau le plus proche — et ainsi de suite, jusqu’à ce que plus rien ne change. Chaque étape diminue J, donc l’algorithme s’arrête à coup sûr, mais pas forcément sur la meilleure partition possible.

Définition — distance euclidienne

Pour des points x, v ∈ ℝd, ‖x − v‖ = √( ∑r=1d (xr − vr)2 ). Dans le plan, c’est la longueur ordinaire d’un segment, par exemple du point M1 = (4,5 ; 2,5) au centre du cluster A (1,73 ; 2,31) tel que le trouve plus bas fuzzy c-means : √(2,772 + 0,192) ≈ 2,78. Le clustering travaille avec le carré ‖·‖2 — la racine disparaît et les points éloignés sont davantage pénalisés.

def kmeans(X, c):
    V = c points de X choisis au hasard           # centres initiaux
    while True:
        shluk = [argmin_j ‖x − V[j]‖² for x in X]  # étape d’affectation
        if shluk n’a pas changé: return V, shluk
        for j in range(c):                         # étape des centres
            V[j] = moyenne des points x tels que shluk(x) = j
Théorème — l’algorithme de Lloyd s’arrête

Aucune étape n’augmente J, et l’algorithme s’arrête donc après un nombre fini d’étapes.

Démonstration : Affectation : chaque terme ‖xi − vshluk(i)‖2 est remplacé par le plus petit de tous les ‖xi − vj‖2, il n’augmente donc pas. Centres : pour les points S d’un cluster de moyenne x̄, on a la décomposition

∑i∈S ‖xi − v‖2 = ∑i∈S ‖xi − x̄‖2 + |S| · ‖x̄ − v‖2

(le terme croisé 2 ∑ (xi − x̄) · (x̄ − v) est nul, car ∑ (xi − x̄) = 0). La somme est donc minimale pour v = x̄. Il n’existe qu’un nombre fini de partitions de n points en c clusters et J diminue strictement à chaque changement d’affectation (à distance égale, on laisse le point dans son cluster), donc aucune partition ne se répète. ∎

Le théorème ne dit rien sur le fait que la partition trouvée soit celle de plus petit J — seulement que l’algorithme ne bouclera pas.

Nos données : trois groupes de 40 points — A en bas à gauche, B à droite et C en haut —, quatre points à la frontière (M1–M4) et deux points aberrants loin de tout (O1, O2). K-means s’est stabilisé après quatre itérations :

00551010 caractéristique x₁ (sans unité) caractéristique x₂ (sans unité) M1 M2 M3 M4 O1 O2
k-means : chaque point appartient à un seul cluster

Il a bien trouvé les clusters, mais il a dû trancher pour les points à la frontière : il a mis M1, M3 et M4 dans B, M2 dans A. Or le point M3 se trouve presque exactement entre B et C — k-means n’en dit rien. Et les deux points aberrants sont tombés dans le cluster C, comme s’ils lui appartenaient autant que son noyau.

2. Fuzzy c-means

Définition — fuzzy c-means (Dunn 1973, Bezdek 1981)

Au lieu d’une affectation, on cherche une matrice d’appartenance U = (uij), uij ∈ [0, 1], où pour chaque point ∑j uij = 1, et des centres vj qui minimisent

Jm = ∑i ∑j uijm ‖xi − vj‖2,

où m > 1 est le fuzzificateur. L’algorithme alterne deux étapes qui découlent des conditions d’optimalité :

vj = ∑i uijm xi / ∑i uijm,    uij = 1 / ∑k (dij / dik)2/(m−1),

où dij = ‖xi − vj‖.

En termes simples

Chaque point répartit son « un » entre tous les clusters — davantage à celui dont il est le plus proche. Le centre d’un cluster est la moyenne pondérée de tous les points : les points qui appartiennent fortement au cluster le tirent davantage, ceux des autres clusters à peine. La formule d’appartenance compare les distances : si un point est deux fois plus proche d’un centre que de l’autre, il reçoit (pour m = 2) une appartenance quatre fois plus grande.

Jm = ∑i=1n ∑j=1c uijm ‖xi − vj‖2,    ∑j uij = 1

Jm
le « coût » total de la partition — l’algorithme le minimise ; il est faible quand les points appartiennent surtout aux centres qui sont proches d’eux
∑i ∑j
chaque point est compté pour chaque cluster — contrairement à k-means, où l’on ne prenait qu’un cluster par point
uij
appartenance du point i au cluster j — le poids avec lequel la distance entre dans le coût
m
fuzzificateur — sans puissance (m = 1), il serait avantageux de donner tout le « un » au centre le plus proche et l’on retomberait sur k-means ; avec m > 1, partager devient avantageux : un point à égale distance de deux centres ne paie, pour m = 2 et un partage moitié-moitié, que (½2 + ½2) · d2 = ½d2 au lieu de d2
‖xi − vj‖2
carré de la distance — ce que coûte d’avoir le point « chez » ce centre ; un centre éloigné revient cher
∑j uij = 1
contrainte — sans elle, le minimum serait trivial : tous les uij = 0 et un coût nul

uij = 1 / ∑k=1c ( dij / dik )2/(m−1)

uij
nouvelle appartenance du point i au cluster j à centres fixés
dij / dik
rapport des distances — combien de fois le centre j est plus loin que le centre k ; le rapport (et non la différence) rend le résultat indépendant de l’échelle des données
2/(m−1)
avec quelle netteté le rapport tranche — pour m = 2 il vaut 2, donc un centre deux fois plus proche reçoit quatre fois plus ; pour m → 1 l’exposant croît sans limite et tout revient au centre le plus proche
∑k
comparaison avec tous les centres, y compris j lui-même (le terme k = j vaut 1) — grâce à cela, les appartenances d’un point ont pour somme exactement 1
Pour m = 2, la formule se simplifie en uij = (1/dij2) / ∑k (1/dik2) : l’appartenance est proportionnelle à l’inverse du carré de la distance.
Théorème — d’où viennent les deux étapes

Appartenances à centres fixés. Pour un point i, on minimise ∑j uijm dij2 sous la contrainte ∑j uij = 1. Le lagrangien est L = ∑j uijm dij2 − λ (∑j uij − 1). De ∂L/∂uij = m uijm−1 dij2 − λ = 0 découle uij = (λ/m)1/(m−1) · dij−2/(m−1). En substituant dans la contrainte de somme, l’inconnue λ se simplifie et il reste

uij = dij−2/(m−1) / ∑k dik−2/(m−1) = 1 / ∑k (dij / dik)2/(m−1).

On obtient des nombres positifs, il n’est donc pas nécessaire de surveiller séparément la contrainte uij ≥ 0. (Si un point se trouve exactement sur un centre, dij = 0, il reçoit une appartenance 1 à ce cluster ; notre implémentation le gère en ne laissant jamais la distance descendre sous 10−12.)

Centres à appartenances fixées. Jm est une fonction quadratique convexe en vj et ∂Jm/∂vj = −2 ∑i uijm (xi − vj) = 0 donne vj = ∑i uijm xi / ∑i uijm.

Chaque étape minimise donc Jm à l’autre groupe de variables fixé et ne peut pas l’augmenter — le même argument que pour k-means. Bezdek et al. (1987, correction du théorème original de Bezdek de 1980) ont montré que la suite a ses points d’accumulation en des points stationnaires de Jm (pas nécessairement au minimum global).

import numpy as np

def fcm(X, c, m=2.0, iteraci=100, eps=1e-5):
    U = np.random.dirichlet(np.ones(c), size=len(X))        # appartenances aléatoires, ligne = 1
    for _ in range(iteraci):
        W = U ** m
        V = (W.T @ X) / W.sum(axis=0)[:, None]             # centres comme moyennes pondérées
        D = np.linalg.norm(X[:, None, :] - V[None, :, :], axis=2) + 1e-12
        nove = 1 / ((D[:, :, None] / D[:, None, :]) ** (2 / (m - 1))).sum(axis=2)
        if np.abs(nove - U).max() < eps:
            return V, nove
        U = nove
    return V, U

3. Fuzzy c-means sur nos données

La couleur d’un point est maintenant un mélange des couleurs des clusters selon les appartenances : un point vert pur n’appartient qu’à A, un point « entre » le vert et l’orange est en partie dans A et en partie dans B. Les lignes pointillées montrent comment les centres se sont déplacés — l’algorithme s’est stabilisé après neuf itérations :

00551010 caractéristique x₁ (sans unité) caractéristique x₂ (sans unité) M1 M2 M3 M4 O1 O2
Fuzzy c-means (m = 2) : la couleur est un mélange selon les appartenances
Pointk-meansABC
M1 (4,5 ; 2,5)B0,410,450,15
M2 (3,3 ; 4,5)A0,430,180,38
M3 (5,8 ; 5)B0,120,440,45
M4 (4,6 ; 4)B0,280,400,32

On voit maintenant ce que k-means a passé sous silence. M1 est presque à mi-chemin entre A et B ; M3 est en fait un cheveu plus dans C que dans B, bien que k-means l’ait mis dans B ; et M4, au milieu du triangle, appartient un peu aux trois. Les points des noyaux des clusters ont une appartenance à leur cluster proche de un. Les centres sont pratiquement les mêmes qu’avec k-means — fuzzy c-means ne change pas où sont les clusters, mais ajoute l’information de avec quelle certitude chaque point leur appartient.

Exemple — appartenances du point M1 = (4,5 ; 2,5)

Centres après neuf itérations : A ≈ (1,73 ; 2,31), B ≈ (7,12 ; 2,87), C ≈ (4,51 ; 7,11). Pour m = 2, les inverses des carrés des distances suffisent :

Clusterd21/d2u = (1/d2) / 0,3190
A2,772 + 0,192 ≈ 7,720,12960,41
B2,622 + 0,372 ≈ 7,030,14230,45
C0,012 + 4,612 ≈ 21,250,04710,15
somme0,31901,00

M1 est presque aussi loin des centres A et B (7,72 contre 7,03), et se partage donc presque à moitié entre eux ; C est trois fois plus loin (au carré), et ne reçoit donc que le reste.

4. Le fuzzificateur m

Définition — coefficient de partition

Le coefficient de partition (partition coefficient) est PC = (1/n) ∑i ∑j uij2. Il vaut 1 pour une partition nette et 1/c quand chaque point appartient également à tous les clusters.

En termes simples

Un seul nombre qui dit à quel point la partition est « nette ». Pour trois clusters, il se situe entre 1/3 (tout est flou) et 1 (chaque point a un foyer clair).

PC = (1/n) ∑i ∑j uij2

PC
netteté de toute la partition, un nombre de [1/c ; 1]
(1/n) ∑i
moyenne sur les points — pour pouvoir comparer des jeux de données de tailles différentes
∑j uij2
netteté d’un seul point — le carré « récompense » une appartenance concentrée : (1, 0, 0) donne 1, (⅓, ⅓, ⅓) seulement ⅓ ; à somme fixée égale à 1, la somme des carrés est minimale quand toutes les parts sont égales
Le point M1, d’appartenances (0,41 ; 0,45 ; 0,15), contribue pour 0,412 + 0,452 + 0,152 ≈ 0,39 ; les points des noyaux des clusters pour presque 1 — la moyenne sur les 126 points est de 0,84.
00551010 caractéristique x₁ (sans unité) caractéristique x₂ (sans unité) m = 1,2 m = 2 m = 5 M1 M2 M3 M4 O1 O2
Fuzzy c-means pour m = 1,2 ; 2 et 5

Pour m proche de 1, fuzzy c-means se rapproche de k-means : le coefficient de partition vaut 0,98 et le point M4 appartient à B à 0,79. Pour m = 2, le coefficient vaut 0,84 et pour m = 5 seulement 0,42 — les couleurs se fondent et même un point du noyau du cluster A n’a qu’une appartenance de 0,45 à A. Pour m → ∞, toutes les appartenances tendraient vers 1/3. On utilise le plus souvent m = 2 : assez souple pour que les points à la frontière soient visibles, et assez net pour que les clusters restent distincts.

Exemple — un point deux fois plus proche de l’un des deux centres

Un point est à distance 1 du centre 1 et à distance 2 du centre 2. D’après la formule, u1 = 1 / (1 + (1/2)2/(m−1)) :

  • m = 1,2 : exposant 10, u1 = 1 / (1 + 1/1 024) ≈ 0,999 — affectation pratiquement nette,
  • m = 2 : exposant 2, u1 = 1 / (1 + 1/4) = 0,8,
  • m = 5 : exposant 0,5, u1 = 1 / (1 + 0,707) ≈ 0,586,
  • m → ∞ : exposant → 0, (1/2)0 = 1 et u1 → 1/2.

En général : pour m → 1+, l’exposant 2/(m − 1) tend vers l’infini, les rapports dij/dik < 1 tendent vers zéro et ceux > 1 vers l’infini, donc le centre le plus proche reçoit 1 et les autres 0 (k-means). Pour m → ∞, l’exposant tend vers zéro, les c termes de la somme tendent tous vers 1 et uij → 1/c.

5. Combien de clusters ?

Le nombre de clusters doit être fourni à l’algorithme. Si on ne le connaît pas, on le lance pour différentes valeurs de c et on compare la qualité des partitions. Le coefficient de partition et l’indice de Xie–Beni s’y prêtent bien.

Définition — indice de Xie–Beni

XB = ∑i ∑j uijm ‖xi − vj‖2 / (n · minj ≠ k ‖vj − vk‖2) — plus il est petit, mieux c’est.

En termes simples

Le numérateur mesure à quel point les points sont serrés autour de leurs centres ; le dénominateur, à quelle distance l’un de l’autre sont les deux centres les plus proches. Une bonne partition a des clusters compacts et éloignés les uns des autres.

XB = ∑i ∑j uijm ‖xi − vj‖2 / ( n · minj ≠ k ‖vj − vk‖2 )

XB
rapport « dispersion à l’intérieur des clusters / distance entre eux » — plus petit est meilleur
∑ ∑ uijm ‖xi − vj‖2
compacité — exactement la valeur de Jm que l’algorithme a minimisée
n
nombre de points — fait du numérateur une moyenne par point, pour que l’indice ne croisse pas avec la taille des données
minj ≠ k ‖vj − vk‖2
séparation — c’est la paire de centres la plus proche qui décide ; Jm seul ne fait que diminuer quand on ajoute des clusters, et ce terme pénalise une partition qui scinde un vrai cluster en deux clusters proches
Exemple — indice de Xie–Beni pour c = 3

À la fin de l’algorithme, J2 ≈ 166,73. Carrés des distances entre centres : A–B ≈ 29,4, A–C ≈ 30,8, B–C ≈ 24,79 (les plus proches sont B et C). Pour n = 126 points :

XB = 166,73 / (126 · 24,79) = 166,73 / 3 124 ≈ 0,053.

Nombre de clusters c23456
Coefficient de partition (plus grand est meilleur)0,7450,8410,7480,6610,609
Indice de Xie–Beni (plus petit est meilleur)0,2280,0530,2980,6820,529

Les deux indicateurs s’accordent sur les trois clusters que nous avons placés dans les données. Sur des données réelles, un tel accord ne va pas de soi et les indicateurs sont davantage un repère qu’un verdict.

6. Où fuzzy c-means échoue

Regardez les points aberrants : O1 en haut à droite a une appartenance de 0,45 à C et de 0,39 à B ; O2 en haut à gauche, même 0,58 à C. Pourtant, ils n’appartiennent à aucun cluster. La faute en revient à la contrainte ∑j uij = 1 : le point doit distribuer son « un » à quelqu’un, même s’il est loin de tous. L’appartenance signifie ici plutôt « de qui il est le plus proche » que « à quel point il a sa place ici ».

Exemple — pourquoi O2 = (0,2 ; 9,5) « appartient » à C

Carrés des distances aux centres : A ≈ 54,07, B ≈ 91,88, C ≈ 24,29. Même du centre le plus proche, C, il est donc à 4,9 — plus de six fois l’écart-type de 0,8 avec lequel les points des clusters sont dispersés autour des centres. Les inverses 0,0185, 0,0109 et 0,0412 donnent une somme de 0,0706 et des appartenances de 0,26, 0,15 et 0,58. La formule ne voit que les rapports des distances, pas leur grandeur : plus le point serait loin, plus les rapports se rapprocheraient de 1 et les appartenances de ⅓ — mais elles ne tendraient jamais vers zéro.

Définition — possibilistic c-means (Krishnapuram et Keller, 1993)

On supprime la contrainte de somme et on ajoute au coût un terme qui empêche la solution triviale u = 0 :

J = ∑i ∑j uijm dij2 + ∑j ηj ∑i (1 − uij)m,    d’où uij = 1 / (1 + (dij2 / ηj)1/(m−1)).

ηj est le « rayon » du cluster j : un point à la distance d2 = ηj a une appartenance de ½, et pour m = 2 un point avec d2 = 9ηj seulement 0,1. L’appartenance dépend maintenant de la distance à un seul centre, et non du rapport aux autres — un point aberrant reçoit de petites valeurs partout.

  • Possibilistic c-means (Krishnapuram et Keller, 1993) supprime la contrainte de somme — un point aberrant reçoit alors de petites appartenances à tous les clusters.
  • Forme des clusters. La distance euclidienne produit des clusters ronds. L’algorithme de Gustafson et Kessel (1979) donne à chaque cluster sa propre matrice de distance et trouve aussi des ellipses allongées.
  • Position initiale. Comme k-means, il peut finir dans un moins bon minimum local — en pratique, on le lance plusieurs fois depuis différents départs.

7. Le clustering flou en pratique

  • Imagerie médicale. La segmentation d’images IRM du cerveau en substance grise, substance blanche et liquide cérébrospinal est une application classique : un pixel à la frontière des tissus contient réellement les deux.
  • Segmentation de la clientèle. Un client peut appartenir en partie à plusieurs groupes, et le marketing peut en tenir compte.
  • Un cousin probabiliste. Les mélanges gaussiens appris par l’algorithme EM affectent eux aussi les points aux clusters de manière « souple » — mais avec des probabilités, pas des appartenances. Les résultats sont souvent semblables, l’interprétation diffère exactement comme l’a décrit l’épisode sur la logique floue et les probabilités.
  • Embeddings. Des textes transformés en vecteurs par un modèle de langage peuvent être regroupés de la même manière ; l’affectation souple révèle alors les documents qui se trouvent entre plusieurs thèmes.

8. Résumé

  • K-means affecte chaque point à un seul cluster et ne dit rien des points à la frontière.
  • Fuzzy c-means cherche des appartenances uij de somme 1 et des centres comme moyennes pondérées ; il alterne deux étapes simples.
  • Sur nos données, il a trouvé les mêmes centres que k-means et a montré en plus que les points M1–M4 appartiennent à deux ou trois clusters à la fois.
  • Le fuzzificateur m règle la souplesse de la partition ; le coefficient de partition et l’indice de Xie–Beni aident à choisir le nombre de clusters.
  • La contrainte de somme égale à 1 donne aux points aberrants des appartenances élevées ; les variantes possibilistes y remédient.

Envie d’essayer par vous-même ? Demandez à un agent IA de lancer fuzzy c-means sur les couleurs des pixels d’une de vos photos et de la recolorer selon les clusters — et regardez quels pixels se trouvent « entre » les couleurs.

Vous voyez les choses autrement ? Écrivez à support@coden-app.com.

Un Agent sur votre ordinateur, piloté depuis votre téléphone