Сидение: одно из самых опасных занятий

Сидячий образ жизни стал серьезной угрозой для здоровья населения во всем мире. Эксперты говорят нам, что минимальная ежедневная физическая активность (ПА) необходима для поддержания здоровья и снижения риска хронических заболеваний, таких как диабет, болезни сердца и рак. Некоторые исследователи предположили, что длительное сидение само по себе может усугубить проблему в дополнение к общему количеству бездействия. Исследование, опубликованное в 2017 году показало, что сидение в течение более 30 минут за один раз увеличивает риск смерти после контроля других факторов. Фактором риска было отдельное время, проведенное в сидячем положении. Последующее исследование той же команды, опубликованное в январе 2019 года, показало, что не было никакой пользы от сокращения продолжительности эпизодов сидения, если только эти эпизоды не были заменены физической активностью (любой интенсивности). Исследование, опубликованное в апреле 2019 года, показало, что в период с 2007 по 2016 год время сидения увеличилось на час - до более 6 с половиной часов для взрослых и почти 8 с половиной часов для подростков.

Мультисенсор в кармане каждого

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

Проблема распознавания человеческой деятельности

Существует обширная литература по использованию датчиков смартфонов и носимых устройств для обнаружения и классификации различных типов человеческой деятельности. Часто используемый набор данных UCI-HAR (Human Activity Recognition), опубликованный в репозитории машинного обучения UCI, содержит наблюдения акселерометра от 30 субъектов, помеченных как ХОДЬБА, ХОДЬБА_ВЕРХ, ХОДЬБА_ПОДРОБНЕЕ, СИДЕНИЕ, СТОИМОСТЬ или ЛЕЖЕНИЕ (sic).

Хотя набор данных UCI и многие другие просят субъектов участвовать во многих различных видах деятельности, нет необходимости проводить различие между каждым типом деятельности для предлагаемого варианта использования (мониторинг и продвижение физической активности). Нам нужно уметь различать активность и бездействие, и мы также хотели бы знать интенсивность активности, такой как ходьба, по сравнению с бегом. (Хотя некоторые исследования показали, что сидение может быть хуже, чем стоя, мы можем только с уверенностью сказать, что риск заключается в сидячем поведении.) Цель этого проекта - разработать модель, используя данные датчиков обычных смартфонов, которые могут различать ) активные и неактивные состояния и б) энергичные и менее интенсивные физические нагрузки.

Набор данных реального мира

Существует множество общедоступных наборов данных о человеческой деятельности, которые можно использовать для разработки и тестирования моделей. Я использовал Набор данных реального мира, созданный Университетом Мангейма - Research Group Data and Web Science. Этот набор данных включает еще два активных действия (бег и прыжки) в дополнение к тем же шести действиям в наборе данных UCI-HAR. Всего 8 классов активности: спуск по лестнице, подъем по лестнице, прыжки, лежа, стоя, сидя, бег / бег трусцой и ходьба. Исследователи снабдили 15 испытуемых смартфонами или умными часами в 7 положениях тела: грудь, предплечье, голова, голень, бедро, плечо и талия. Я решил использовать только данные из положения бедро (карман), исходя из предположения, что это наиболее часто используемый из протестированных. Набор данных включает показания следующих датчиков: ускорения, GPS, гироскопа, света, магнитного поля и уровня звука. Испытуемых просили выполнять каждое действие в течение 10 минут (кроме прыжков). Датчики регистрировались с частотой 50 Гц (50 наблюдений в секунду). Мое исследование ограничивалось трехосными (оси x, y и z) данными акселерометра и гироскопа.

Исследовательский анализ данных

Я создал диаграммы рассеяния данных акселерометра и гироскопа для каждого из 15 субъектов, выполняющих каждое из 8 действий, с размерами x, y и z, показанными красным, синим и зеленым. Например, это график данных акселерометра для человека, который ходил:

Сюжет сидения одного и того же предмета выглядит совсем иначе:

