Введение
Этот проект направлен на создание модели, которая прогнозирует действия человека, такие как ходьба, ходьба по лестнице, ходьба по лестнице, сидение, стояние и лежание, на основе данных датчиков смартфонов. Это проблема классификации шести классов, поскольку у нас есть шесть действий для анализа и обнаружения.
Набор данных
Набор данных состоит из записей 30 человек, выполняющих повседневную деятельность со смартфоном на талии. В каждый смартфон встроено несколько датчиков. Нас интересуют два датчика Акселерометр и Гироскоп.
Акселерометр определяет величину и направление ускорения как векторную величину и может использоваться для определения ориентации. Гироскоп, с другой стороны, поддерживает ориентацию вдоль оси, так что на ориентацию не влияет наклон или вращение крепления в соответствии с законом сохранения углового момента.
Основными формами данных, получаемых этими двумя датчиками, являются "3-осевое линейное ускорение" (tAcc-XYZ) от акселерометра и "3-осевая угловая скорость" (tGyro-XYZ). em>) от Gyroscope с многочисленными вариациями. Префикс «t» в начале имен этих атрибутов обозначает время. Принимая во внимание, что суффикс «XYZ» в конце имени атрибута отображает сигналы X, Y и Z.
Каждая точка данных представляет собой окно с разными показаниями, и для каждого из этих окон мы получаем вектор признаков из 561 признаков, заданных в наборе данных.
Разделение данных обучения и испытаний
Показания 70% добровольцев (21 человек) были взяты в качестве данных трианнинга, а записи оставшихся 30% добровольцев (9 человек) были взяты в качестве тестовых данных.
Очистка данных
Некоторые названия объектов в нашем наборе данных были неоднозначными. Поэтому, чтобы очистить имена атрибутов для удобства индексации, мы обнаружили и удалили ненужные скобки, запятые и тире.
Мы проверили наличие дубликатов с помощью встроенной функции дублирования() и обнаружили, что ни в одном из наших наборов данных не было дублированных показаний. Точно так же мы использовали функцию IsNull() для поиска пропущенных значений и обнаружили, что в обоих наборах данных нет нулевых значений.
Проверка дисбаланса данных
Кроме того, мы также должны были подтвердить, что не только у всех 30 человек было одинаковое количество показаний в двух наборах данных, но и количество точек данных для каждого вида деятельности было одинаковым для всех шести видов деятельности. Мы обнаружили, что наши данные были хорошо сбалансированы, как показано на графиках ниже:
Вопросы EDA
- Статические и динамические действия совершенно разные, поэтому можем ли мы предсказать эти действия по ускорению тела?
- Укладка отличается от других видов деятельности своей ориентацией, следовательно, можем ли мы ее предсказать, используя данные датчиков?
- Все действия будут отображать совершенно разные данные датчиков, так как каждое действие совершенно другое. Можем ли мы классифицировать их соответствующим образом?
К статическим действиям относятся сидячие, стоячие и лежачие. Динамические действия, с другой стороны, включают ходьбу, ходьбу наверху и ходьбу вниз по лестнице.
Создание графика
Мы можем использовать встроенные методы построения графиков в соответствующих библиотеках Python, чтобы отобразить эти различия между стационарными и динамическими действиями с помощью distplots.
Мы видим, что пик динамической активности приходится на -0,5, а пик статической активности - до -0,5. Таким образом, мы можем просто различать два действия, просто взглянув на значение датчика для «tBodyAccMagmean» (среднее значение величины ускорения). Для этого мы используем диаграммы, поскольку они лучше отображают разброс значений в определенном диапазоне.
Этот сюжет еще больше усиливает наше утверждение. Мы можем просто различать действия, сравнивая среднее значение tBodyAccMagmean, чтобы определить, является ли действие статическим или динамическим. Мы можем сделать еще один интересный вывод, который заключается в том, что «Хождение по лестнице» имеет очень меньшее совпадение с межквартильным диапазоном «Хождение по лестнице».
Таким образом, вполне возможно, что мы можем даже предсказать активность Walking Upstairs по значению tBodyAccMagmean. Выбросов не так много по сравнению с набором данных, поэтому результат будет чрезвычайно точным.
Наблюдения
· Если tAccMean ‹ -0,8, то это действия либо стоя, либо сидя, либо лежа.
· Если tAccMean > -0,6, тогда действиями являются либо ходьба, либо ходьба по лестнице, либо ходьба по лестнице.
· Если tAccMean › 0.0, то действие — «Спуск по лестнице».
· Мы можем классифицировать 75% меток действий с некоторыми ошибками.
Чтобы доказать, что укладка действительно имеет другую ориентацию по сравнению с другими видами деятельности, мы снова воспользуемся блочными диаграммами.
Из приведенных выше двух графиков видно, что для укладки гравитация имеет разные углы с осью y и x. Межквартильные размахи не перекрываются, и выбросы также относительно меньше. Таким образом, используя датчики, мы можем получить значения как для angleYgravityMean, так и для angleXgravityMean. Эти значения могут быть дополнительно использованы для классификации того, лежит человек или нет.
Наблюдения:
· Если angleXgravityMean > 0, то Activity будет Laying.
· Мы можем классифицировать все точки данных, относящиеся к укладке, с помощью всего лишь одного оператора if-else.
Машинное обучение
Мы разделили наши данные на два набора данных для части машинного обучения. Это были обученные и тестовые наборы данных, на которых мы реализовали эти классификаторы. Обученный набор данных содержал 7352 строки, а тестовый набор данных состоял из 2947 строк. Оба из них имели 561 функцию. Имя действия — наша зависимая переменная в обоих этих наборах данных.
Поскольку мы собираемся прогнозировать действия по их именам на основе данных датчика и отличать одно действие от другого в соответствии с данными датчика, следовательно, у нас есть проблема классификации. Чтобы предсказать эти действия, мы используем три алгоритма классификации, а именно логистическую регрессию, машины опорных векторов и деревья решений. Мы будем обучать наши классификаторы на обученном наборе данных, чтобы предсказывать метки активности.
Логистическая регрессия
Дерева решений
Машины опорных векторов
Кроме того, мы запустили эти классификаторы в нашем тестовом наборе данных, чтобы вычислить прогнозы, сделанные каждым классификатором. Мы также отдельно рассчитали их показатели точности для сравнения. Оценки прогнозов хранятся в столбце «Прогнозы», откуда они сравниваются с фактическими значениями набора данных.
Три модели должны были быть оценены в соответствии с их прогнозируемыми значениями, чтобы измерить уровень их точности. Мы оценивали их по трем компонентам:
o) Показатели точности
o) Матрица путаницы
o) Значения точности прогнозирования по видам деятельности
Оценка логистической регрессии
Оценка точности: 96,19952494061758%
Матрица путаницы:
Значения точности прогнозирования по активности:
Оценка деревьев решений
Показатель точности: 86,63047166610112%
Матрица путаницы:
Значения точности прогнозирования по активности:
Оценка SVM
Оценка точности: 94,02782490668477%
Матрица путаницы:
Значения точности прогнозирования по активности:
Заключение
Из всех трех моделей классификации, обученных и оцененных, модель дерева решений имела наихудший процент точности. Все три модели имели 100-процентную точность при укладке, в то время как все они не смогли достичь даже 90-процентной точности при стоянии/сидении, несмотря на то, что обе они также являются стационарными упражнениями. Это связано с тем, что, как показано на графике в разделе EDA, сидение и стояние сильно перекрываются между собой, поскольку мы не можем определить их по отдельности, используя только ориентацию датчика, и поскольку ускорение тела остается одинаковым во время обоих этих действий.
Что касается деятельности по укладке, то в ходе нашего исследовательского анализа данных с использованием блочных диаграмм мы доказали, что укладка зависит от углов, которые вектор силы тяжести образует как с осью x, так и с осью y. Таким образом, он не имеет какого-либо пересечения с другими видами деятельности, и мы можем легко определить его отдельно.
Также замечен тот факт, что сидение оказалось очень запутанным для наших алгоритмов классификации, поскольку время от времени оно ошибочно принималось за стояние. Более того, между тремя динамическими действиями нет явного перекрытия из-за различных ускорений тела. Поэтому мы можем точно различать статические и динамические действия, используя наши модели.
Для сидячей активности все модели были точными менее чем на 90%, они путали сидячую и стоячую активность. Глядя на показатели точности, матрицы путаницы и значения прогнозирования по действиям для всех трех моделей, логистическая регрессия превосходит модели SVM и дерева решений.