Форма входного тензора для бинарной классификации временных рядов с использованием CNN

Вопрос или проблема

Я хочу предсказать, выйдет ли машина из строя на основе самой последней серии измерений, полученных с помощью бортовых датчиков. У меня есть несколько десятков машин, каждая из которых имеет датчик, который делает измерение через равные интервалы. Некоторые машины уже вышли из строя, но большинство еще работает. Получившийся набор данных выглядит примерно так, как приведенные ниже примеры, с одной строкой для каждой машины, показывающей 30 самых последних измерений датчика, а также обозначение “сбой”, где 0 указывает на то, что машина все еще работает, а 1 указывает на то, что машина вышла из строя после измерения, полученного в time30.

    ID  time1   time2   time3   time4   time5   time6   time7   time8   time9   time10  time11  time12  time13  time14  time15  time16  time17  time18  time19  time20  time21  time22  time23  time24  time25  time26  time27  time28  time29  time30  failure
0   1   3.085   1.360   2.351   3.858   5.562   3.709   6.423   9.706   5.521   0.045   5.676   6.045   5.540   8.404   2.701   7.969   2.535   5.096   7.949   5.888   9.250   6.608   1.441   2.066   8.885   6.985   1.310   4.245   9.068   3.283   0
1   2   7.938   9.833   5.776   3.218   0.978   4.164   8.079   7.425   5.554   0.259   5.927   5.168   8.751   8.713   5.651   9.342   0.385   6.623   4.348   9.113   9.230   7.134   4.316   4.725   9.258   4.248   6.497   7.354   7.707   2.527   0
2   3   5.946   0.096   1.972   6.362   9.990   6.702   9.683   5.111   2.273   7.581   0.379   5.571   0.274   9.429   3.572   2.032   0.543   0.467   3.028   1.095   0.529   8.780   4.375   7.544   0.754   5.400   4.943   1.821   1.486   2.492   1
3   4   6.793   9.299   1.522   9.307   0.438   9.999   0.481   6.420   3.881   4.933   7.185   4.176   4.224   7.403   9.101   3.300   3.273   0.556   6.421   5.528   9.262   6.160   1.573   9.299   4.307   0.808   4.270   6.886   3.548   4.889   0
4   5   8.470   5.503   7.420   8.363   3.316   1.047   9.695   3.884   2.010   8.353   1.308   7.733   7.898   3.327   2.737   2.858   2.002   5.483   7.750   4.952   2.435   5.980   6.403   0.985   1.591   8.886   7.586   0.062   6.002   1.144   1

Проблема

Я не понимаю, какой формы должны быть мои входные тензоры. Должен ли мой входной тензор иметь форму (num_of_samples, 1, 30) или (num_of_samples, 30, 1), где 30 – это количество измерений временных точек на образец? Я сделал связанный пост здесь, который сосредоточен на коде и содержит дополнительные специфики о структуре моего CNN с использованием PyTorch.

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

Ответ или решение

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

Понимание формы входного тензора

В вашем случае, форма входного тензора должна быть (num_of_samples, 1, 30), где:

  • num_of_samples — это количество образцов (в данном случае количество машин), каждый из которых будет представлять собой набор последних показаний датчиков.
  • 1 — это количество каналов. Например, если мы рассматриваем одномерные временные ряды, количество каналов равно 1.
  • 30 — это количество временных точек (показаний) для каждой машины.

Таким образом, каждая машина либо в исправном состоянии (failure = 0), либо уже потерпела отказ (failure = 1), и на основе последних 30 показаний вам предстоит делать предсказание.

Почему именно (num_of_samples, 1, 30)?

Структура (num_of_samples, 1, 30) подходит для работы с одноразмерными временными данными, так как большинство моделей CNN ожидает многоканальные входы. Если бы вы использовали (num_of_samples, 30, 1), это обозначало бы, что у вас 30 отдельных признаков (например, разные типы показаний), но с лишь одним временным шагом для каждого, что не соответствует вашей задаче анализа временных рядов.

Алгоритм работы с данными

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

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

  2. Разделение данных: Не забудьте разделить набор данных на тренировочную и проверочную выборки для последующей оценки производительности модели.

  3. Подбор архитектуры модели: Необходимо будет настроить архитектуру CNN так, чтобы она была оптимизирована для обработки временных данных. Это может включать использование модифицированных сверточных слоев и рекуррентных элементов, если это необходимо.

Заключение

Таким образом, для предсказания отказов машин на основе временных последовательностей показаний датчиков, используйте форму входного тензора (num_of_samples, 1, 30). Это позволит вашей модели эффективно извлекать признаки из временных данных и улучшит качество предсказаний.

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

Оцените материал
Добавить комментарий

Капча загружается...