Найти в Дзене
Властелин машин

Успокоительный алгоритм для безошибочных прогнозов

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

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

Для удобства сравнения я предварительно склеил два вектора прогнозов (функцией merge из библиотеки Pandas):

-2

Затем осуществил следующую последовательность шагов:

1 Проверил, что новые предсказания не теряют значения (старые были, а новые не появились) и обратно (новые образованы, когда старых не было):

-3

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

2 Исключил ситуацию одновременных null значений и удостоверился, что в части данных значения совпадают, а в части - нет:

-4

3 Дальше разбираемся в причинах именно таких значений.

В данном случае значения должны были корректироваться при наличии резервов соответствующей позиции (хранятся в столбце stock_ser):

-5

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

-6

Убедимся, что изменения только в тех позициях, где есть остатки и их количество совпадает с численностью из вывода выше:

-7

Дальше проверяем логику изменений:

где остатков больше чем прогноз, новый обнуляется (если данные большие, сравниваем таблицы по количеству записей):

-8

где остатков меньше, новый прогноз равен разности:

-9

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

-10