Двоичная классификация каждого шага временного ряда на основе прошлых и будущих значений - PullRequest
0 голосов
/ 08 мая 2018

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

У меня есть различные временные ряды позиционных (x, y, z) данных, отслеживаемых датчиками. Я разработал еще несколько функций. Например, я растеризовал все трехмерное пространство и вычислил cell_x, cell_y и cell_z для каждого временного шага. Временные ряды имеют переменную длину.

Моя цель - построить модель, которая классифицирует каждый временной шаг с метками 0 или 1 (двоичная классификация, основанная на прошлых и будущих значениях). Поэтому у меня много тренировочных временных рядов, где метки уже установлены.

Одна вещь, которая может быть очень проблематичной, состоит в том, что в данных очень мало меток 1 (например, только 3 из 800 образцов помечены 1).

Было бы замечательно, если бы кто-то помог мне в правильном направлении, потому что существует слишком много возможных проблем:

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

Я ценю любую помощь и советы.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вы можете создать модель, используя тензор потока BasicLSTMCell, форма ваших данных подходит для BasicLSTMCell в TensorFlow Документацию для BasicLSTMCell можно найти здесь , а для создания модели эта Документация содержит код, который поможет построить модель BasicLstmCell . Надеюсь, это поможет вам, ура.

0 голосов
/ 08 мая 2018

Ваша модель кажется очень странной.Почему только 2 единицы в слое lstm?Также ваша проблема - бинарная классификация.В этом случае вы должны выбрать только один нейрон в вашем выходном слое (попробуйте вставить один дополнительный плотный слой между слоем lstm и попробуйте выпадение слоев между ними). ​​

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

В качестве последнего совета: попробуйте веса классов.http://scikit -learn.org / stable / modules / generate / sklearn.utils.class_weight.compute_class_weight.html Это может иметь огромное значение, если ваш ярлык не сбалансирован.

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