Как видно из этих графиков, испытуемых просили подождать короткое время, прежде чем начинать назначенное действие. Таким образом, метки начала и конца каждого периода активности часто неверны. Кроме того, при изучении графиков становится ясно, что не все испытуемые постоянно выполняли назначенное действие. Например, субъект 4 простоял несколько периодов между приступами бега, как видно из следующего:

Исправление этикеток

Поскольку испытуемые не всегда выполняли назначенные действия непрерывно в течение всего периода, необходимо было отфильтровать данные, чтобы удалить образцы, которые в противном случае были бы неправильно маркированы. Я разделил необработанные данные на двухсекундные окна, каждое по 100 наблюдений (при 50 Гц). Я пометил каждые 100 последовательных наблюдений по каждому предмету / деятельности номером образца (отбрасывая остаток). Затем я рассчитал стандартное отклонение данных датчика для каждого из образцов. Затем я построил график стандартных отклонений. Например, ниже представлен график стандартных отклонений выборок данных акселерометра для Субъекта 4, работающего:

Отчетливо видны моменты, когда объект не работал. Изучив этот и аналогичные графики для всех испытуемых, в качестве порогового значения был выбран порог 5 для стандартного отклонения показаний акселерометра y. Все образцы со стандартным отклонением y-акселерометра менее 5 были удалены из данных. Аналогичным образом были установлены пороговые значения для всех остальных видов деятельности: максимальные значения для стационарных действий (сидя, лежа) и минимумы для движений. Для стояния не применялась фильтрация, так как испытуемые не переходили в положение стоя или не вставали во время периодов записи.

От 8 занятий до 3 занятий

Сначала я протестировал модели всех восьми видов деятельности. Хотя модели машинного обучения могут быть приспособлены к обучающим данным, они не будут обобщать с достаточной точностью данные от субъектов, не включенных в обучающий набор. Лучшая модель классификации из восьми действий могла дать только 75% точности данных валидации (когда последние полностью состояли из новых субъектов). Этой точности недостаточно для использования по назначению, поскольку слишком много ошибок заставят пользователей не доверять, игнорировать и удалять наше потенциальное приложение для телефона. Причем для продвижения ПА не обязательно знать точный вид деятельности. Таким образом, действия были сгруппированы в три класса PA следующим образом:

  • Сидячий (стоя, сидя, лежа)
  • Легко-умеренная ПА (ходьба, подъем по лестнице, спуск по лестнице)
  • Энергичная ПА (бег, прыжки)

Все приведенные ниже результаты модели основаны на классификации данных по этим трем группам.

Разделение данных на наборы для тренировок, испытаний и удержания

Данные первых 10 испытуемых были использованы для разработки и обучения модели. Данные по оставшимся 5 предметам были оставлены для финального тестирования. Обучающие данные были разделены на обучающую и тестовую выборки. Я попробовал два метода: случайный выбор образцов с использованием настройки валидационного разделения в Keras и ручное разделение выборки на обучающую группу субъектов с 1 по 7 и тестовую группу с 8 по 10. Я обнаружил, что необходимо использовать тематическое разделение обучающих и тестовых данных. Случайное разделение означает, что в обучающих данных есть наблюдения от всех 10 субъектов. Хотя итоговые результаты тестов высоки, модель плохо работает с данными, полученными от субъектов, которых раньше не видели, поскольку между субъектами существуют значительные различия. Поскольку наш вариант использования включает в себя возможность обнаруживать PA от любого (ранее невидимого) пользователя, важно обеспечить возможность обобщения модели для новых субъектов. K-кратная перекрестная проверка - это еще одна форма случайного разделения обучающих и тестовых данных. Распространенная практика создания перекрывающихся выборок в распознавании деятельности человека усугубляет проблему, поскольку включает одну и ту же информацию в данные обучения и тестирования. Изучение этих проблем в исследовании HAR показало, что k-кратная перекрестная проверка искусственно увеличивает производительность распознавателей примерно на 10% и даже на 16% при использовании перекрывающихся окон.

Модели, в которых используются элементы ручной работы

