Проекты таких крупных заказчиков, как компании из топ РБК-500, зачастую не ограничиваются созданием только хранилища данных. Для достижения обозначенных заказчиком целей мы параллельно решаем комплекс задач, связанных с улучшением различных бизнес-процессов. К числу таковых относятся и оптимизационные. Это класс задач, требующий нахождения максимума или минимума какой-либо функции полезности, как правило достаточно сложной.
В нашей практике к ним относились, например, такие вопросы:
Чтобы ответить на эти и другие вопросы, чтобы создать рекомендательную систему, которая обеспечит поддержку принятия управленческих решений, необходимо решить несколько задач:
При разработке модели определяется функция оптимизации, пространство критериев и методы их свертки. Чаще всего используется линейная свертка, реже свертка со взвешиванием. Ищется эффективное множество решений по Парето и Джеофриону. Обычно в качестве ядра оптимизационной модели используются методы линейного программирования (например симплекс метод) или генетические алгоритмы, но для специфических задач могут использоваться и другие методы и подходы.
Ключевой этап в процессе разработки оптимизационной модели – регулярное извлечение и трансформация необходимых данных. Рационально такие задачи решать на этапе построения АХД. Однако, мы часто сталкиваемся с ситуацией, когда часть информации, напрямую влияющей на целевую функцию, недоступна для автоматической обработки, поскольку эксперт хранит ее в слабоструктурированном виде (файлы word, заметки и пр.). В таком случае мы предлагаем организовать бизнес-процессы так, чтобы необходимая информация имела реляционное цифровое отражение.
Как показывает наш опыт, для построения качественных моделей, методов оптимизации недостаточно. Необходимо использовать специальный набор данных, подготовка которого требует применения также и специальных методов. Например, таких как группировка, вычисление агрегатов, квантование, нормализация данных, очистка данных, корректировка выбросов, или расчет различных прогнозных показателей, использование методов классификации, кластеризации для получения дополнительной информации и других типовых методов обработки данных.
В ряде случаев для повышения точности оптимизационной модели целесообразно использовать методы Artificial Intelligence (AI) и Machine Learning (ML), такие как, эволюционные вычисления, генетические алгоритмы, алгоритмы имитации отжига, эволюционное программирование, эволюционные стратегии, детерминированные методы, поиск с запретом, искусственные нейронные сети и т.п. При применении данных методов необходимо учитывать их особенности, например, склонность к нахождению локального оптимума у генетических алгоритмов, отсутствие обоснования полученных результатов («черный ящик») у нейросетевых моделей и т.д. Для построения и развертывания оптимизационных моделей основанных на методах Artificial intelligence и Machine Learning мы обычно используем MS Machine Learning Studio, Python (Jupiter Notebooks, различные библиотеки).
Важным условием создания функциональной прогнозной модели является разработка и применение всего ансамбля различных математических моделей совместно с комплексом методов извлечения, трансформации, предобработки и обработки данных. При этом необходимо взаимодействие с экспертами в предметной области на каждом этапе построения ансамбля моделей, для обсуждения гипотез и оценки полученных результатов.
Избранная нами стратегия, в которой мы опираемся на вариативность математических методов, приемов и способов решения обозначенных заказчиком оптимизационных задач, позволяет нам находить конечный результат с наименьшими затратами на вычисления и получать наибольший объем ценной в моменте аналитической информации. В результате заказчик получает в оперативный доступ функциональный масштабируемый инструмент для быстрого поиска оптимальных значений в широком диапазоне метрик.