#python #time-series
#python #временные ряды
Вопрос:
У меня есть набор данных, содержащий около 80 000 последовательностей событий.
Каждая последовательность представляет собой список событий, происходящих с шагом времени t.
example_sequences = [['Start Event','Event 1','Event 5','Event 4]
['Start Event','Event 1', 'Event 7', 'Event 4','Event 3']]
Длина последовательностей варьируется в пределах ~ 10-20 событий.
В качестве шага предварительной обработки я хотел бы выровнять эти последовательности перед обучением нейронной сети обнаружению аномалий (здесь я использую Python).
Мы были бы очень признательны за любые советы по библиотекам, репозиториям github, сообщениям в блогах или подобным для выравнивания последовательности событий.
Ответ №1:
Вы не можете использовать алгоритм выравнивания последовательности, такой как динамическое искажение времени, для последовательностей строк. Сначала вы должны преобразовать их в числовые последовательности. Одним из простых способов было бы сопоставить их с помощью dict.
example_sequences = [['Start Event','Event 1','Event 5','Event 4'],
['Start Event','Event 1', 'Event 7', 'Event 4','Event 3']]
m = {
'Start Event':0,
'Event 1':1,
'Event 2':2,
'Event 3':3,
'Event 4':4,
'Event 5':5,
'Event 6':6,
'Event 7':7,
}
num_sequences = [[m[item] for item in sublist] for sublist in example_sequences]
print(num_sequences)
[[0, 1, 5, 4], [0, 1, 7, 4, 3]]
Теперь у вас есть числовые последовательности, и вы можете использовать методы выравнивания последовательности для них.
Комментарии:
1. Возможно ли также применить к векторам с однократным горячим кодированием? Потому что здесь, я думаю, событие 0 будет ближе к 1, чем к событию 5? Что не обязательно так.
2. Я не уверен, что массивы с однократным горячим кодированием являются лучшими входными данными для DTW. Однако вы можете поэкспериментировать. В общем, вы должны обладать знаниями предметной области, чтобы оценить, как наилучшим образом перевести строки в numbers. Суть остается прежней; вы можете использовать DTW только для числовых последовательностей, но не для строковых.