Вступление

Мы собираемся изучить набор данных Daily Sports and Activities из UCI Machine Learning Repository. Цель этой работы - научить классификатор предсказывать, какими действиями пользуются пользователи, на основе данных датчиков, собранных с устройств, прикрепленных ко всем четырем конечностям и туловищу. Это будет достигнуто за счет грамотной разработки данных датчиков и обучения классификаторов машинного обучения.

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

Классификация человеческой деятельности

Признание повседневных и спортивных занятий

Наука проверяется коллегами

Ознакомьтесь с Блокнотом Jupyter для этой работы.

Мотивация

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

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

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

Comfy использует Интернет вещей и машинное обучение для интеллектуального мониторинга и регулирования комфорта на рабочем месте. Их устройства и аналитика автоматически регулируют температуру в рабочих помещениях, что позволяет снизить количество жалоб сотрудников и повысить производительность.

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

О данных

Все 8 пользователей участвуют в 19 одних и тех же мероприятиях. Каждое из 5 устройств (4 конечности и 1 торс) имеет 9 датчиков (акселерометры x, y, z, гироскопы x, y, z и магнитометры x, y, z). Данные собираются в виде 5-секундных сегментов с частотой 25 Гц, в общей сложности 5 минут для каждого действия для каждого пользователя.

Вот 19 мероприятий:

сидя (A1),
стоя (A2),
лежа на спине и на правом боку (A3 и A4),
поднимаясь и спускаясь по лестнице (A5 и A6),
стоя в лифте неподвижно (A7)
и передвигается в лифте (A8),
гуляет на стоянке (A9),
передвигается по беговой дорожке со скоростью 4 км / ч (в плоском и наклонном положении 15 градусов) (A1 0 и A11),
бег на беговой дорожке со скоростью 8 км / ч (A12),
выполнение упражнений на степпере (A13),
тренировки на кросс-тренажере (A14),
езда на велотренажере в горизонтальном и вертикальном положениях (A15 и A16),
гребля (A17),
прыжки (A18), < br /> и играет в баскетбол (A19).

Структура данных:

19 упражнений (a) (в указанном выше порядке)
8 пользователей (p)
60 сегментов (s)
5 единиц на туловище (T), правой руке (RA), левой руке (LA), правая нога (RL), левая нога (LL)
9 датчиков на каждом блоке (акселерометры x, y, z, гироскопы x, y, z, магнитометры x, y, z)

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

Для простоты загрузим один сегмент и посмотрим, как выглядят данные для человека, идущего по парковке.

Из графиков ускорения левой ноги и торса видно, что человек должен идти в обычном темпе. Это очевидно по тому факту, что расстояние между пиками примерно постоянное. Если кто-то ходит в нерегулярном темпе (т.е. медленно-быстро-медленно), мы ожидаем увидеть изменение частоты (подробнее о частоте позже).

Ускорение устройства во всех трех пространственных измерениях является периодическим, сосредоточенным вокруг неизменного во времени среднего.

Для любопытных: вертикальный размер - это направление X, а направление Z указывает от устройства параллельно земле. Дополнительные сведения об ориентации размеров и устройств см. В разделе Распознавание повседневных и спортивных занятий.

Вышеупомянутый парный график показывает условные вероятности: как измерения X, Y, Z ускорения человека соотносятся друг с другом. Диагональные графики показывают, что распределения сигнала приблизительно гауссовы. Мы также можем видеть, что распределения центрированы близко друг к другу в нижнем треугольнике. Верхний треугольник показывает условную взаимосвязь между размерами в виде диаграммы разброса.

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

Функциональная инженерия

Мы собираемся развить успешные исследования из обеих статей и перенять их подход к проектированию функций.

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

Мы нормализуем каждую функцию до значений между [0,1], а затем сведем каждый 5-секундный сегмент в одну строку с 1140 функциями. Такое большое количество функций приведет к Проклятию размерности и снизит производительность большинства классификаторов. Поэтому мы уменьшим размеры, применив Анализ главных компонентов (PCA).

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

Шаги

