#tensorflow #machine-learning #time-series #dataset #lstm
#tensorflow #машинное обучение #временные ряды #набор данных #lstm
Вопрос:
Я провожу научный эксперимент с данными о сне, и мне нужна модель, которая выводит значения измерения качества сна в нескольких столбцах (десятичные числа) для каждого ввода.
Для обучения я собирал данные с помощью смартфона (для входных данных) и умных часов (для меток или выходных данных). Смартфон собирает НЕСКОЛЬКО строк данных датчиков, таких как акселерометр и гироскоп, за ОДНУ ночь. Умные часы генерируют ОДНУ строку значений индикаторов качества сна (таких как TWAK, NWAK, WASO и т. Д.) За ОДНУ ночь. Структура данных выглядит следующим образом:
Приведенное выше представление моих данных. Левая сторона — это данные о функциях телефона (с неопределенным количеством записей в день в зависимости от того, как долго человек спал в этот день), а правая сторона — данные измерения качества сна, которые составляют только одно значение в день. Мне нужно обучить модель с этими данными, и онлайн-источники, похоже, предполагают, что LSTM — это правильный путь. Не могли бы вы, пожалуйста, дать мне предложение или указать мне ресурс, который помог бы мне сделать прогноз для этого типа структуры набора данных с использованием python? Предпочтительнее использовать Tensorflow.
Заранее спасибо! Я могу объяснить это столько раз, сколько вам нужно, поэтому не стесняйтесь задавать мне любые вопросы.
Ответ №1:
Насколько я понимаю, у вас есть датчики (X), каждая выборка имеет K измерений, и каждый день содержит L строк выборок. Число L может меняться изо дня в день, что зависит от того, как долго человек спал в день.
Я думаю, вы можете обучить последовательность последовательностей (seq2seq) с помощью модели на основе LSTM (с вводом X) для кодирования и декодирования самой себя. Таким образом, эта модель seq2seq может получать различную длину последовательности, но генерирует одно и то же измерение закодированного объекта. Функция потерь этого шага может быть L2 или средним абсолютным значением между восстановленным выходом и входом.
Затем закодированная функция может быть использована для прогнозирования одного выходного сигнала (т. Е. Качества сна) с помощью другой простой модели LSTM или полностью подключенного уровня. Функция потерь этой задачи регрессии также может быть L2 или средним абсолютным значением.
В общем, вы можете изучить представление данных датчика (с различной длиной последовательности), используя seq2seq (т. Е. Форму автоэнкодера), а затем использовать сжатое представление (от кодировщика) для прогнозирования одного выходного сигнала (т. Е. Качества сна).
Однако этот подход может привести к потерям из-за того, что сжатое представление не может захватить полностью последовательную взаимосвязь в качестве исходных данных, и оно будет использоваться в качестве входных данных для задачи регрессии.
Улучшенный подход может заключаться в том, что вместо выбора только последних скрытых состояний кодера в качестве представления вы можете выбрать определенное количество последних скрытых состояний (например, минимальное количество L в течение дней) в качестве кодированного представления. Но я не видел ни одной статьи, в которой была бы эта идея.