Детектирование курильщика

Недавно закончился конкурс CardioQVARK по разработке алгоритма определения курящего человека по его кардиограмме, в котором автор принимал участие. Публикую весь код и полный отчёт по решённой задаче.

cardioqvark

Задача

Организаторами была поставлена классическая задача бинарной классификации сигналов, но с маленькими обучающей (100 кардиограмм, из которых 50 соответствуют кардиограммам курильщиков) и контрольной (250 неразмеченных кардиограмм) выборками. Но самое нестандартное, что было в задаче — критерий качества. Все участники упорядочивались по чувствительности решения — определялось место каждого участника по чувствительности. Аналогично определялось место по специфичности. Сумма мест по чувствительности и специфичности – итоговая оценка решения (чем меньше – тем лучше). На втором этапе оценивались отчёты первых 10 (по сумме мест) участников. Но, как показали результаты соревнования, итоговые места в точности совпадают с местами первого этапа (т.е. особо стараться с отчётом не надо было 😉 ).

Мотивация

Автор, после своего долгого несоревновательного периода, занялся этой задачей, поскольку недавно имел небольшой опыт работы с фотоплетизмограммами, которые тоже (пусть и очень опосредованно) отражают работу сердца — сейчас как раз пишет статью на эту тему. А тут такая дополнительная мотивация поработать ещё и с кардиорграммами. Если добавить сюда прошлые хорошие работы с электрокортикограммами и (правда, чуть менее хорошие) с ЭЭГ, то получается неплохой послужной список в области обработки и анализа сигналов…

Выводы

Из того что не вошло в отчёт:

  1. Все фильтры разные. Раньше как-то не особо придавал этому значению. Есть у меня несколько любимых способов фильтрации и обработки сигналов. Но, оказывается, я раньше работал  с очень хорошими сигналами. Если сигнал плохой (шумный, с артефактами), то с ним приходится повозиться. И от способа фильтрации много зависит.
  2. Значения некоторых функционалов качества сверхинформативны. По чувствительности и специфичности решения можно вычислить confusion matrix, а значит, и все другие показатели качества (например, F-меру). Как это сделать — об этом надо будет рассказать в отдельном посте.
  3. Хочешь решить задачу — решай сам. Эту задачу я дал и магистрам нашей кафедры как очередное задание. Магистры были, правда, двоечники (шли на пересдачу), но всё-таки в ШАДе учатся, бакалавриат у нас заканчивали, и шанс вылететь должен подстёгивать… В итоге, они болтаются внизу турнирной таблицы, не переплюнув даже среднее случайное решение. Примерно такой уровень у большинства выпускников современных учебных программ по АД (см. отчёт)…

Материалы

Код, правда, не получится просто так взять и запустить — часть сделана в Матлабе и только алгоритм классификации на Питоне. Чтобы разобраться с кодом — читайте отчёт.

Поздравляю с победой — Белавина Владислава и с третьим местом — Исакова Романа! Всем удачи в дальнейшем.

Реклама

Детектирование курильщика: 8 комментариев

  1. Отличный отчёт, у всех бы так.
    А почему у выпускников плохие результаты? С нагрузкой не справляются или не до конца понимают куда идут? 🙂

    • У все это вряд ли…

      Ой, это масштабный вопрос. На мой взгляд, умение решать задачи это трудно тренируемая вещь. Например, нужна определенная дисциплина. Пример. В этом конкурсе организаторы дали концы кардиоциклов, но они не совсем корректные. Мои магистры просто взяли их, хотя можно самому написать эвристическую процедуру выделения и сделать лучше. Ну и много есть таких мелочей, которым формально не учат на теоретических курсах. Тут только практика под присмотром опытного человека.

  2. Добрый день!

    Увлекательный отчет, расширяет кругозор.
    Я на шестом месте, возьмете к себе диссертацию бакалавра написать)? Учусь на втором курсе ВМК ВВО)

    Заранее спасибо за ответ!

  3. Александр, добрый день.
    На страничке с конкурсом больше нет ссылок на выборки- нет возможности воспроизвести код.
    Можете выложить выборки или указать ссылку?
    Спасибо!

    • Здравствуйте! По этому вопросу лучше обратитесь к организаторам. По идее, они не против, чтобы данные были доступны.

      Я не помню точно правила конкурса, но стандартная практика — участник имеет право использовать предоставленные данные только для участия в конкурсе. По поводу кода и отчета я у них уточнял — они разрешили выложить в интернете, хотя могли запретить (все-таки если получаешь приз, то чего-то лишаешься взамен).

  4. Спасибо, Александр, за подробный отчет.
    Мне с моим тривиальным решением (возможно случайным, хоть и попавшим в Ваш шорт-лист),
    было очень познавательно,как так высоко можно было сделать.

  5. Ах, кардиограммы! Вот что мне надо было на дипломе мучить полиномами Майкснера как пример практического использования 🙂 У них как раз такой вид — всплеск и затухание.
    Очень познавательный отчет!

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s