Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Как находить временнЫе паттерны в данных?

#алгоритм #машинное_обучение


В логе присутствуют события трёх типов: А и Б и Й. Записи просто две колонки: timestamp
и тип ("А", "Б" или "Й").

Есть гипотеза, что определённая разнесённость во времени событий А и Б вызывает событие Й.

Как найти на основе данных наиболее вероятный паттерн событий А и Б, вызывающий Й?

Например, выяснится, что чаще всего событию Й среди прочего "шума" предшествовали
события в такой маске:

-50 секунд: А
-35 секунд: Б
-05 секунд: снова А
 00 секунд: происходит событие Й


В обозреваемом окне времени 0..–50 с. встретятся и другие события А/Б, но они от
раза к разу не попадают в устойчивый паттерн, и поэтому считаются шумом и исключаются
из рассмотрения. Отношение сигнал/шум может быть очень в пользу шума. Величина рассматриваемого
"окна" неизвестна. Лишь примерно можно с потолка взять, что оно "от 1 до 1000 секунд".

Временное попадание тоже не из мира целых чисел, а «приблизительно» с некой точностью.
Т.е. паттерн можно считать одинаковым, если в первый раз первое событие А было в -50.01
секунду, а во втором случае в -49.52 Относительно размера окна в 50 сек, +–1 секунда
точности – допустимое приближение.

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


Ответы

Ответ 1



Похоже, нашёл: Kernel Density Estimation (KDE) – оценка плотности ядра (ядерное сглаживание). Подробнее. Для моей задачи нужно выровнять отрезки данных по событию Й и взять наибольшие пики в KDE событий А и Б. Подбора ширины окна и ядра – отдельный вопрос.

Комментариев нет:

Отправить комментарий