Accueil / Factory / Algos ML / K-prototypes — factory / algos ML / apprentissage non supervisé

ALGORITHME K-PROTOTYPES.

Le K-means ne sait traiter que des chiffres, le K-modes que des catégories. Le K-prototypes combine les deux : une distance euclidienne pour les variables numériques, un comptage des désaccords pour les catégorielles. C'est la méthode directe pour segmenter un portefeuille ou une base clients qui mélange âges, montants, zones et types de contrat.

ClusteringDonnées mixtesVariables catégoriellesSegmentationNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceComparable au K-means, tant que le poids est bien réglé
InterprétabilitéChaque segment a un centre : moyennes et modalités dominantes
VitesseRapide, mais plusieurs départs conseillés
Facilité de réglageNombre de segments et poids des catégories à choisir
Tolérance aux données brutesNumériques à standardiser, sensible aux valeurs extrêmes
EN 30 SECONDES

Un recruteur qui compare des candidats : il mesure l'écart d'âge et d'années d'expérience, puis ajoute une pénalité fixe chaque fois que le diplôme ou la région diffère.

1. On choisit k prototypes de départ

Chaque prototype a une valeur pour chaque variable numérique et une modalité pour chaque variable catégorielle, par exemple 45 ans, 9 CV, zone urbaine.

2. On affecte chaque ligne au prototype le plus proche

La distance additionne l'écart numérique (somme des carrés) et un poids fixe, gamma ou lambda, par catégorie en désaccord.

3. On recalcule les prototypes et on recommence

Chaque prototype prend la moyenne de ses membres pour les chiffres et la modalité la plus fréquente pour les catégories. On itère jusqu'à ce que les affectations ne bougent plus.

LE CAS MÉTIER

tarification · assurance auto
EN ENTRÉE

Un portefeuille de 6 000 contrats auto

Âge du conducteur, puissance du véhicule, coefficient bonus-malus, et zone de circulation (urbaine, périurbaine, rurale). La sinistralité n'entre pas dans le calcul : elle sert à lire les segments ensuite.

EN SORTIE

4 profils de conducteurs

Chaque contrat est rangé dans un segment décrit par un âge moyen, une puissance moyenne, un bonus-malus moyen et une zone dominante. L'actuaire compare ensuite la fréquence de sinistres de chaque segment pour orienter la tarification ou la prévention.

CE QU'ON MESURE

Des segments qui séparent le risque

La qualité statistique se juge au coût total de la partition, comparé pour plusieurs valeurs de k. La qualité métier se juge à l'écart de fréquence de sinistres par année d'exposition entre segments. Des segments de sinistralité identique n'apportent rien au tarif.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Données qui mélangent chiffres et catégories : clients, contrats, magasins, produits
  • Besoin de segments décrits simplement : moyennes et modalités dominantes
  • Base de taille moyenne à grande, où une matrice de distances complète serait trop lourde
  • Alternative directe au K-means sans transformer les catégories en colonnes 0/1

NON

  • Données uniquement numériques : un K-means suffit
  • Catégories très nombreuses (codes postaux, références produit) : les regrouper d'abord, ou passer par une ACM
  • Groupes de formes irrégulières ou valeurs extrêmes nombreuses : K-medoids avec distance de Gower, plus robuste
  • Besoin de probabilités d'appartenance : préférer un modèle de mélange
LES 3 RÉGLAGES QUI COMPTENT

Noms donnés pour R (clustMixType) et Python (kmodes). Les variables numériques sont standardisées avant tout.

k / n_clusters

Nombre de segments. On compare le coût total pour plusieurs valeurs (méthode du coude), puis on retient la valeur qui donne des segments nommables et utiles au métier.

lambda / gamma

Poids d'un désaccord sur une catégorie face aux écarts numériques. Trop faible, la zone est quasi ignorée. Trop fort, les segments se calquent sur les zones. Les deux packages l'estiment par défaut à partir des données ; on le fixe à la main si le métier l'exige.

nstart / n_init

Nombre de départs différents. Le résultat dépend des prototypes initiaux : on garde le meilleur de plusieurs essais. 5 à 10 suffisent en général.

LE CODE MINIMAL

jeu d'exemple : sinistres.csv ↓
# Portefeuille auto : K-prototypes en R
library(clustMixType)

sinistres <- read.csv("sinistres.csv")
numeriques <- c("age_conducteur", "puissance_cv", "bonus_malus")

# Variables numériques standardisées, la zone reste un facteur
X <- data.frame(scale(sinistres[, numeriques]), zone = factor(sinistres$zone))

set.seed(42)
kp <- kproto(X, k = 4, nstart = 5, verbose = FALSE)
cat("Poids donné à la zone (lambda) :", round(kp$lambda, 2), "\n")

# Profil de chaque segment en unités d'origine, et répartition par zone
sinistres$segment <- kp$cluster
print(aggregate(cbind(age_conducteur, puissance_cv, bonus_malus) ~ segment, data = sinistres, FUN = mean))
print(table(sinistres$segment, sinistres$zone))

# Fréquence de sinistres par année d'exposition, segment par segment
frequence <- tapply(sinistres$nb_sinistres, sinistres$segment, sum) /
  tapply(sinistres$exposition, sinistres$segment, sum)
print(round(frequence, 3))

QUESTIONS FRÉQUENTES

Quelle différence entre K-means, K-modes et K-prototypes ?

Le K-means traite des variables numériques avec des moyennes. Le K-modes traite des variables catégorielles avec des modalités dominantes et un comptage des désaccords. Le K-prototypes, proposé par Zhexue Huang en 1997, combine les deux dans une seule distance.

Comment choisir le poids gamma (ou lambda) du K-prototypes ?

Par défaut, les packages l'estiment à partir de la dispersion des données. On vérifie ensuite que la variable catégorielle joue un rôle raisonnable : si chaque segment contient les zones dans les mêmes proportions que la base, son poids est trop faible pour compter.

Faut-il standardiser les variables avant un K-prototypes ?

Oui, pour les variables numériques. Sinon une variable exprimée en grandes unités, comme un montant en euros, domine la distance. La standardisation rend aussi le poids des catégories plus facile à interpréter.

LES ALGOS VOISINS

à comparer avant de choisir
la version tout numérique

K-means

Même algorithme, sans catégories. Il faut alors encoder la zone en colonnes 0/1, ce qui pèse mal dans la distance.

Voir la fiche →
l'alternative robuste

K-medoids (PAM)

Avec une distance de Gower, il accepte aussi les données mixtes et résiste mieux aux extrêmes. Plus lent sur les grandes bases.

Voir la fiche →
l'approche factorielle

Analyse des correspondances (AFC / ACM)

Résume d'abord les variables qualitatives en axes numériques, sur lesquels on lance ensuite une classification.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →