🏃 Reconnaisseur d'activité physique — Arbre de décision en direct
Observez un véritable classifieur par arbre de décision découper l'espace des caractéristiques d'un accéléromètre simulé (cadence des pas, variance de l'accélération verticale) pour reconnaître la marche, la course, le vélo et le repos en temps réel.
À propos de cette simulation
Cette simulation entraîne un véritable arbre de décision de type CART sur un ensemble synthétique de caractéristiques dérivées d'un accéléromètre, puis lui soumet un flux en direct de relevés simulés d'un objet connecté, un à un, à classer en temps réel. Chaque division de l'arbre a été choisie en évaluant réellement des seuils candidats sur la cadence des pas et la variance de l'accélération verticale, en calculant l'impureté de Gini des groupes résultants, et en conservant la division produisant la plus grande réduction d'impureté — aucune division n'est codée en dur. Le résultat est un arbre qui a réellement appris à distinguer marche, course, vélo et repos, et vous pouvez observer à la fois l'arbre qu'il a construit et les régions de l'espace des caractéristiques qu'il attribue désormais à chaque activité.
🔬 Ce que ça montre
Un constructeur récursif d'arbre de décision par impureté de Gini (l'algorithme CART) s'entraîne sur des échantillons synthétiques étiquetés d'accéléromètre pour quatre activités. Le panneau d'espace des caractéristiques colore les régions exactes que l'arbre attribue désormais à chaque classe et superpose les points d'entraînement ; le panneau de l'arbre dessine l'arbre appris lui-même, nœud par nœud, chacun avec sa règle de division, son nombre d'échantillons et sa barre de distribution des classes.
🎮 Comment l'utiliser
Ajustez la profondeur maximale de l'arbre et le nombre minimal d'échantillons par feuille pour observer l'arbre grandir, se réduire et repartitionner l'espace des caractéristiques en direct. Choisissez une activité (ou cycle automatique) pour piloter le flux simulé en direct de l'accéléromètre, et réglez la vitesse du flux. Régénérez les données d'entraînement pour rééchantillonner un jeu de données différemment bruité et observer l'arbre réapprendre depuis zéro.
💡 Le saviez-vous ?
Les véritables systèmes de reconnaissance d'activité humaine sur téléphones et objets connectés utilisent exactement ce type d'ingénierie des caractéristiques : au lieu d'injecter des échantillons bruts d'accéléromètre dans un modèle, ils résument d'abord une courte fenêtre temporelle en caractéristiques comme la cadence des pas et la variance du mouvement, car ces statistiques compactes séparent les activités bien mieux qu'un signal brut et bruité ne le pourrait jamais.
Questions fréquentes
Comment un arbre de décision décide-t-il où diviser ?
À chaque nœud, l'algorithme examine chaque seuil candidat sur chaque caractéristique disponible et mesure l'impureté de Gini des deux groupes que ce seuil créerait. L'impureté de Gini vaut 1 moins la somme des proportions de classes au carré dans un groupe — elle est de 0 quand un groupe ne contient qu'une seule activité et maximale quand les classes sont mélangées à parts égales. L'arbre choisit la caractéristique et le seuil qui produisent la plus grande baisse d'impureté pondérée entre parent et enfants, exactement l'algorithme CART utilisé dans les vraies bibliothèques d'apprentissage automatique.
Pourquoi utiliser la cadence des pas et la variance de l'accélération verticale pour reconnaître l'activité ?
L'accéléromètre d'un téléphone ou d'un objet connecté enregistre le mouvement brut, mais les échantillons bruts sont bruités et les motifs propres à chaque activité n'émergent qu'après avoir résumé une courte fenêtre : la cadence des pas capture le rythme des foulées ou des coups de pédale, tandis que la variance de l'accélération verticale capture l'ampleur des rebonds verticaux du corps. Marche, course, vélo et repos occupent des régions clairement distinctes de cet espace de caractéristiques à deux dimensions, ce qui explique pourquoi même un arbre peu profond peut bien les séparer.
Que se passe-t-il si j'augmente la profondeur maximale de l'arbre ?
Un arbre plus profond peut découper l'espace des caractéristiques en régions plus nombreuses et plus petites, ce qui augmente généralement l'exactitude d'entraînement car il peut s'ajuster au bruit et aux échantillons qui se chevauchent près des frontières de classes. Mais un arbre trop profond surapprend : son exactitude sur le flux en direct de nouveaux relevés simulés peut plafonner voire chuter une fois que la profondeur dépasse ce que la séparation réelle des classes permet, ce qui est exactement le compromis biais-variance auquel tout véritable classifieur est confronté.
Pourquoi l'exactitude en direct fluctue-t-elle même avec le même arbre ?
Chaque relevé simulé d'accéléromètre est tiré à nouveau d'une distribution bruitée propre à l'activité en cours, donc les relevés proches de la frontière entre les plages typiques de deux activités tomberont parfois du « mauvais » côté de la division apprise par l'arbre, purement par hasard. C'est normal : la statistique d'exactitude glissante suit la performance réelle de l'arbre sur de nouveaux échantillons véritablement aléatoires, et non sur un jeu de test fixe.
Est-ce le même algorithme que celui utilisé dans les bibliothèques d'apprentissage automatique de production ?
Oui, dans l'esprit. Des bibliothèques comme DecisionTreeClassifier de scikit-learn implémentent la même idée fondamentale de partitionnement récursif : évaluer des divisions candidates avec une mesure d'impureté (Gini ou entropie), choisir la meilleure, et récurer jusqu'à ce qu'une règle d'arrêt (profondeur max., échantillons minimum) soit atteinte. Cette simulation implémente cette même récursion directement en JavaScript plutôt que de faire appel à une bibliothèque, de sorte que chaque ligne de la logique de recherche de division est visible et inspectable.
Observez un véritable classifieur par arbre de décision découper l'espace des caractéristiques d'un accéléromètre simulé pour reconnaître la marche, la course, le vélo et le repos en temps réel. Ajustez la profondeur max., la taille minimale des feuilles et la vitesse du flux.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install