Оптимизируйте процесс производства сыра с помощью недорогих решений Интернета вещей и машинного обучения.

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

Предыдущая система контроля качества включала человека, который заходил в каждую холодную камеру каждые четыре часа и вручную снимал показания температуры с цифрового дисплея. Это хорошо сработало для мониторинга в обычное рабочее время, но не по вечерам и в выходные дни. И, конечно, при условии, что в течение четырех часов ничего не пойдет не так. Поскольку завод расположен в сельской местности, регулярно случаются перебои в подаче электроэнергии и установлен резервный генератор. Однако случалось, что генератор не запускался, что приводило к потере продукции в выходные дни.

Фаза 1 сосредоточена на улучшенном мониторинге, который будет кратко обсужден, а фаза 2 сосредоточена на внедрении машинного обучения, которое будет подробно обсуждаться в этом сообщении блога.

Этап 1: улучшенный мониторинг

Первым шагом проекта было внедрение решения Интернета вещей (IoT) для обеспечения мониторинга их холодильных систем в холодильных камерах в реальном времени. Несмотря на то, что доступно несколько коммерческих решений IoT, затраты, как правило, быстро растут, если учесть плату за датчики, инфраструктуру и облачный хостинг, особенно для небольшого предприятия.

Более экономичным решением было изготовленное на заказ устройство IoT с микроконтроллером ESP32 и некоторыми готовыми датчиками. Было создано простое веб-приложение, размещенное на локальном ПК.

Система измеряет температуру внутри холодильной камеры, потребляемую мощность холодильных агрегатов и температуру наружного воздуха. Теперь, вместо ручного точечного измерения, температура в реальном времени автоматически измеряется каждые 30–60 секунд, что обеспечивает более последовательный мониторинг и дает больше информации о работе системы.

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

Этап 2. Использование данных для лучшего понимания

Внедрение решения IoT обеспечило улучшенный мониторинг и большое количество данных в реальном времени, которых раньше не было. Следующим этапом проекта является внедрение более продвинутой аналитики, то есть с использованием сгенерированных данных, чтобы лучше понять процесс и работу системы.

Три ключевых бизнес-потребности

1. Как мы можем лучше реализовать мониторинг температуры охлаждения? Нам нужно понимать, что происходит с регулярными ложными тревогами и что происходит в контрольных пределах.

2. Каковы текущие энергетические характеристики холодильной системы? Во-первых, можем ли мы построить хорошую энергетическую модель, используя эти доступные данные, и можем ли мы определить потенциальную экономию энергии?

3. Что необходимо сделать для реализации выявленных изменений и можно ли это сделать с минимальными затратами?

Проектный подход

  • Подготовка данных: создание конвейера приема данных, включая обработку данных по качеству. Это также позволит добавлять дополнительные данные в будущем.
  • Исследовательский анализ данных (EDA): изучите новые данные, определите характеристики и определите потенциальные новые функции.
  • Разрабатывайте и тестируйте модели машинного обучения. В зависимости от потребностей бизнеса разработайте подходящие модели и проверьте производительность.
  • Обобщите результаты. Обсудите выводы и следующие шаги для этой части проекта.

Блокноты данных и Python доступны на GitHub :-)

Подготовка данных

Описание датчиков и данные

Описание различных датчиков находится в файле sensor_sensor_202107282041.csv. Это включает в себя:

  • sensor_id для сопоставления с файлами ежедневных данных;
  • sensor_type и sensor_uom (единица измерения);
  • sensor_ucl и sensor_lcl, которые представляют собой верхний и нижний контрольные пределы, используемые для предупреждений; и
  • sensor_uucl и sensor_llcl, которые представляют собой верхний верхний и нижний нижний контрольные пределы, используемые для сигналов тревоги.

Представляющими интерес датчиками являются температура холодильной камеры, потребляемая мощность холодильной камеры и внешняя температура окружающей среды. Есть две холодильные камеры: одна для незавершенного производства (WIP) и одна для отправки (DP).

