Ах, болезнь Паркинсона — это такой коварный танцор, который начинает свой медленный вальс по телу незаметно и без приглашения. Диагностировать его — задача не из легких: нет ни лабораторных тестов, ни биомаркеров, которые можно было бы достать с полки и сказать: «Вот он, виновник!» Вместо этого врачи вынуждены смотреть на физические симптомы: тремор рук, походку, замедленность движений.
Это напоминает мне анекдот: «Доктор говорит пациенту с Паркинсоном — у вас всё как у меня. Пациент удивленно — а вы что, тоже больны?
Доктор отвечает — нет, я просто медленно хожу и трясусь от страха». В общем, диагноз может занимать от пары дней до пары лет — кому как повезет.
Но вот тут на помощь приходит современная наука с ее голосовым анализом! Представьте себе: ваш смартфон слушает вас не только когда вы поете в душе или ругаетесь на пробках, но и проверяет голос на признаки болезни.
Исследование Макса Литтла и его команды показало, что голосовые нарушения при Паркинсоне могут быть такими разными — от снижения громкости до голосового тремора. Это как если бы твой голос внезапно решил сыграть главную роль в фильме ужасов.
В эксперименте записали голоса 31 человека, из которых 23 были больны Паркинсоном. Затем ученые измеряли частоты и амплитуды этих голосов — звучит почти как настройка радио на любимую станцию.
Идея была проста: если компьютер сможет распознать болезнь по голосу так же точно, как мы узнаем друга по телефонному звонку после трех кружек кофе — это будет прорыв!
Ну а я решил подхватить эстафету машинного обучения и построил модель для предсказания этой болезни по голосу. Использовал небольшую выборку (195 наблюдений), поэтому пришлось делить данные аккуратно — чтобы модель не перепутала больных с вполне здоровыми любителями караоке.
Первая попытка была с логистической регрессией — звучит серьезно, но на деле это просто способ сказать «да» или «нет».
Модель сразу показала точность в 85%, а после настройки гиперпараметров (звучит как магия) поднялась до 87%. Для сравнения: исходная точность была всего 75%. Как говорится, прогресс налицо! Это напомнило мне случай из жизни: однажды мой дедушка пытался понять новый смартфон и сказал: «Если этот аппарат научится отличать меня от моего соседа по телефону – я готов купить ему костюм».
Затем я попробовал классификатор случайного леса — представьте себе лес знатоков машинного обучения, каждый из которых делает свое дело.
Эта модель выдала уже 91% точности! Представляете?
Компьютер уже почти увереннее врача-невролога! Но чтобы убедиться в надежности результатов (ведь иногда даже лучший друг может ошибиться), я построил матрицу путаницы – звучит страшно, но это просто таблица ошибок модели.
Результат? Средневзвешенный F1 балл составил 89%, что для таких задач весьма достойно.
И вот кульминация – XGBoost! Эта модель словно чемпион по боксу среди алгоритмов машинного обучения. Используя раннюю остановку (чтобы не переусердствовать), она достигла точности в 93%!
Вспоминается история про программиста: «Я написал программу так умную, что она сама себя оптимизировала… но потом решила уйти в отпуск».
Для оптимизации модели я применил Permutation Importance – метод определения самых важных признаков. Оказалось достаточно всего пяти функций из двадцати двух! Это примерно как выяснить, что для хорошего борща нужны всего пять ингредиентов – остальное можно выбросить.