1

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

Теперь мне нужно выделить событие (= что-то срабатывает датчик) от шума вблизи базовой линии:

enter image description here

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

  • суммы до значений в окне, если сумма выше порога класс должен быть EVENT («Интегрировать и дамп»)
  • подытожить разности значений в окне и получить среднее значение (которое дает что-то вроде первой производной), если значение положительное и выше порогового набора класса EVENT, установить класс NO-EVENT в противном случае
  • комбинация обоих

(к сожалению, эти подходы имеют е недостаток, что мне нужно угадать пороговые значения и установить размер окна)

  • с помощью SVM, которая учится из вручную классифицированных данных (но я не знаю, как настроить этот алгоритм правильно: какие функции следует обратить внимание at, как медиана/среднее из окна ?, интегральное ?, первая производная? ...)

Что вы предложите? Есть ли лучшие/более простые методы для выполнения этой задачи?

Я знаю, что существует много сложных алгоритмов, но я запутался о том, что может быть лучшим способом - пожалуйста, Litte терпения новичка, который не имеет машинного обучения/DSP фон :)

Спасибо много и с наилучшими пожеланиями.

ответ

1

Ключом к оценке вашей эвристики является разработка модели поведения системы.

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

Какова модель для выхода датчика? Может ли он быть смоделирован как, например, дискретизированная линейная функция напряжения? Есть ли шумовая составляющая? Является ли величина шума известной или неизвестной, но постоянной?

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

Edit:

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

Например, предположим, что:

  • Базовый, пороговое событие и величина шума все известны априори.

  • Основополагающий процесс может быть смоделирован как цепь Маркова: он имеет два состояния (вкл. И вкл.), А время перехода между ними экспоненциально распределено.

Затем вы можете использовать скрытый подход Марковской модели для определения наиболее вероятного основного состояния в любой момент времени. Даже если параметры и пороговые значения шума неизвестны, вы можете использовать метод HMM forward-backward training для обучения параметров (например, среднее значение, дисперсия гауссова), связанного с выходом для каждого состояния.

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

Edit:

Классическое введение в ПММ является Rabiner's tutorialcopy can be found here). Релевантно также these errata.

+0

Привет, спасибо за ваш ответ. Я отредактировал свой вопрос, потому что он, возможно, был сформулирован немного неясным. Я просто хочу обнаружить события, как показано на рисунке. События происходят некоррелированными по времени, но все они выглядят более или менее одинаково (внезапный рост сигнала, который снижается через короткое время до базовой линии). Их нужно отличать от шума (которые представляют собой гораздо меньшие колебания значения сигнала). Считаете ли вы, что есть простой и надежный способ сделать это? – CShor

+0

Привет! Обновленный ответ с чем-то более конкретным. – halfflat

+0

Большое спасибо за ваше редактирование - это действительно полезно. HMM звучит очень интересно, мне нужно кое-что прочитать о том, как его реализовать. Надеюсь, я смогу найти что-то вроде «HMM for Dummies» :) – CShor

1

из вашего описания правильно параметризованных скользящая средняя может быть достаточно

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

некоторые другие советы

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

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

Смежные вопросы