Прогнозирование продуктивности сотрудников с помощью машинного обучения в MindsDB

Автор сообщества: Чандре Ван Дер Вестхайзен

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

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

Предварительные условия

  1. Доступ к MindsDB Cloud или локальное развертывание с помощью установки docker или pip.
  2. Набор данных: Вы можете найти набор данных на Kaggle.

Подключение вашей базы данных к MindsDB.

Первым шагом будет установление соединения с базой данных через графический интерфейс MindsDB, который имеет редактор SQL, упрощающий выполнение запросов. MindsDB позволяет подключаться к вашим любимым базам данных, хранилищам данных и озерам данных с помощью синтаксиса CREATE DATABASE.

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

  • Зайдите в графический интерфейс MindsDB либо через облако, либо по URL 127.0.0.1:47334/.
  • На странице по умолчанию выберите кнопку Добавить данные или выберите значок разъема на левой боковой панели.
  • Появится страница «Выберите источник данных», на которой вы сможете выбрать тип базы данных. MindsDB имеет список баз данных, которые можно выбрать. В этом учебнике мы выберем базу данных postgres.

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

Необходимые параметры следующие:

  • CREATE DATABASE display_name — отображаемое имя для базы данных.
  • WITH ENGINE = «postgres», — имя обработчика mindsdb.
  • ПАРАМЕТРЫ = {
    • «user»: » «, — ваш пользователь базы данных.
    • «password»: » «, — Ваш пароль.
    • «host»: » «, — хост, это может быть ip или url.
    • «port»: «5432», — общий порт — 5432.
    • «database»: » » — имя вашей базы данных *опционально}.

Выберите кнопку Run или Shift+Enter для выполнения синтаксиса. После создания соединения с базой данных на консоли появится сообщение «Запрос успешно завершен».

Обратите внимание, что некоторые соединения с базами данных требуют запуска туннеля Ngrok для установления соединения.
Выполните команду ngrok в терминале:

ngrok tcp [db-port]

например, если номер вашего порта 5433, вы увидите аналогичное сообщение:

Session Status                online
Account                       myaccount (Plan: Free)
Version                       2.3.40
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    tcp://6.tcp.ngrok.io:14789 -> localhost:5433

Информация о перенаправленном адресе потребуется при подключении к графическому интерфейсу MindsDB. Выберите и скопируйте информацию ‘Forwarding’, в данном случае это 6.tcp.ngrok.io:14789, где 6.tcp.ngrok.io будет использоваться в качестве параметра хоста, а 14789 — в качестве номера порта.

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

Вы можете выполнять запросы непосредственно в базе данных. Ниже приведен пример используемого синтаксиса:

SELECT * 
FROM example_db.datasource.table_name
LIMIT 10;
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы запустим запрос для предварительного просмотра данных:

SELECT * 
FROM mindsdb_predictions.data.garments
LIMIT 10;
Войти в полноэкранный режим Выйти из полноэкранного режима

MindsDB также имеет функциональность для загрузки файла и ВЫБОРА данных из файла для создания модели машинного обучения.

Понимание данных

+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
| date     | quarter  | department | day      | team | targeted_productivity | smv   | wip    | over_time | incentive | idle_time | idle_men | no_of_style_change | no_of_workers | actual_productivity |
+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
| 1/1/2015 | Quarter1 | sweing     | Thursday |   12 |                   0.8 | 11.41 |  968.0 |      3660 |        50 |       0.0 |        0 |                  0 |          30.5 |         0.800570492 |
| 1/1/2015 | Quarter1 | sweing     | Thursday |    6 |                   0.8 |  25.9 | 1170.0 |      1920 |        50 |       0.0 |        0 |                  0 |          56.0 |         0.800381944 |
| 1/1/2015 | Quarter1 | sweing     | Thursday |    7 |                   0.8 |  25.9 |  984.0 |      6720 |        38 |       0.0 |        0 |                  0 |          56.0 |            0.800125 |
| 1/1/2015 | Quarter1 | sweing     | Thursday |    3 |                  0.75 | 28.08 |  795.0 |      6900 |        45 |       0.0 |        0 |                  0 |          57.5 |         0.753683478 |
| 1/1/2015 | Quarter1 | sweing     | Thursday |    2 |                  0.75 | 19.87 |  733.0 |      6000 |        34 |       0.0 |        0 |                  0 |          55.0 |         0.753097531 |
+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+---------------------+
Вход в полноэкранный режим Выйти из полноэкранного режима

Где:

Колонка Описание Тип данных Использование
date Дата в формате ММ-ДД-ГГГГ integer Характеристика
quarter Часть месяца. Месяц был разделен на четыре квартала character varying Характеристика
department Отдел, связанный с данным экземпляром integer Характеристика
day День недели character varying Характеристика
team Ассоциированный номер команды с экземпляром integer Характеристика
targeted_productivity Целевая производительность, установленная администрацией для каждой команды на каждый день. integer Характеристика
smv Стандартное значение минуты, это время, отведенное на выполнение задачи. integer Характеристика
wip Незавершенное производство. Включает в себя количество незавершенных элементов для продуктов integer Характеристика
over_time Представляет собой количество сверхурочной работы каждой команды в минутах integer Характеристика
incentive Представляет сумму финансового поощрения (в БДТ), которая позволяет или мотивирует определенный курс действий. integer Характеристика
idle_time Количество времени, когда производство было прервано по нескольким причинам integer Характеристика
idle_men Количество работников, которые простаивали из-за остановки производства integer Характеристика
no_of_style_change Количество изменений в стиле конкретного продукта integer Характеристика
no_of_workers Количество рабочих в каждой команде integer Характеристика
actual_productivity Фактический % производительности, который был достигнут рабочими. Варьируется от 0-1 integer Метка