Система IoT была внедрена к концу марта 2021 года, что позволило получать высокочастотные данные за пять месяцев. Файлы с ежедневными данными были получены в виде сжатых файлов CSV, созданных системой для резервного копирования. Файл содержит три столбца:

  • отметка времени: дата и время снятия показаний датчика.
  • значение: исходное показание датчика в единицах измерения в соответствии с файлом описания датчика; и
  • sensor_id_id: целочисленный идентификатор датчика, соответствующий файлу описания датчика.

Взглянув на статистику необработанных данных, мы видим, что для текущих показаний (32 и 36) имеется около 5000 дополнительных точек данных, что указывает на некоторые недостающие точки данных. Также можно увидеть, что показания температуры (29, 30 и 31) имеют минимум -127, что является подозрительным и также будет влиять на средние и стандартные отклонения в зависимости от того, сколько точек данных этого значения имеется.

Обработка данных

Конвейер данных был разработан для чтения отдельных сжатых файлов данных CSV, объединения их в единый фрейм данных и выполнения некоторой очистки. Следующие критерии используются для фильтрации данных плохого качества в соответствии с системой мониторинга в реальном времени:

  • значение -99 присваивается любому значению датчика, которое было плохого качества или недоступно;
  • значение -127 указывает на низкое качество данных для некоторых датчиков температуры; и
  • значения -327 и 327 указывают на низкое качество данных, которые находятся в крайних пределах диапазона устройства.

В этом приложении температуры обычно чуть выше нуля градусов Цельсия, и поэтому значения -99 или -127 не находятся рядом с нормальным диапазоном. Не было точек данных, равных -99, и точек данных на крайних пределах, но было 155 точек данных, равных -127. После их удаления статистика выглядит более согласованной с процессом.

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

Для анализа энергии измерения тока (мера мощности) были преобразованы в меру энергии, поскольку ток изменяется быстро и наблюдается в зашумленных трендах тока. Нас также интересует потребление энергии, а не мгновенные значения. Напряжение на объекте 400В в трехфазной сети. Предполагается средний коэффициент мощности 0,85. Температурные данные для этого анализа были усреднены за час.

Эти шаги описаны в data-etl.ipynb.

Исследовательский анализ данных

Наружная температура распределена нормально, что имеет смысл. Температура WIP выглядит так, как ожидалось с определенной уставкой, однако температура DP, похоже, имеет две разные уставки. По энергии мы можем видеть периоды, когда оборудование было выключено (с пиком в первом бункере).

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

Наблюдая за различиями в уставках для холодильной камеры Dispatch, мы можем разделить температуру холодильной камеры на 3,5 ° C, чтобы сравнить различия в потреблении энергии для высокой уставки (4 ° C) и низкой уставки (2 ° С). Средняя разница составляет 3 538 кВтч / год, что составляет около 18%. Это подразумевает потенциальную экономию 18%, если он работает с более высоким заданным значением, при условии, что это не повлияет на качество продукта, конечно. Однако нам нужно будет учитывать соответствующие переменные с течением времени, которые могут иметь значительное влияние.

Эти шаги описаны в eda.ipynb.

Использование обнаружения аномалий для мониторинга температуры холодильной камеры

Одним из выводов более последовательного мониторинга стал заметный автоматический цикл размораживания, который происходит каждые 6 часов. Это было причиной большинства ложных тревог. Это не было общеизвестным явлением и редко вызывало проблемы с предыдущими показаниями руководства, за исключением случаев, когда показания были сняты в это время. Мониторинг в реальном времени сделал это видимым, но ложные сигналы тревоги не способствовали внедрению новой системы.

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

У нас есть температурные тренды, которые следуют шестичасовому циклу и предсказуемы при нормальных обстоятельствах. После изучения тенденций временных рядов был определен хороший период для использования в качестве обучающих данных для автокодировщика (между 2021–05–07, 16:30 и 2021–05–11, 4:20). Сложность этого подхода заключается в работе с немаркированными данными и визуальном нахождении хороших циклов. Типичный цикл был исследован для определения временных шагов, необходимых для создания обучающих последовательностей. Типичный временной шаг составляет около 74, что составляет 6 часов 15 минут.

