🏃 Розпізнавач Фітнес-Активності — Дерево Рішень Наживо
Спостерігайте, як справжній класифікатор на дереві рішень розділяє симульований простір ознак акселерометра (частота кроків, дисперсія вертикального прискорення), щоб розпізнавати ходьбу, біг, велоспорт і відпочинок у реальному часі.
Про цю симуляцію
Ця симуляція навчає справжнє дерево рішень у стилі CART на синтетичному наборі ознак, похідних від акселерометра, а потім подає йому живий потік симульованих зчитувань носимого пристрою, по одному, для класифікації в реальному часі. Кожне розділення в дереві було обране шляхом фактичної оцінки кандидатних порогів частоти кроків і дисперсії вертикального прискорення, обчислення домішки Джині отриманих груп і збереження того розділення, що дало найбільше зменшення домішки — жодне розділення не закодоване вручну.
🔬 Що показано
Рекурсивний будівник дерева рішень на основі домішки Джині (алгоритм CART) навчається на мічених синтетичних зразках акселерометра для чотирьох активностей. Панель простору ознак затінює точні регіони, які дерево тепер призначає кожному класу, і накладає навчальні точки; панель дерева малює саме вивчене дерево, вузол за вузлом, кожен зі своїм правилом розділення, кількістю зразків і стовпчиком розподілу класів.
🎮 Як користуватися
Налаштуйте максимальну глибину дерева й мінімальну кількість зразків на лист, щоб спостерігати, як дерево росте, зменшується й перерозділяє простір ознак наживо. Оберіть активність (або автоцикл), щоб керувати симульованим живим потоком акселерометра, і налаштуйте швидкість потоку. Регенеруйте навчальні дані, щоб перевибрати новий, по-іншому зашумлений набір даних і побачити, як дерево перенавчається з нуля.
💡 Чи знали ви?
Реальні системи розпізнавання людської активності на телефонах і носимих пристроях використовують саме таке конструювання ознак: замість подачі сирих зразків акселерометра в модель, вони спочатку підсумовують коротке часове вікно в ознаки на кшталт частоти кроків і дисперсії руху, оскільки ці компактні статистики розділяють активності набагато краще, ніж будь-коли зміг би сирий, зашумлений сигнал.
Часті питання
Як дерево рішень вирішує, де розділяти?
У кожному вузлі алгоритм розглядає кожен кандидатний поріг на кожній доступній ознаці й вимірює домішку Джині двох груп, які цей поріг створив би. Домішка Джині дорівнює одиниці мінус сума квадратів часток класів у групі — вона дорівнює 0, коли група містить лише одну активність, і найвища, коли класи рівномірно перемішані. Дерево обирає ту ознаку й поріг, що дають найбільше падіння зваженої домішки від батька до дітей — точно алгоритм CART, що використовується в реальних бібліотеках машинного навчання.
Чому для розпізнавання активності використовуються частота кроків і дисперсія вертикального прискорення?
Акселерометр телефону чи носимого пристрою фіксує сирий рух, але сирі зразки зашумлені, і специфічні для активності патерни проявляються лише після підсумовування короткого вікна: частота кроків фіксує ритм кроків чи обертів педалей, а дисперсія вертикального прискорення фіксує, наскільки тіло підстрибує вгору-вниз. Ходьба, біг, велоспорт і відпочинок займають чітко різні регіони цього двовимірного простору ознак.
Що станеться, якщо я збільшу максимальну глибину дерева?
Глибше дерево може вирізьбити простір ознак на більше, менших регіонів, що зазвичай підвищує точність навчання, оскільки може підлаштуватися під шум і перекриті зразки поблизу меж класів. Але надто глибоке дерево перенавчається: його точність на живому потоці свіжих симульованих зчитувань може вийти на плато чи навіть впасти, коли глибина перевищує те, що фактично підтримує базове розділення класів.
Чому жива точність коливається навіть з тим самим деревом?
Кожне симульоване зчитування акселерометра береться заново із зашумленого розподілу для поточної активності, тож зчитування поблизу межі між типовими діапазонами ознак двох активностей іноді потраплятимуть на «неправильний» бік вивченого розділення дерева суто випадково. Це очікувано: статистика плавної точності відстежує реальну продуктивність дерева на справді випадкових нових зразках, а не на фіксованому тестовому наборі.
Це той самий алгоритм, що використовується у виробничих бібліотеках машинного навчання?
Так, за суттю. Бібліотеки на кшталт DecisionTreeClassifier у scikit-learn реалізують ту саму основну ідею рекурсивного розбиття: оцінити кандидатні розділення мірою домішки (Джині чи ентропія), обрати найкраще й рекурсивно повторювати до правила зупинки (максимальна глибина, мінімальна кількість зразків). Ця симуляція реалізує ту саму рекурсію безпосередньо на JavaScript, а не викликає бібліотеку.
Спостерігайте, як справжній класифікатор на дереві рішень розділяє симульований простір ознак акселерометра, щоб розпізнавати ходьбу, біг, велоспорт і відпочинок у реальному часі. Налаштовуйте максимальну глибину, мінімальний розмір листа й швидкість потоку.
3D · рушій Three.js / WebGL · ціль 60 FPS · працює повністю на клієнті, без встановлення