1. Получите 19 дополнительных функций для каждой из 45 исходных функций.
2. Нормализовать все функции между [0,1]
3. Уменьшить размеры каждого сегмента
4. Сложить сегменты, чтобы создать набор данных для каждого человека.

1. Извлеките 19 дополнительных функций и преобразуйте формат набора данных.

Давайте по очереди рассмотрим спроектированные функции.

Среднее значение, дисперсия, асимметрия и эксцесс

Мы увидели, что распределение каждого сигнала примерно нормальное. Это означает, что мы можем взять первые четыре статистических момента для каждого 5-секундного сегмента. Включая четыре момента, мы помогаем нашим моделям лучше узнать характеристики каждого уникального вида деятельности.

Автокорреляция

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

Для наших целей мы хотим извлечь первые 10 точек из автокорреляции для каждой выборки и рассматривать каждую из этих 10 точек как новую функцию. Зачем нам это нужно? Идея состоит в том, что каждое физическое действие будет иметь уникальную последовательность автокорреляции. Итак, мы хотим зафиксировать эту уникальность, чтобы помочь нашей модели понять разницу между действиями.

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

Это интуиция и обоснование для создания новых функций с использованием первых 10 точек графика автокорреляции. В конечном итоге действительность этой или любой другой спроектированной функции будет определяться характеристиками моделей.

Максимум пять пиков дискретного преобразования Фурье

Функция преобразования Фурье отображает сигнал туда и обратно между временным и частотным пространством. Каждый сигнал представляет собой линейную комбинацию синусоидальных функций, синуса и косинуса.

Первое уравнение преобразует единицу из временного пространства (t) в частотное пространство (омега). Второе уравнение - обратное преобразование.

Уравнения показывают непрерывные преобразования. На практике пакеты кодирования, такие как SciPy Python, либо вычисляют дискретный случай, либо выполняют численное приближение для непрерывного случая.

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

Ниже у нас есть графики ускорения торса в Y Dim для серии «Ходьба» одного человека. Первый график показывает, как выглядит сигнал временного ряда, а второй график показывает, как выглядит соответствующий частотный сигнал.

Для наших целей мы собираемся извлечь 5 максимальных пиков и создать характеристики для каждого из этих значений в каждой из наших выборок. Почему мы это делаем? Вернемся к изображению с преобразованием Фурье выше: кривые с самой высокой частотой отвечают за макроколебания, а многочисленные небольшие частотные кривые отвечают за микроколебания. Эти макроколебания определяют общий вид кривой. Каждое действие будет иметь различную общую форму сигнала. Улавливая эти важные частоты, наши модели машинного обучения смогут лучше различать действия.

2. Нормализовать все функции

Масштаб всех функций изменяется от нуля до единицы.

3. Уменьшите размеры каждого сегмента.

Верхний график показывает объясненную дисперсию всех 1140 функций. Мы видим, что объясненная дисперсия быстро падает почти до нуля.

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

Если мы, где создавать, и будем следовать нашей собственной эвристике для определения количества функций, которые нужно сохранить, мы можем удалить все, кроме минимального количества функций, которые объясняют 90% дисперсии.

Мы собираемся взять первые 30 векторов главных компонент.

Моделирование и прогнозы

Наконец, перейдем к сексуальной части! Мы рассмотрим 2 подхода к прогнозированию действий пользователя.

Подход 1

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

Подход 2

Мы включим данные 7 пользователей в качестве обучающей выборки, а оставшиеся
данные пользователя будем использовать в качестве тестовой. Цель здесь - предсказать действия пользователя, которых модель * никогда раньше не видела *.

В каждом подходе мы будем следовать одной и той же структуре построения модели:

  1. Разделение данных на наборы поездов и задержек
  2. Оптимизировать гиперпараметры модели
  3. Эффективность модели перекрестной проверки путем анализа кривых обучения

Модели

В этом анализе использовались модели машинного обучения: логистическая регрессия (LR), машины опорных векторов (SVM) и Random Forest (RF). Для краткости мы сосредоточимся на LR и SVM.