Показатели

При определении модели Кераса в качестве функции потерь была выбрана среднеквадратическая ошибка (MSE), чтобы улучшить наказание за более крупные ошибки, что может быть критичным для этого приложения. Для остальных параметров использовалось значение по умолчанию.

Оценка и выбор модели

После обучения мы видим, что модель хорошо подходит как для обучающих, так и для проверочных данных. Построив MSE, порог восстановления был рассчитан на максимуме потери при обучении 0,13. Некоторые трудности возникли при слишком большой настройке параметров, что привело к большим потерям в моделях.

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

Результаты

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

Регулировка порога функции потерь влияет на чувствительность модели к обнаружению аномалий. Если порог слишком высок, мы можем пропустить периоды сдвига заданной температуры на два градуса, что может означать использование дополнительной энергии или сокращение срока хранения продукта.

Это сложный метод, который можно реализовать с некоторыми базовыми знаниями и библиотеками мирового класса. Это может уменьшить количество ложных тревог для нашего приложения, и его следует комбинировать с другими методами для более надежной реализации.

Эти шаги описаны в anomaly-detection-dp.ipynb. Аналогичный анализ был проведен для холодильной камеры WIP (обнаружение аномалии -wip.ipynb ).

Оценка энергоэффективности холодильной системы

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

С точки зрения качества, требование будет заключаться в том, чтобы температура в холодных помещениях составляла около 4 ° C, и, следовательно, все более холодные условия подразумевают, что для охлаждения в данном конкретном климате потребуется больше энергии. Таким образом, наша энергетическая модель может оценить разницу в энергии между двумя заданными значениями и оценить потенциальную экономию энергии.

Определение модели

Простая модель энергии была разработана с использованием регрессионного анализа, связывающего потребление энергии с температурой окружающей среды и заданной температурой. Использовались ежедневные данные, так как данные могут быть зашумленными через меньшие интервалы, особенно с ограниченными функциями. Для набора данных использовалось такое же температурное разделение, что и на этапе EDA, то есть 3,5 ° C. Для модели заданное значение 4 ° C использовалось в качестве базового уровня, а заданное значение 2 ° C - в качестве нашего отчетного периода с использованием ежедневных данных. Доступные точки данных - 53 и 61 для базового и отчетного периодов, соответственно, и, таким образом, хорошо сбалансированы.

EDA также показал корреляцию между потреблением энергии и внешней температурой. Мы подтверждаем это графиком разброса для базового периода, а также наблюдаем четыре четких выброса в правом верхнем углу, а также небольшую нелинейность с линией спада. Выбросы были удалены из анализа.

Показатели

Среднеквадратичная ошибка (RMSE) была выбрана вместо средней абсолютной ошибки (MAE), поскольку она штрафует за большие ошибки. Небольшие отклонения от прогнозируемой энергии не так важны, но одно большое значение повлияет на совокупные энергетические характеристики. Другой показатель - это скорректированный R-квадрат, поскольку у нас более одной функции, он обеспечивает более надежную метрику, чем R-квадрат, который увеличивается за счет добавления функций. Практическое применение этой метрики состоит в том, чтобы объяснить изменчивость энергопотребления и указать, могут ли мы упускать какие-либо функции.

Оценка и выбор модели

Характеристики (внешняя температура и заданная температура) были стандартизированы, и 25% набора данных использовалось для тестирования. В качестве базовой ссылки была подобрана регрессионная модель OLS, поскольку выбросы были удалены, и наблюдалась лишь небольшая нелинейность. Модель дала RMSE 3,83 и скорректированный R-квадрат 0,5356 на тестовом наборе, что объясняет около 53% изменчивости. Это может указывать на некоторые недостающие соответствующие переменные или на проблемы управления процессом.