Метка — это то, что мы прогнозируем, — переменная y в простой линейной регрессии.
Характеристика — это входная переменная — переменная x в простой линейной регрессии.

Создание регрессионной модели прогнозирования машинного обучения.

Чтобы делать предсказания, мы создадим модель машинного обучения с помощью оператора CREATE PREDICTOR и сделаем регрессионное предсказание.
В синтаксисе мы укажем, какие столбцы/функции использовать для обучения и какой столбец модель должна научиться предсказывать в качестве нашей цели/метки. В данном случае мы выберем все данные для обучения и используем столбец ‘Target’ в качестве целевой переменной/метки, которую мы хотим предсказать.

В редакторе SQL будет выполнен следующий синтаксис:

CREATE PREDICTOR garments_productivity
FROM mindsdb_predictions
(SELECT * FROM data.garments)
PREDICT actual_productivity;
Войти в полноэкранный режим Выйти из полноэкранного режима

Выберите кнопку Run или Shift+Enter для выполнения синтаксиса. Если при создании запроса не возникло проблем, вы получите сообщение в консоли «Запрос успешно завершен».


Обучение модели может занять некоторое время. Состояние обучения модели можно проверить с помощью приведенного ниже синтаксиса:

SELECT * FROM mindsdb.predictors WHERE name='garments_productivity'
Войти в полноэкранный режим Выйти из полноэкранного режима

Как только модель будет создана, статус должен показать обучение. Как только модель закончит обучение, статус покажет завершение. Ниже показано, что точность модели составляет 84%.

Статус предиктора должен быть «завершен» перед созданием прогноза

Создание регрессионного прогноза

Когда статус предиктора показывает «завершен», можно приступать к созданию прогноза. Прогнозирование выполняется с помощью оператора SELECT путем запроса предиктора, как если бы это была таблица. Мы предоставим функции с параметрами, чтобы получить результат.

Для создания прогноза используется следующий синтаксис:

SELECT actual_productivity, actual_productivity_explain FROM garments_productivity WHERE date='1/1/2015' AND quarter='Quarter1' AND department='sweing' AND day='Thursday' 
AND team=8 AND targeted_productivity=0.8 AND smv=26.16 AND wip=1108 
AND over_time=7080 AND incentive=98 AND idle_time=0 AND idle_men=0 
AND no_of_style_change=0 AND no_of_workers=59;
Войти в полноэкранный режим Выйти из полноэкранного режима

Выполните приведенный выше синтаксис, и вы увидите следующие результаты:

Фактическая производительность имеет значение от 0 до 1. Модель предсказала, что с этими параметрами результат для производительности сотрудников составит 0,93, а с помощью Target_explain мы можем увидеть уровни доверия, которые показывают, что confidence_lower_bound составляет 0,8556, а confidence_higher_bound — 1. Это означает, что швейная компания может ожидать, что производительность сотрудников будет между 0,8556 и 1.

Составление пакетных прогнозов.

Модель также может делать пакетные прогнозы с помощью пункта JOIN:

SELECT a.actual_productivity as productivity, b.actual_productivity as predicted_productivity, 
a.date, a.quarter, a.department, a.day,
a.team, a.targeted_productivity, a.smv, a.wip,
a.over_time, a.incentive, a.idle_time, a.idle_men,
a.no_of_style_change, a.no_of_workers
FROM mindsdb_predictions.data.garments as a
JOIN mindsdb.garments_productivity as b limit 5;
Войти в полноэкранный режим Выйти из полноэкранного режима

Результаты:

+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
| productivity | predicted_productivity | date     | quarter  | department | day      | team | targeted_productivity | smv   | wip    | over_time | incentive | idle_time | idle_men | no_of_style_change | no_of_workers |
+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
| 0.800570492  | 0.7820790218694679     | 1/1/2015 | Quarter1 | sweing     | Thursday | 12   | 0.8                   | 11.41 | 968.0  | 3660      | 50        | 0.0       | 0        | 0                  | 30.5          |
| 0.800381944  | 0.8169200021797305     | 1/1/2015 | Quarter1 | sweing     | Thursday | 6    | 0.8                   | 25.9  | 1170.0 | 1920      | 50        | 0.0       | 0        | 0                  | 56.0          |
| 0.800125     | 0.7619499385051534     | 1/1/2015 | Quarter1 | sweing     | Thursday | 7    | 0.8                   | 25.9  | 984.0  | 6720      | 38        | 0.0       | 0        | 0                  | 56.0          |
| 0.753683478  | 0.762949004815915      | 1/1/2015 | Quarter1 | sweing     | Thursday | 3    | 0.75                  | 28.08 | 795.0  | 6900      | 45        | 0.0       | 0        | 0                  | 57.5          |
| 0.753097531  | 0.752386052621824      | 1/1/2015 | Quarter1 | sweing     | Thursday | 2    | 0.75                  | 19.87 | 733.0  | 6000      | 34        | 0.0       | 0        | 0                  | 55.0          |
+--------------+------------------------+----------+----------+------------+----------+------+-----------------------+-------+--------+-----------+-----------+-----------+----------+--------------------+---------------+
Войти в полноэкранный режим Выход из полноэкранного режима

Хотите попробовать сами? Зарегистрируйте бесплатную учетную запись MindsDB и присоединяйтесь к нашему сообществу!
Присоединяйтесь к сообществу MindsDB на Slack или Github, чтобы задавать вопросы, делиться идеями и мыслями!

Обязательно загляните на официальный сайт MindsDB. Для получения дополнительной информации ознакомьтесь с другими учебными пособиями и документацией MindsDB.

Оцените статью
devanswers.ru
Добавить комментарий