Вопрос или проблема
У меня есть паровая машина, оборудованная следующими датчиками:
- датчик температуры в котельной
- датчик температуры в отопительном помещении
- датчик давления в котельной
- датчик оборотов в минуту, который измеряет обороты колеса, которое приводится в движение паровой машиной
Что паровая машина не измеряет, так это текущий уровень воды в котле. Данные временных рядов хранятся в CSV-файле со следующей структурой:
| временная метка | температура_котла | температура_отопителя | давление_котла | обороты |
С помощью машинного обучения я хотел бы предсказать текущий уровень воды в котле. Поскольку я совершенно новичок в машинном обучении, я не знаю, как это сделать. Я знаю, что не могу применить линейную регрессию, потому что это данные временных рядов, и есть корреляция между текущими значениями датчиков и предыдущими значениями датчиков. Более того, мне понадобятся исторические данные об уровне воды, чтобы выполнить линейную регрессию.
Итак, какие есть варианты?
Должен ли я использовать нейронную сеть, потому что у меня нет значений уровня воды? (Ключевые слова: сенсорная фьюжн, виртуальный датчик, софтсенсор)
Любая помощь будет очень оценена!
ИЗМЕНЕНИЕ: Поскольку линейная регрессия не является вариантом, я хотел бы знать, какие альтернативы существуют. Поскольку я полный новичок в машинном обучении в общем, мне хотелось бы узнать, какие алгоритмы или стратегии я могу использовать, чтобы решить эту задачу. Я не прошу о фрагментах кода или чем-то подобном. Просто несколько вводных данных, чтобы я мог это проработать!
Первый важный момент здесь заключается в том, что у вас нет исторических значений уровня воды. Это метки, которые вы использовали бы для обучения любого контролируемого модели. Без меток вы ограничены использованием неконтролируемых методов. Посмотрите на обзор в Википедии
Вы можете попробовать что-то вроде кластеризации, например, с помощью k-Means, что будет довольно быстро. Другие алгоритмы кластеризации, такие как DBSCAN, тоже очень хороши, но ваши переменные (температура и давление) могут не обязательно хорошо кластеризоваться по их плотности в входном пространстве (D в DBSCAN).
Существуют неконтролируемые подходы с использованием нейронных сетей, но они немного сложнее. Автокодировщики могут стать хорошим началом.
Посмотрите здесь для получения дополнительных идей о конкретных моделях, которые можно попробовать, таких как автокодировщики для удаления шума, которые могут использовать рекуррентные компоненты (такие как LSTM), которые могут хорошо работать с данными временных рядов.
Ответ или решение
Управление уровнем воды в котле с помощью сенсорного слияния: предсказание уровня воды на основе анализа данных сенсоров
Ваша задача по предсказанию уровня воды в котле парового двигателя представляет собой интересный вызов, особенно с учетом отсутствия исторических данных по уровню воды. Однако, применяя методы машинного обучения, вы можете создать «виртуальный сенсор», который будет основан на анализе данных других сенсоров.
I. Понимание данных
Вы имеете набор сенсоров, которые предоставляют следующие параметры:
- Температура в котельной (temp_boiler)
- Температура в нагревательной комнате (temp_heater)
- Давление в котле (pressure_boiler)
- Обороты в минуту (rpm)
Данные хранятся в формате временных рядов, что представляет собой основу для вашего анализа. Временные ряды имеют свою специфику, так как данные зависят от предыдущих временных значений.
II. Проблема отсутствия меток
Ключевая проблема заключается в том, что у вас нет меток (в данном случае – уровней воды), которые могли бы использоваться для обучения моделей в рамках контролируемого обучения. Поэтому вам необходимо рассмотреть возможности неконтролируемого обучения и другие подходы.
III. Альтернативные подходы
-
Кластеризация данных:
- Рассмотрите возможность использования алгоритма k-средних (k-Means) для обнаружения паттернов в данных. Этот метод может помочь разделить данные по кластерам, основываясь на схожести параметров. Это поможет вам увидеть, как различные параметры взаимодействуют друг с другом в различных состояниях.
- Другие алгоритмы, такие как DBSCAN, могут также быть полезны, но исходя из плотности данных, может оказаться, что ваши параметры не укладываются в его требования.
-
Автокодировщики:
- Автокодировщики – это вид нейронных сетей, которые могут быть использованы для снижения размерности данных и выявления устойчивых представлений. С помощью автокодировщиков вы можете захватывать важные зависимости между различными сенсорными данными. Кроме того, вы можете рассмотреть стохастические автокодировщики или шумовые автокодировщики, которые могут улучшить результаты при работе с временными рядами.
-
Рекуррентные нейронные сети (RNN):
- Используйте долгосрочную краткосрочную память (LSTM), которая является разновидностью RNN, удобной для работы с временными рядами. Овладение LSTM может быть довольно сложным, но это один из лучших методов для моделирования последовательных данных, что позволяет учитывать как предыдущие, так и текущие значения параметров.
-
Подходы на основе правил:
- Наконец, вы можете рассмотреть создание моделей на основе правил, используя знания о физической системе. Например, вы можете определить эмпирические формулы для оценки уровня воды на основе анализа температур и давления, что может служить дополнительным направлением исследования.
IV. Заключение
Исходя из всего вышеизложенного, создание виртуального сенсора для предсказания уровня воды в котле возможно, несмотря на отсутствие исторических данных по уровню воды. Используя методы неконтролируемого обучения, такие как кластеризация и автокодировщики, а также рeкуррентные нейронные сети, вы сможете создать действенную модель для косвенного предсказания уровня воды. Ваш следующий шаг – это глубокое изучение каждого из этих методов, тестирование их и анализ полученных результатов.
Эти подходы открывают новые горизонты в использовании машинного обучения для управления инженерными системами, что может существенно повысить эффективность работы вашего парового двигателя.