Что такое Streamr Marketplace?

Streamr Marketplace - это глобальная платформа для обмена данными, предлагающая простые интеграционные API. В Marketplace любое приложение может легко настроить поток для обмена / монетизации данных, таких как, например, погодные условия, состояние трафика и личная физическая подготовка.

Их поясняющее видео находится здесь:

Как использовать данные на Streamr Marketplace

В нашем предыдущем сообщении в блоге рассказывалось о том, как публиковать данные о личной пригодности (включая ежедневные шаги, частоту сердечных сокращений, потребленные калории и т. Д.) На Streamr Marketplace. Хотя создание приложения для агрегирования данных было полезным, реальный вопрос заключается в том, для чего эти данные могут быть использованы. В этом блоге показано, как можно использовать модели машинного обучения (ML), чтобы предсказать, какие действия производят (пользователи) данных в разное время дня. В частности, мы сначала подписались на опубликованные данные о фитнесе из Marketplace. Затем мы использовали нашу обученную модель машинного обучения, чтобы предсказать активность пользователей. Используя модель, мы можем предсказать в реальном времени, ходит ли пользователь, работает или занимается спортом (в этом случае мы обучили модель обнаруживать модели баскетбола).

Как предварительно обработать записанные данные?

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

Если количество минут больше 30, добавьте единицу к количеству часов; если количество минут меньше 30, количество минут игнорируется, а количество часов не добавляется.

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

Второй шаг - нормализация данных. В целевой функции алгоритма машинного обучения (такой как ядро ​​RBF SVM, машина опорных векторов или регуляризация l1 и l2 линейной модели) основа целевой функции во многих алгоритмах обучения состоит в том, чтобы Предположим, что все функции имеют нулевое среднее и имеют отклонения в одном порядке. Если дисперсия функции на несколько порядков превышает дисперсию других функций, она будет доминировать в алгоритме обучения, увеличивая системный вес определенных функций и искажая окончательные результаты.

После нормализации данных процесс оптимизации оптимального решения станет плавным, и будет легче правильно сойтись к оптимальному решению. Вообще говоря, StandardScaler и MinMaxScaler - это самые современные методы нормализации данных. StandardScaler сначала передает данные путем вычитания среднего, а затем делит результат на дисперсию (или стандартное отклонение). Этот метод нормализации данных обрабатывается для соответствия стандартному нормальному распределению, то есть среднее значение равно 0, а стандартное отклонение - 1. MinMaxScaler масштабирует функции до определенных интервалов, масштабирует функции до заданного минимального и максимального значения или преобразует максимальное абсолютное значение. значение каждого объекта к размеру единицы. Такой метод представляет собой линейное преобразование исходных данных с нормализацией данных до [0,1]. Поскольку данные, используемые в этой статье, являются положительными и не подчиняются нормальному распределению, метод нормализации данных MinMaxScaler наконец принят.

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

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

Алгоритм SVM, используемый в этом блоге, вызывается путем вызова пакета алгоритмов scikit-learn. В Python scikit-learn - широко используемая библиотека для реализации алгоритмов машинного обучения. Вот частичный код:

clf = OneVsRestClassifier(SVC(C=15,gamma=0.28,probability=True))

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

  1. Разделение данных: набор данных случайным образом делится на две части, 80% набора данных используется как обучающий набор данных, а 20% набора данных используется как тестовый набор данных.
  2. Обработка данных: стандартизируйте данные, чтобы минимизировать разницу в собственных значениях между людьми.
  3. Создание модели: алгоритм машинного обучения используется для систематического моделирования набора обучающих данных, а затем данные тестового набора данных, разделенные выше, используются для проверки точности модели классификации.
  4. Анализ модели: настройте ключевые параметры в алгоритме классификации и повторяйте шаг 3, пока система не достигнет высокой точности и стабильного состояния.
  5. Результаты: повторите описанную выше операцию, каждый раз выбирайте различные модели тестовых наборов, получайте точность каждого результата теста и, наконец, вычисляйте среднюю точность системы классификации.

Окончательные результаты

Ходьба представлена ​​цифрой 0, сон представлен цифрой 1, работа представлена ​​цифрой 2, а игра в баскетбол представлена ​​цифрой 3. Ниже приводится окончательная точность всех полученных данных моделирования:

92.65% 93.55% 89.43% 92.11% 91.04%

91.40% 91.04% 92.11% 90.14% 89.07%

91.04% 91.76% 91.22% 93.37% 89.94%

91.94% 93.73% 92.29% 93.19% 90.68%

Посчитав среднюю точность этих 20 повторных экспериментов, окончательная точность классификации составляет: 91,59%. Таким образом, точность классификации, полученная в этом эксперименте, была высокой, что указывает на то, что эти особенности сильно коррелируют с деятельностью человека и заслуживают дальнейшего анализа. Однако из-за ограниченного количества продавцов наборов данных и фитнес-данных будущим операторам следует увеличить тип выборки, увеличить общий объем данных и найти другую информацию, помимо частоты пульса (например, сигналы PPG).

Исходные коды

Все исходные коды можно найти через Github.