Вопрос или проблема
Я хочу предсказать, выйдет ли машина из строя на основе самой последней серии измерений, полученных с помощью бортовых датчиков. У меня есть несколько десятков машин, каждая из которых имеет датчик, который делает измерение через равные интервалы. Некоторые машины уже вышли из строя, но большинство еще работает. Получившийся набор данных выглядит примерно так, как приведенные ниже примеры, с одной строкой для каждой машины, показывающей 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 отдельных признаков (например, разные типы показаний), но с лишь одним временным шагом для каждого, что не соответствует вашей задаче анализа временных рядов.
Алгоритм работы с данными
Прежде чем приступить к обучению модели, вам необходимо убедиться, что:
-
Предобработка данных: Убедитесь, что ваши данные корректно нормализованы и очищены от шумов. Это может включать в себя шкалирование значений для устранения влияния различий в масштабе показаний.
-
Разделение данных: Не забудьте разделить набор данных на тренировочную и проверочную выборки для последующей оценки производительности модели.
-
Подбор архитектуры модели: Необходимо будет настроить архитектуру CNN так, чтобы она была оптимизирована для обработки временных данных. Это может включать использование модифицированных сверточных слоев и рекуррентных элементов, если это необходимо.
Заключение
Таким образом, для предсказания отказов машин на основе временных последовательностей показаний датчиков, используйте форму входного тензора (num_of_samples, 1, 30). Это позволит вашей модели эффективно извлекать признаки из временных данных и улучшит качество предсказаний.
Обратите внимание на необходимость тщательной предобработки данных и настройки самой модели. Такой подход может значительно повысить ваши шансы на успешное прогнозирование отказов машин.