Меня зовут Алексей, и я более 15 лет занимаюсь управлением b2b-b2c продуктами и руководством командами в энтерпрайзе и стартапах. В этой статье я бы хотел поделиться одним кейсом, показывающим, как с развитием AI и ML эволюционировали подходы в части проверки продуктовых и инженерных гипотез и как вы можете проводить значимые для бизнеса и для вас эксперименты, не закладывая все бабушкино золото в ломбард.
Хотя темы золота, а также его цены и умения ее предсказывать 'за недорого' мы также обязательно коснемся ;) Поехали!
Откуда растут ноги
«Все имеет свою цену!» внушали нам с детства, на что пытливые умы отвечали вопросами «Что есть цена?», «Как ей управлять?», «Можно ли ее предсказать?». Кого-то эти вопросы увлекают настолько, что они решают связать с ценами всю свою жизнь и становятся кассиром в Пятерочке, кто-то для экспериментов с ценой заходит на всю "котлету" на биржу, мой же путь к освоению азов ценообразования оказался чуть менее тернистым( но это неточно) и начался 15 лет назад с разработки платформы для бухгалтерского и складского учета в Ритейле. В то время понятия predictive analytics и price forecasting стояли в одном ряду с объявлениями вида: “Элитная лоботомия: Долго! Больно! Дорого!”, и гадание на утреннем кофе давало зачастую лучший по точности результат, чем программная имплементация доступных на тот момент предиктивных методов.
![](https://habrastorage.org/getpro/habr/upload_files/9b2/d79/cb4/9b2d79cb4fdca4daf092e57be246148b.png)
Современное развитие технологий AI и ML открывает здесь новые возможности, и мы уже активно применяем наработанную технологическую и аналитическую экспертизу в тех сферах, где вопросы ценообразования наиболее актуальны – в том же ритейле, на производстве, в общепите и других областях.
Сегодня я бы хотел поделиться одним небольшим, но наглядным примером того, как за последнее время в этой сфере эволюционировали подходы, инструментарий и как все это отражается на результатах реального бизнеса.
Сколько стоит золото?
Что вы представляете, когда слышите слово “майнинг”?
Мой ассоциативный ряд, как жителя Иркутской области с ценой за электроэнергию в районе 1 рубля за кВт, долгое время обрывался на "асике", греющем бабушкину дачу. Все до того момента, пока я не столкнулся с компаниями, занимающимися добычей полезных ископаемых, и тогда пришло осознание, что майнинг - это не только про биткойн, но еще про никель, медь, золото, вместе с которыми на поверхность выходит и такая прикладная задача как Mineral Commodity Price Forecasting, решение которой актуально, в частности, в золотодобыче, к которой и будет относиться разбираемый нами кейс.
В Иркутской области и соседствующей с ней Монголии хорошо развита золотодобывающая индустрия и на фоне обновляющихся в 2024 году исторических максимумов по ценам на золото( 2131,5$ за унцию на начало марта ) здесь была открыта не одна бутылка шампанского! Но лекции «Полюс Золото - следующая ракета фондового рынка РФ» и «Улан-Батор – город контрастов» с картинками юрт на фоне небоскребов я приберегу для другого раза, сейчас же расскажу, как местные добывающие компании подходят к решению насущных производственных и операционных задач с помощью технологий машинного обучения. Хотя какая детская книжка или статья на Хабре без картинок! Так что держите! :)
![Автор на фоне контрастов Автор на фоне контрастов](https://habrastorage.org/getpro/habr/upload_files/717/9ce/1c7/7179ce1c7011e86159ee9c23c1f92c8a.png)
Гадание на ML: Туз пентаклей среди моделей
Так исторически сложилось, что большая часть решений для прогнозирования цен на минеральные ресурсы в индустрии разработана на базе моделей ARIMA (Autoregressive Integrated Moving Average) или интегрированной модели авторегрессии скользящего среднего, и GARCH (Generalized Autoregressive Conditional Heteroskedasticity) или обобщенной авторегрессионной модели гетероскедастичности. За годы их использования нередко возникали вопросы об оптимизации, повышении точности или даже замене на другие более подходящие модели.
Ниже, например, приведены данные эксперимента, основанного на модели ARIMA, в рамках рассмотрения нашего кейса о динамике цен на унцию золота, из которых становится понятно, почему изменения здесь назрели. Модели в эксперименте обучались на исторических данных, собранных за период с 1950 по 2022 год.
![Прогноз ARIMA и факт цены за унцию золота на 2023 год Прогноз ARIMA и факт цены за унцию золота на 2023 год](https://habrastorage.org/getpro/habr/upload_files/2de/5d0/f00/2de5d0f005ac7e840a6e0abd35f1f814.png)
![Величина ошибок в зависимости от таймфрейма для модели ARIMA Величина ошибок в зависимости от таймфрейма для модели ARIMA](https://habrastorage.org/getpro/habr/upload_files/feb/ca8/d4f/febca8d4f81c6f36dc3577008cb21743.png)
В результате анализа задачи, аудита существующих решений и проведенных экспериментов мы пришли к заключению о возможности эффективной замены моделей на базе ARIMA и GARCH на LSTM( Long short-term memory) или модели долгой краткосрочной памяти, которые даже на этапе прототипа показали более многообещающие результаты.
Сама LSTM модель в эксперименте строилась на базе библиотек TensorFlow и Keras API, при этом для обучения в качестве loss-функции использовалась оценка среднеквадратичной ошибки, а в качестве алгоритма оптимизации был выбран Adam (Adaptive Moment Estimation) optimizer:
# Создание модели
model = Sequential()
model.add(LSTM(50, input_shape=(1, look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
# Остановка в отсутствии улучшений в течение 10 эпох
early_stopping = EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True)
# Тренировка модели
model.fit(X_train, Y_train, epochs=100, batch_size=1, verbose=2, validation_data=(X_test, Y_test), callbacks=[early_stopping])
# Погадай-ка мне, большая черепаха!
train_predict = model.predict(X_train)
test_predict = model.predict(X_test)
Ниже вы можете найти результаты работы модели, обученной на том же датасете, что и ARIMA из примера выше:
![Прогноз LSTM и факт цены за унцию золота на 2023 год Прогноз LSTM и факт цены за унцию золота на 2023 год](https://habrastorage.org/getpro/habr/upload_files/e0d/eb2/89d/e0deb289dae830a622f801f08ed03a51.png)
![Величина ошибки в зависимости от таймфрейма для LSTM Величина ошибки в зависимости от таймфрейма для LSTM](https://habrastorage.org/getpro/habr/upload_files/6d8/60a/f83/6d860af83d6abbd5f96f91abe70e7402.png)
Из приведенных данных видно, что для всех сценариев точность прогноза LSTM модели существенно превосходит показатели ARIMA, что в конечном итоге конвертируется в более эффективные решения и лучшие финансовые показатели для бизнеса, тем самым с лихвой окупая затраты на оптимизацию существующих процессов и внедрение передовых технологий в производство и операционную деятельность, учитывая, что продолжительность такого сорта экспериментов ограничивается неделями, а PoC решение может быть получено без привлечения дорогостоящих ресурсных мощностей.
Вместо заключения
Базовый принцип “Работает – не трогай!” ранее во многом обосновывался тем, что цена любого изменения в созданном программном монолите зачастую была непомерно высока. Сейчас же на фоне гиперактивного развития больших языковых моделей или LLM ( Large Language Model) в последние годы стоимость проверки продуктовых гипотез и проведения технологических экспериментов в ряде случаев сократилась в разы, поэтому впору задуматься о пересмотре данного принципа и переходу к новому - “Работает? может лучше!”.
Несмотря на то, что все трюки, описанные в этой статье, исполнены несомненными профессионалами, я настоятельно рекомендую попробовать повторить их в домашних условиях :)
Цена пробы и ошибки стала относительно небольшой, поэтому экспериментируйте, оптимизируйте, и да пребудет с вами сила технологий!