Индикаторы состояний и типы данных

События на Платформе

Платформа работает с данными, сгруппированными в события разного типа.

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

События, которые сигнализируют пользователю о наступлении какого-то состояния, называются триггерами. Они имеют дискретную природу.

Другие события могут представлять собой многомерные массивы, содержащие несколько измерений какой-то величины, сделанные в разные моменты времени. Значения этого массива называются элементами события. К таким событиям, состоящим из элементов, относятся, например, данные ЭЭГ.

Событие классифицируется по трем ключевым признакам:

  • Группа (Group), задаёт самый верхний уровень классификации,
  • Класс (Class), принадлежит конкретной группе событий,
  • Тип (Kind), принадлежит конкретному классу событий.

Эти признаки представляют собой разные уровни иерархии и перечисляются через двоеточие:

Group:Class:Kind

Эта тройка признаков однозначно определяет тип события.

Примеры типов событий:

  • bio:eeg:AF7 — сырой сигнал с отведения AF7,
  • bio:wave:AF7_Alpha — альфа-ритм с отведения AF7,
  • bio:mental:Stress_10_Avg — среднее значение стресса,
  • feedback:trigger-positive:Courage_Flag — триггер состояния бодрости,
  • feedback:trigger-negative:touching_forehead_flag — показатель того, что на пользователе надета нейрогарнитура.

Обратите внимание, что типы событий чувствительны к регистру, то есть «bio:eeg:af7» и «bio:eeg:AF7» будут интерпретированы Платформой как два различных типа событий.

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

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

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

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

Жизненный цикл событий

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

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

Программа-агент может получать из вычислителя оперативные результаты обработки данных и предоставлять их пользователю, например, в виде уведомлений («Вы устали, отдохните»).

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

Вычислитель передаёт шине событий не все данные, а только те, которые имеют признак “глобальное событие”. То есть, глобальное событие — это событие, которое попадёт в базу данных и будет доступно для извлечения и отображения, например в аналитических системах.

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

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

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

Шкала измерений

Исходный «сырой» сигнал, который передаёт нейроинтерфейс, измеряется в милливольтах. Это напряжение, которое возникает между нулевым и референтным электродами.

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

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

Шкала z-оценки

В большинстве случаев, в качестве шкалы измерений используется 10-балльная шкала z-оценки.

Все измерения укладываются в значения от 1 до 10. Среднее значение индикатора по данному пользователю соответствует середине шкалы, то есть значению в 5,5.

Считается, что показания ЭЭГ имеют нормальное распределение. Для определения шага шкалы используется стандартное отклонение от среднего. Это значит, что чем дальше мы уходим от середины шкалы вверх или вниз, тем менее вероятно появление значения индикатора.

У значения 5,5 максимальная вероятность, так что состояние пользователя обычно колеблется вокруг середины шкалы.

Значения от 1 до 3 считаются низкими, а от 7 до 10 — высокими. И те, и другие существенно отличаются от обычного состояния пользователя. Значения, которые лежат в диапазоне от 3 до 7, в той или иной степени соответствуют обычному состоянию.

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

Вероятностная шкала

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

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

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