Подход к моделированию 1

  1. Создавайте обучающие и тестовые наборы, содержащие перемешанные образцы от каждого пользователя.
  2. Обучите модель на данных от каждого пользователя и спрогнозируйте действия каждого пользователя в тестовом наборе.

Поиск по сетке | Оптимизированное управление памятью

Реализация наивного поиска по сетке будет считывать копию набора данных с диска в память для каждой уникальной комбинации гиперпараметров, резко увеличивая время, необходимое для запуска поиска по сетке.

Еще более простая реализация поиска по сетке будет использовать только одно ядро ​​для последовательного обучения моделей. Помните, что подгонка одной модели - это совершенно независимая задача от подгонки других моделей. Поэтому в сообществе разработчиков данных эту задачу часто называют задачей, которая до неловкости параллельна.

Реализация поиска по следующей сетке использует пакет ipyparallel для создания локального кластера для одновременного выполнения нескольких подгонок модели - столько, сколько доступно ядер.

Эта реализация поиска по сетке также использует возможности Numpy’s memory mapping. Вместо того, чтобы читать копию набора данных с диска каждый раз при подгонке модели, мы сопоставим версию данных, доступную только для чтения, в память, где каждое ядро ​​может ссылаться на нее для подгонки моделей.

Комбинация распараллеливания и отображения памяти значительно сокращает процесс поиска по сетке.

Перекрестная проверка | Кривые обучения

Прежде чем мы углубимся в то, что графики говорят нам о нашей модели, давайте удостоверимся, что мы понимаем, как эти графики были созданы.

Создание кривых обучения

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

Сначала данные разделяются на набор для поездов и задержек. Далее набор поездов разделяется на k сверток, и каждая свертка итеративно используется либо как часть обучающего набора, либо как набор проверки для обучения модели. Как только модель обучена, она используется для прогнозирования значений для обучающего и удерживающего наборов. Синие кривые представляют собой прогнозы, сделанные на обучающем наборе, а зеленые кривые представляют прогнозы, сделанные на удерживающем наборе (который мы также называем здесь тестовым набором).

Анализ кривых обучения | Логистическая регрессия

Кривые обучения содержат обширную информацию о нашей модели.

Давайте посмотрим на кривые обучения точности. Мы видим, что оценка тестового набора увеличивается примерно на 5%, когда мы увеличиваем размер обучающего набора с 1000 до 2000 выборок. Продолжая увеличивать размер обучающей выборки, мы видим, что точность теста не увеличивается. Это насыщение точности набора тестов представляет собой смещение модели. Смещение указывает на то, что модель недостаточно сложна для обучения на основе данных, поэтому независимо от того, на скольких точках обучения она обучается, она не может повысить свою производительность. Это также известно как недостаточное оснащение.

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

Наконец, мы видим, что все показатели логистической регрессии никогда не превышают 50%. Если бы мы случайным образом угадали, к какому классу принадлежит выборка, мы были бы правы примерно в 5% случаев (поскольку существует 19 действий). Хотя LR работает лучше, чем случайный, мы хотим добиться гораздо большей точности, чем 50%.

Анализ кривых обучения | SVM

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

Что еще более важно, модель классифицирует действия из набора тестов с точностью около 99%. Кривая тестирования показывает, что производительность SVM увеличивается по мере обучения на больших наборах данных. Разрыв между кривыми поезда и теста может показаться значительным, но имейте в виду, что разница между этими двумя кривыми составляет около 0,01% - очень небольшая разница. Из этих кривых обучения можно сделать вывод, что SVM страдает от очень небольшого количества смещений и дисперсии. Это тот тип производительности, который мы желаем в моделях, которые будут запущены в производство.

Точность | Отзывать

До сих пор мы фокусировались на метрике точности, но как насчет точности и отзыва?

