Введение 3
Постановка задачи 5
Обзор литературы 7
Глава 1. Работа с данными 8
1.1. Исходные данные 8
1.2. Обработка данных 9
1.3. One-hot encoding 9
1.4. Target encoding 10
1.5. Дополнительная обработка данных 13
Глава 2. Алгоритмы машинного обучения 15
2.1. Линейная регрессия 15
2.2. Алгоритм случайного леса 16
2.3. Алгоритм градиентного бустинга 17
2.4. AutoML подход 20
2.5. Нейронные сети 22
Глава 3. Байесовская оптимизация 24
Глава 4. Программные средства 27
Глава 5. Анализ экспериментов 27
5.1. Сравнение алгоритмов 27
5.2. Ансамблирование 31
Глава 6. Оптимизация цены на основе предсказанного спроса 32
Выводы 34
Заключение 36
Список литературы 37
Определение оптимальной цены на продаваемую продукцию является одной из важных задач в деятельности каждой компании. Современный рынок отличается высокой конкуренцией среди продавцов, которые борются за каждого покупателя. От правильности определения цены зависит количество клиентов, готовых купить данный товар, и прибыль, полученная от реализации продукции, а эти два фактора являются основными составляющими успеха компании.
Для выбора цены обычно проводится маркетинговое исследование с привлечением внешних специалистов и полным изучением рынка. Однако, у такого подхода есть несколько недостатков. Во-первых, это цена исследования. Проведение анализа может стоить слишком большую сумму для малого бизнеса. Во-вторых, при высокой волатильности рынка, большом числе постоянно меняющихся факторов проведения однократного анализа может быть недостаточно: исследование необходимо проводить постоянно. Даже при условии привлечения специалиста или трудоустройства его в компании крайне затруднительно учитывать все существенно влияющие на цену признаки и обновлять прогноз согласно актуальному положению рынка.
Различные подходы по автоматической оптимизации цены условно возможно разделить на две группы. В первую можно отнести такие методы как ARIMA, ARFIMA [1], GARCH[2], скрытые марковские модели [3], а во вторую группу - методы машинного обучения. Алгоритмы первой группы могут показывать приемлемые результаты и в каких-то случаях, возможно, даже демонстрировать лучшие показатели, чем методы второй группы. Однако, большинство из них предназначены для работы только с временными рядами, это сильно ограничивает и затрудняет работу с большим количеством признаков. Поэтому в данной работе в качестве основных были выбраны методы машинного обучения.
Машинное обучение - направление анализа данных, которое позволяет автоматизировать построение моделей. Это ветвь науки об искусственном интеллекте, основанная на идее того, что системы могут обучаться на данных, обнаруживать структуры с минимальным вмешательством исследователя. Алгоритмы машинного обучения показывают высокие результаты на реальных задачах, поэтому в последние годы стали широко применяться в бизнесе и науке.
Различают два типа обучения:
1. Обучение с учителем (supervised learning) - способ машинного обучения, в ходе которого алгоритм обучается на основе размеченных данных. В качестве исходных данных выступает множество примеров с известными метками. Необходимо обучить алгоритм таким образом, чтобы на новых, неразмеченных данных, он смог бы предсказывать эту метку, т .е. относить пример к какому-либо классу (задача классификации) или предсказать скалярное значение целевой переменной (задача регрессии).
2. Обучение без учителя (unsupervised learning) - способ машинного обучения, при котором на вход алгоритму подаются неразмеченные данные. Как правило обучение без учителя применяется для задач кластеризации и обнаружения аномалий.
В данной работе рассматриваются различные алгоритмы обучения с учителем, так как были доступны размеченные данные.
В результате выполнения данной выпускной квалификационной работы были достигнуты следующие результаты:
• Рассмотрены различные способы предобработки данных;
• Опробованы разные алгоритмы от самых простейших, таких как линейная регрессия, до нейронных сетей;
• Проведено сравнение результатов алгоритмов между собой;
• Построен ансамбль алгоритмов;
• Проведена оптимизация цен на основе предсказанного спроса.
[1] Autoregressive integrated moving average // Wikipedia.org URL: https://en.wikipedia.org/wiki/Autoregressive_integrated_moving_average (дата обращения: 22.12.2018).
[2] Generalized autoregressive conditional heteroskedasticity // Wikipedia.org URL:
[3] Rabiner L.R. A tutorial on hidden Markov models and selected applications in speech recognition // Proceedings of the IEEE. 1989. P. 257-286.
[4] Qu T., Zhang J. H., Felix T. S. et al. Demand prediction and price optimization for semi-luxury supermarket segment // Computers and Industrial Engineering. 2017. No 113. P. 91-102.
[5] Silvestri F. Optimal ticket pricing in the sport industry. The case of the Italian Serie A // La Kivista di diritto ed economia dello sport. 2016. No 1. P. 12.
[6] Galton F. Regression Towards Mediocrity in Hereditary Stature // Journal of the Anthropological Institute. 1886. №15. P. 246-263.
[7] Hearst Marti A. Support Vector Machines // IEEE Intelligent Systems. 1998. №13. P. 18-28.
[8] Breiman L. Random Forests // Machine Learning. 2001. №45/1. P. 5-32.
[9] Friedman J. H. Stochastic Gradient Boosting // Computational Statistics & Data Analysis. 2002. №38/4. P. 367-378.
[10] Dorogush A. V., Ershov V., Gulin A. CatBoost: gradient boosting with categorical features
[11] Feurer M., Klein A. et al. Efficient and robust automated machine learning // Advances in Neural Information Processing Systems. Montreal. 2015. No 28.
[12] Schmidhuber J. Deep Learning in Neural Networks: An Overview
P. 10-18, 2014 [Электронный ресурс] // arXiv.org. URL:
https://arxiv.org/pdf/1404.7828.pdf (дата обращения: 26.02.2019).
[13] LeCun Y., Bengio Y., Hinton G. Deep learning. Nature,. 521(7553) изд. 2015 P. 436-444.
[14] Target encoding done the right way // URL: https://maxhalford.github.io/blog/target-encoding-done-the-right-way/ (дата обращения: 26.02.2019). support [Электронный ресурс] // arXiv.org. URL: https://arxiv.org/pdf/1810.11363.pdf (дата обращения: 26.02.2019).
[15] Joaquin Vanschoren, Jan N. van Rijn, Bernd Bischl, and Luis Torgo. OpenML: networked science in machine learning. SIGKDD Explorations 15(2), P. 49-60, 2013.
[16] Christopher M. Bishop. Pattern Recognition and Machine Learning, 2006.
[17] Shallow Understanding on Bayesian Optimization // Towards Data Science URL: https://towardsdatascience.com/shallow-understanding-on- bayesian-optimization-324b6c1f7083 (дата обращения: 23.01.2019).
[18] Bayesian Optimization: Open source constrained
global optimization tool for Python // URL: https://github.com/fmfn/BayesianOptimization (дата обращения: 21.01.2019). https://en.wikipedia.org/wiki/Autoregressive_conditional _heteroskedasticity#GARCH (дата обращения: 20.12.2018).
[19] Paszke A., Gross S., Chintala S. et al. Automatic differentiation in PyTorch // NIPS-W. 2017.