Я создал сводный набор данных, в котором образцы действий, выполненных субъектом, были сгруппированы в окна по 100 наблюдений (что соответствует 2 секундам измерения). Я вычислил среднее значение, стандартное отклонение и диапазон трехосных измерений (размеры x, y и z) как для акселерометра, так и для гироскопа. Эти 18 функций (3 x 3 x 2) использовались в различных моделях машинного обучения для прогнозирования класса (малоподвижный, легкая или умеренная ЛА, энергичная ЛА). Были протестированы модели логистической регрессии, KNN, различные деревья решений, включая XGBoost, SVM и Naive Bayes. С небольшим отрывом от следующих лучших моделей, логистическая регрессия обеспечила наибольшую точность (0,973) и оценку F1 (0,956) на данных валидации.

Тесты на данных удержания

Модель логистической регрессии была протестирована на оставшихся пяти испытуемых. Общая точность прогнозов составила 94%, а средневзвешенная оценка F1 составила 0,54. Это график матрицы путаницы по классам:

Проверка коэффициентов корреляции показала, что многие характеристики гироскопа сильно коррелировали с характеристиками акселерометра (r> 0,9). Модель логистической регрессии, включающая только функции акселерометра, имела ту же точность и оценку F1, что и модель, включающая как акселерометр, так и функции гироскопа. Использование данных гироскопа в этой модели не принесло пользы. Это значительный результат: использование всего одного датчика и простых статистических функций позволяет прогнозировать физическую активность с очень высокой точностью.

Хотя общая точность этой простой модели была очень высокой, около 600 образцов легкой и средней степени тяжести (11% от класса) были ошибочно классифицированы как «малоподвижные». Может ли более сложная модель работать лучше?

Модель нейронной сети

Вместо использования «созданных вручную функций» модель нейронной сети использует необработанные данные датчика, отформатированные в данном случае как массив из 100 наблюдений (2 секунды) x 6 показаний датчика. Поскольку данные имеют временное измерение, целесообразно использовать повторяющийся слой. Я использовал метод закрытого рекуррентного блока (GRU), потому что он имеет меньше параметров, чем LSTM, и может иметь лучшую производительность на меньших наборах данных. Сверточные слои могут улучшить результат, помогая модели изучить важные функции, предотвращая переоснащение и сокращая количество параметров. Нормализация партии использовалась для дальнейшего уменьшения переобучения. Окончательная модель состояла из:

  • два сверточных уровня с 50 фильтрами, 3 ядрами и активацией ReLU, за каждым из которых следует уровень объединения и уровень пакетной нормализации (размер первого пула установлен на 4, размер второго пула установлен на 2)
  • два рекуррентных (ГРУ) слоя, каждый с 64 нейронами и активацией tanh (второй слой с повторяющимся выпадением 0,2)
  • слой отсева с коэффициентом отсева 0,1
  • последний плотный слой, представляющий три предсказываемых класса.

В этой модели есть более 55 000 параметров для тренировки. Несмотря на то, что эта нейронная сеть требует гораздо больших вычислительных ресурсов, чем модель логистической регрессии, она относительно разреженная - у некоторых нейронных сетей есть миллионы параметров для обучения. Модель была обучена с использованием мини-пакетов из 25 образцов всего за две эпохи. Время вычислений было скромным.

Производительность модели нейронной сети была даже лучше, чем модель логистической регрессии, с точностью 99%. Около 100 образцов, которые на самом деле были активными ПА, были ошибочно классифицированы как легкие и умеренные ПА. Это очень небольшая частота ошибок, и это лучший тип ошибки, чем предыдущая модель, поскольку неправильная маркировка касается степени физической активности, а не путаницы между движением и сидячим поведением.

Дальнейшие улучшения

Эта модель была протестирована всего на 15 испытуемых. Я хотел бы включить другие общедоступные наборы данных, чтобы создать более надежную модель с большим количеством субъектов, другим оборудованием, различными тестовыми ситуациями и различными средами. Кроме того, я хотел бы увидеть, дает ли снижение частоты дискретизации 50 Гц до 10–25 Гц надежную модель, поскольку более низкая частота дискретизации означает значительное снижение энергопотребления.

Код Python для этого исследования доступен на моей странице Github.