DOI 10.46320/2077-7639-2024-5-126-46-50
Автоматизация кластеризации компаний по финансовым показателям с использованием k-means алгоритма на больших данных
Вахромеева Е.Н., Зензинова Ю.Б.
В данной статье рассматривается использование алгоритма K-means на Python для кластеризации компаний на основе их финансовых показателей. Для демонстрации метода были сгенерированы синтетические данные, включающие чистую прибыль, общие активы и доход компаний. Описаны этапы предварительной обработки данных, нормализации и выполнения кластерного анализа. Приведена визуализация результатов кластеризации. Приведены преимущества использования языка Python и его библиотек для анализа данных, включая обработку больших объемов данных, масштабируемость и автоматизацию. Кластерный анализ позволяет выявлять группы компаний со схожими экономическими характеристиками, что может способствовать более точной сегментации рынка и разработке таргетированных стратегий. Данный подход позволяет эффективно анализировать большие объемы финансовых данных и выявлять скрытые закономерности, что может быть полезным для аналитиков и инвесторов.
ДЛЯ ЦИТИРОВАНИЯ ГОСТ 7.1-2003
Вахромеева Е.Н., Зензинова Ю.Б. Автоматизация кластеризации компаний по финансовым показателям с использованием k-means алгоритма на больших данных // Дискуссия. - 2024. - Вып. 126. - С. 46-50.
КЛЮЧЕВЫЕ СЛОВА
Кластеризация, K-means, финансовые показатели, анализ данных, Python, генерация данных, визуализация.
DOI 10.46320/2077-7639-2024-5-126-46-50
Automation of company clustering by financial metrics using the k-means algorithm on big data
Vakhromeeva E.N., Zenzinova Y.B.
This article examines the use of the K-means algorithm in Python for clustering companies based on their financial indicators. Synthetic data, including net income, total assets, and revenue of companies, were generated to demonstrate the method. The stages of data preprocessing, normalization, and cluster analysis execution are described. A visualization of the clustering results is provided. The advantages of using Python and its libraries for data analysis, including handling large volumes of data, scalability, and automation, are highlighted. Cluster analysis allows identifying groups of companies with similar economic characteristics, which can contribute to more accurate market segmentation and the development of targeted strategies. This approach enables effective analysis of large volumes of financial data and the identification of hidden patterns, which can be useful for analysts and investors.
FOR CITATION APA
Vakhromeeva E.N., Zenzinova Y.B. Automation of company clustering by financial metrics using the k-means algorithm on big data. Diskussiya [Discussion], 126, 46-50.
KEYWORDS
Clustering, K-means, financial metrics, data analysis, Python, synthetic data, visualization.
В современном мире огромное количество финансовых данных требует эффективных методов анализа для принятия обоснованных решений. Кластерный анализ [1] представляет собой метод многомерного анализа данных, который используется для группировки объектов на основе их схожих характеристик. Одним из самых популярных методов кластерного анализа является алгоритм к-шеапя [2]. Этот алгоритм работает путем разделения данных на к кластеров, каждый из которых характеризуется средним значением всех объектов внутри кластера. к-шеапя используется для различных задач, таких как сегментация рынка, выявление паттернов в данных и многих других. Применение алгоритма к-шеапя позволяет эффективно выявлять скрытые структуры в больших объемах данных, что делает его важным инструментом анализа и исследования. Основные
преимущества этого алгоритма - его простота, скорость и возможность легко интерпретировать результаты.
В данной статье рассматривается применение алгоритма k-means для кластеризации компаний по их финансовым показателям на больших данных с помощью языка Python и его библиотек.
Использование Python для анализа данных имеет ряд существенных преимуществ по сравнению с другими инструментами, а именно:
1. Обработка больших объемов данных, так как библиотеки, такие как pandas и numpy, оптимизированы для работы именно с большими наборами данных.
2. Алгоритм, реализованный на Python, позволяет легко масштабировать анализ, визуализацию и обработку от небольших данных до огромных массивов.
3. Благодаря автоматизации, разработанные сценарии и функции можно легко сохранять, модифицировать и использовать повторно.
4. Python легко интегрируется с другими системами и платформами, что позволяет создавать комплексные решения для анализа данных, включающие базы данных, веб-сервисы и другие источники данных.
Для анализа были сгенерированы данные о финансовых показателях компаний, таких как чистая прибыль, общие активы и доход. Для генерации данных был использован следующий код: import numpy as np import pandas as pd np.random.seed(42) n_companies = 100 data = {
—> "Ticker": [f"COMP{i}" for i in range(n_companies)],
— "Net Income": np.random.normal(100000,
20000, n_companies),
— "Total Assets": np.random.normal(500000,
100000, n_companies),
— "Revenue": np.random.normal(200000,
50000, n_companies)
}
df = pd.DataFrame(data)
В коде были использованы библиотеки numpy [3] и pandas [4], которые широко используются для работы с массивами данных и обработкой табличных данных соответственно. Далее, все сгенерированные данные собираются в DataFrame что упрощает последующую обработку и анализ данных.
Для выполнения кластерного анализа необходимо предварительно обработать данные, а именно нормализовать их и обработать пропущенные значения.
Пример кода для предварительной обработки данных:
from sklearn.preprocessing import StandardScaler
# Заполнение пропущенных значений нулями
df.fillna(0, inplace=True)
# Нормализация данных scaler = StandardScaler() scaled_data = scaler.fit_transform
(df.drop("Ticker", axis=1))
Для кластеризации данных был использован алгоритм k-means. Сначала был импортирован класс KMeans из библиотеки scikit-learn [ 5 ]. Далее был создан объект kmeans, представляющий алгоритм k-means. Параметр n_clusters определяет
количество кластеров, на которые были разбиты данные. Параметр random_state используется для задания начального состояния генератора случайных чисел. Далее был запущен процесс кластеризации на основе данных, переданных в scaled_data. В результате работы алгоритма каждый объект данных был отнесен к одному из кластеров, а метки кластеров, которые были присвоены каждому объекту в результате кластеризации, были добавлены в исходный DataFrame df. Таким образом, каждая строка в DataFrame содержит информацию о том, к какому кластеру относится соответствующий объект данных. Код алгоритма представлен ниже:
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3, random_state=42) kmeans.fit(scaled_data) df[ 'Cluster' ] = kmeans.labels_ Для визуализации результатов кластеризации компаний на двумерном графике была импортирована библиотека Matplotlib [6], которая используется для создания графиков в Python. Были созданы списки маркеров и цветов, которые используются для отображения точек на графике заданного размера (10х6 дюймов) для каждого кластера. Каждый новый DataFrame clustered_data содержит данные только для текущего кластера. И построена диаграмма рассеяния, где по оси X отображается чистая прибыль (Net Income), по оси Y - доход (Revenue). Каждая точка представляет компанию, а ее маркер и цвет определяются соответствующими значениями из списков markers и colors. Каждый кластер имеет свой уникальный маркер и цвет. Код для визуализации графика представлен ниже:
import matplotlib.pyplot as plt
# Создание символов и оттенков серого для кластеров
markers = [ 'o', 's', 'D' ]
colors = [ 'black', 'dimgray', 'lightgray' ]
# Визуализация кластеров plt.figure(figsize=(10, 6)) for cluster in range(3):
clustered_data = df [ df [ 'Cluster' ] == cluster ] plt.scatter(clustered_data [ 'Net Income' ], clustered_data [ 'Revenue' ],
marker=markers [ cluster ], color=col-ors[ciuster], label=f'Cluster {cluster}')
plt.title('Кластеры компаний по финансовым показателям')
plt.xlabel('Net Income')
plt.ylabel('Revenue')
plt.legend()
р^.яЬошО видно, какие компании имеют схожие финансовые
Результатом работы данного кода является характеристики, а также как они различаются от график, представленный на рисунке 1. Из графика компаний в других кластерах.
Кластеры компаний по финансовым показателям
m Cluster 0
■ Cluster 1
Cluster 2
•
■
• # ■ •
• щ ■
• • ■ ■ ■ m ■ ■ ■
• • ♦ • • ■ ■
• • % • f ■
• • ■
■ • ■ ■
■ ■ % ■
■ • ■
•
60000 80000 100000 Net Income
Рисунок 1. График кластеризации компаний по финансовым показателям
Данные из исходного DataFrame df можно легко просмотреть, используя стандартные методы pandas, такие как df.head() для просмотра первых строк или df.describe() для получения сводной статистики.
Результаты кластеризации могут быть добавлены в исходный фрейм данных в виде нового столбца, содержащего метки кластеров для каждой строки. Это упрощает визуализацию и анализ данных, поскольку объекты, принадлежащие к разным кластерам, можно легко группировать и сравнивать. Полученные данные также можно экспортировать в различные форматы файлов, такие как CSV или Excel, для удобного обмена и использования в других приложениях. Использование специализированных форматов, таких как JSON [ 7 ] или Parquet [ 8 ], может повысить эффективность обработки данных и совместимость с различными аналитическими инструментами. Наконец, результаты кластеризации могут быть загружены в базы данных для интеграции с существующими системами. Кроме того, код представляет собой автоматизацию процесса визуализации данных и кластеризации, что означает, что его можно легко адаптировать для работы с реальными данными, просто заменив синтетические данные на реальные данные компаний.
Экономическое обоснование и преимущества использования кластерного анализа в экономике можно разбить на несколько аспектов, а именно:
1. Выявление скрытых закономерностей: кластеризация позволяет выявлять скрытые закономерности и группы компаний со схожими финансовыми показателями, что может быть полезно для сегментации рынка [9], разработки целевых стратегий и принятия управленческих решений.
2. Оптимизация бизнес-процессов: анализ кластеров может помочь в оптимизации бизнес-процессов [10], выявлении эффективных стратегий и устранении слабых мест в управлении ресурсами.
3. Прогнозирование и планирование: результаты кластерного анализа могут быть использованы для прогнозирования будущих финансовых показателей и планирования ресурсов, что повышает финансовую стабильность компаний.
4. Снижение рисков: кластеризация помогает оценивать риски [11], связанные с различными группами компаний, и разрабатывать стратегии управления этими рисками.
5. Инвестиционная привлекательность: для инвесторов кластерный анализ предоставляет ценную информацию [12] о группах компаний с высоким потенциалом роста или стабильными финансовыми показателями, что облегчает принятие инвестиционных решений.
Таким образом, использование алгоритма K-means для кластеризации компаний по финансовым показателям является мощным инструментом анализа больших данных. Применение
Китанин С.С., Смольянов Б.Д., Чемерис О.С.
Перспективы применения технологии блокчейн в энергетическом секторе экономики
этого подхода позволяет выявлять скрытые закономерности, оптимизировать бизнес-процессы и улучшать принятие управленческих решений. Визуализация результатов кластеризации помогает лучше понять структуру данных и предо-
Список литературы
1. Гитис Л. Х. Статистическая классификация и кластерный анализ: монография. - Москва: МГГУ, 2003. - 157 с. -[Электронный ресурс]. - Режим доступа: https://znanium. com/catalog/product/999908 (дата обращения: 10.06.2024).
2. Апельцин Л. Data Science в действии. - СПб.: Питер, 2023.
- 736 с.
3. Документация по библиотеке NumPy. - [Электронный ресурс]. - Режим доступа: https://numpy.org/doc/stable/ (дата обращения: 31.05.2024).
4. Документация по библиотеке pandas. - [Электронный ресурс]. - Режим доступа: https://pandas.pydata.org/docs/ user_guide/index.html (дата обращения: 31.05.2024).
5. Документация по библиотеке scikit-learn. - [Электронный ресурс]. - Режим доступа: https://scikit-learn.org/stable/user_ guide.html (дата обращения: 31.05.2024).
6. Документация по библиотеке Matlolib. - [Электронный ресурс]. - Режим доступа: https://matplotlib.org/stable/ users/index (дата обращения: 31.05.2024).
References
1. Gitis L. H. Statistical classification and cluster analysis: monograph. - Moscow: MGSU, 2003. - 157 p. - [Electronic resource].
- Access mode: https://znanium.com/catalog/product/999908 (access date: 10.06.2024).
2. Apeltsin L. Data Science in action. - St. Petersburg: St. Petersburg, 2023. - 736 p.
3. Documentation for the NumPy library. - [Electronic resource].
- Access mode: https://numpy.org/doc/stable / (access date: 31.05.2024).
4. Documentation for the pandas library. - [Electronic resource].
- Access mode: https://pandas.pydata.org/docs/user_guide/ index.html (access date: 31.05.2024).
5. Documentation for the scikit-learn library. - [Electronic resource].
- Access mode: https://scikit-learn.org/stable/user_guide.html (access date: 31.05.2024).
6. Documentation for the Matlolib library. - [Electronic resource].
- Access mode: https://matplotlib.org/stable/users/index (access
Информация об авторе
Вахромеева Е.Н., кандидат технических наук, доцент кафедры Автоматизированные системы обработки информации и управления Российского государственного университета им. А. Н. Косыгина (Технологии. Дизайн. Искусство) (г. Москва, Российская Федерация).
Зензинова Ю.Б., кандидат технических наук, доцент кафедры Автоматизированные системы обработки информации и управления Российского государственного университета им. А. Н. Косыгина (Технологии. Дизайн. Искусство) (г. Москва, Российская Федерация).
© Вахромеева Е.Н., Зензинова Ю.Б., 2024.
ставляет ценную информацию для аналитиков и инвесторов. Автоматизация анализа данных с использованием Python и его библиотек делает этот процесс более эффективным и масштабируемым по сравнению с традиционными инструментами.
7. Документация JSON. - [Электронный ресурс]. - Режим доступа: https://docs.python.org/3/library/json.html (дата обращения: 4.06.2024).
8. Документация Parquet. - [Электронный ресурс]. - Режим доступа: https://parquet.apache.org/docs/ (дата обращения: 4.06.2024).
9. Интеллектуальный анализ данных - кластерный анализ. -[Электронный ресурс]. - Режим доступа: https://coderlessons. com/tutorials/akademicheskii/izuchit-dobychu-dannykh/ intellektualnyi-analizdannykh-klasternyi-analiz. (дата обращения: 3.06.2024).
10. Боуш Г. Д. Бизнес-кластеры: категориально-системное представление. - ОмГУ, 2011. - 242 с.
11. Петерс Э. Фрактальный анализ финансовых рынков. - М.: Интернет-трейдинг, 2004. - 304 с.
12. Акулич М. Кластерный подход. Экономический рост и инновационные кластеры. - М.: Издательские решения, 2017. -
886 c.
date: 31.05.2024).
7. JSON documentation. - [Electronic resource]. - Access mode: https://docs.python.org/3/Library/json.htmL (access date: 24.06.2024).
8. Parquet documentation. - [Electronic resource]. - Access mode: https://parquet.apache.org/docs / (access date: 14.06.2024).
9. 9. Data mining - cluster analysis. - [Electronic resource]. -Access mode: https://coderlessons.com/tutorials/akademich-eskii/izuchit-dobychu-dannykh/intellektualnyi-analizdanny-kh-klasternyi-analiz. (access date: 3.06.2024).
10. 10. Boush G. D. Business clusters: a categorical system representation. - OmSU, 2011. - 242 p.
11. 11. Peters E. Fractal analysis of financial markets. - M.: Internet trading, 2004. - 304 p.
12. 12. Akulich M. Cluster approach. Economic growth and innovative clusters. - M.: Publishing solutions, 2017. - 886 p.
Information about the author
Vakhromeeva E.N., Ph.D. of Engineering Sciences, Associate Professor of the Department of Automated Information Processing and Management Systems of the Kosygin Russian State University (Technologies. Design. Art) (Moscow, Russian Federation).
Zenzinova Y.B., Ph.D. of Engineering Sciences, Associate Professor of the Department of Automated Information Processing and Management Systems of the Kosygin Russian State University (Technologies. Design. Art) (Moscow, Russian Federation).
© Vakhromeeva E.N., Zenzinova Y.B., 2024.
5D МАТЕМАТИЧЕСКИЕ И ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ
DISCUSSION №5 ( 126) MAY 2024