Чтобы увидеть, можно ли улучшить модель с помощью более надежного алгоритма, я решил использовать дерево регрессии с усилением, то есть XGBoost, поскольку оно нечувствительно к ненормальности функций, более легко интерпретируемое и точное. Я включил 3 раза для перекрестной проверки, поскольку это небольшой набор данных, использующий ежедневные данные и поиск по сетке для настройки гиперпараметров. Для поиска наилучших параметров были выбраны довольно широкие диапазоны, но при выборе были приняты меры, чтобы модель не была сложной и потенциально переоборудованной, например max_depth не должен заходить слишком глубоко. Чтобы снизить вероятность переобучения, я также указал параметры colsample_bytree и subsample, чтобы на каждом шаге использовались немного разные данные.

Модель дала RMSE 3,49 и скорректированный R-квадрат 0,6147, что примерно на 8% лучше, чем модель регрессии OLS. Наилучшие параметры имели значение max_depth, равное 5, и оба параметра выборки были равны 0,3, что подразумевает приемлемую модель без переобучения. Взглянув на графики регрессии для тестовых данных, остатки выглядят распределенными случайным образом, и на графике Q-Q выделяется только одна точка.

Результаты

Теперь мы можем использовать оптимизированную модель XGBoost для данных отчетного периода, чтобы спрогнозировать энергию, которая была бы потреблена при более высоком заданном значении. Накопленная сумма разницы между прогнозируемым и фактическим потреблением энергии даст дополнительную энергию, которая была потреблена в течение этого периода. Дополнительное потребление энергии составило 419 кВтч за период, и с поправкой на годовой показатель прогнозируемое дополнительное потребление энергии составит 2507 кВтч / год, то есть примерно на 11% больше.

Таким образом, потенциально в течение года завод сможет сэкономить 2 507 кВтч (около 11%) на основе более консервативной модели энергопотребления. Это около 70% анализа графика среднего ящика, выполненного на этапе EDA. Это хорошая экономия, особенно при работе от дизельного генератора во время перебоев в подаче электроэнергии, что увеличивает расходы для бизнеса и увеличивает выбросы углерода.

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

Эти шаги описаны в energy-model.ipynb.

Бизнес-результаты и соображения

Одним из ключевых открытий стал выдающийся автоматический цикл размораживания. Обладая этими знаниями, менеджер по техническому обслуживанию задался вопросом, почему в холодильной камере на другом заводе с идентичной системой не было цикла размораживания. Как выясняется, эта система не была должным образом введена в эксплуатацию, и это объясняет, почему она нуждалась в более частом обслуживании и потребляла больше энергии. С тех пор это было исправлено, что снизило затраты на другой завод в их организации.

Из анализа энергии мы определили, что существует разница в потреблении энергии между заданными значениями 2 ° C и 4 ° C. Снижение потребления энергии примерно на 11% может иметь большое значение для более широкой картины, особенно с учетом более самодостаточных энергетических систем, таких как солнечная энергия и батареи. Это может повлиять на капитальные затраты таких систем, а также на емкость батареи.

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

Вывод

Этот проект был направлен на извлечение выгоды из недорогого, настраиваемого решения IoT с новыми данными в реальном времени. Используя простые методы машинного обучения для обнаружения аномалий, он может позволить персоналу сосредоточиться на реальных сигналах тревоги и избежать ложных сигналов тревоги. Постоянно измеряя энергетические характеристики, можно добиться экономии энергии и затрат.

Применение простых моделей машинного обучения подразумевает, что можно разработать недорогое аналитическое решение, не требующее интенсивных вычислений, которое легко понять, внедрить и поддерживать, обеспечивая при этом 80% ценности для бизнеса.

Возможности для улучшения

Следующим шагом на этом этапе проекта является создание и интеграция конвейеров машинного обучения в основное решение Интернета вещей и предоставление интерфейса для переобучения и развертывания моделей для тестирования.

Последнее важно не только для целей обслуживания модели, но и потому, что данные были ограничены, и было бы полезно использовать более крупный и более репрезентативный набор данных.

Для обнаружения аномалий автокодер должен быть объединен с контрольными пределами и, возможно, статистическими принципами управления процессом, чтобы предложить более надежную функцию сигнализации.

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

Блокноты и данные доступны на GitHub :-)

использованная литература