Точность показывает, какой процент положительных классификаций действительно положительный. Для простоты предположим, что мы имеем дело с проблемой двоичной классификации, в которой предполагается, что 100 выборок принадлежат к положительному классу. 90 из 100 положительных прогнозов на самом деле относятся к классу положительных, и в этом случае мы помечаем эти прогнозы как Истинно положительные (TP). С другой стороны, 10 из 100 положительных прогнозов на самом деле не относятся к положительному классу, это были отрицательные образцы, ошибочно предсказанные как положительные, и в этом случае мы помечаем эти прогнозы как Ложные положительные ( FP).

Напомнить показывает, насколько хорошо модель может определять точки, принадлежащие к положительному классу. Это может звучать очень похоже на точность, но это не так. Напомним, TP сравнивает с ложными отрицательными значениями (FN), где точность сравнивает TP с FP. Различие здесь в том, что для каждой выборки, которая, согласно ложному прогнозу, принадлежит к отрицательному классу, это на одну выборку меньше, которую модель может правильно идентифицировать как принадлежащую к положительному классу.

Отзыв - это мера того, насколько не удается различить положительную и отрицательную классификацию.

Точность - это мера того, что правильно предсказать положительные классификации.

Наконец, оценка f1 представляет собой средневзвешенное значение точности и запоминания. Оценка f1 используется для измерения обоих типов отказов.

Возвращаясь к нашему тематическому исследованию, взглянем на кривую точности для SVM. Это говорит нам о том, что 99 из 100 образцов, которые, по прогнозам, принадлежат к положительному классу, на самом деле принадлежат к положительному классу. Теперь, поскольку в нашем наборе данных 19 классов, а не 2, ярлыки «положительный» и «отрицательный» теряют смысл. Когда присутствует более двух классификаций, мы можем переинтерпретировать кривую обучения точности тестового набора так, чтобы 99 из 100 классификаций, которые, как предполагается, принадлежат к определенному классу, действительно принадлежат этому классу.

Подход к моделированию 2

  1. Создайте обучающий набор, состоящий из 7 случайно выбранных пользователей, и тестовый набор, состоящий из оставшегося пользователя.
  2. Обучите модель предсказывать, какими действиями занимается ранее невидимый пользователь, а не только для пользователей, которых он видел раньше.

Анализ кривых обучения | SVM

Ого! Что случилось?

Помните, что обучающий набор содержит 7 пользователей, а тестовый набор содержит 8-го пользователя. Кривые обучения показывают огромное количество переобучений. Обучающие кривые синего цвета представляют 7 пользователей в обучающей выборке. Модель может предсказывать действия пользователей, которых она уже видела. Однако зеленые кривые говорят нам, что модель не может быть обобщена на новых пользователей.

Эти результаты, вероятно, связаны с выбранным нами подходом к проектированию функций. Люди уникальны в том, как они ходят, прыгают, поднимаются и спускаются по лестнице и так далее. Разумно заключить, что нам удалось зафиксировать характерные движения тела конкретных людей, но не удалось получить обобщенное понимание того, как эти действия выполняются в группах людей.

В зависимости от нашей цели мы можем прийти к выводу, что мы достигли или не достигли наших целей. Если наша цель - создать и посвятить модель каждому человеку, то мы можем сделать вывод, что эта работа имеет потрясающий успех!

С другой стороны, если наша цель - построить модель, которая узнает, как выглядит сигнал ходьбы или сигнал прыжка от любого пользователя, то нам придется признать, что мы потерпели неудачу.

Заключение

Мы увидели, как понимание данных временных рядов и обработки сигналов может привести к инженерным функциям и построению моделей машинного обучения, которые предсказывают, какими действиями пользователи занимаются с точностью 99%.

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

Эту работу можно напрямую применить к стартапам IoT, таким как Fitbit и Spire. Обе компании собирают данные о сигналах от носимых устройств. Классификация видов деятельности, которыми занимаются их пользователи, - это ценная информация, которую можно использовать для создания информационных продуктов и стимулирования маркетинговых усилий.

об авторе

Александр Баррига имеет диплом М.С. Имеет степень бакалавра наук о данных от GalvanizeU (Университет Нью-Хейвена) и степень бакалавра наук. по физике Калифорнийского университета в Беркли. В настоящее время он работает инструктором по Data Science в General Assembly в Сан-Франциско.