Научная статья на тему 'ПРИМЕНЕНИЕ СИНГУЛЯРНЫХ РАЗЛОЖЕНИЙ К ОБНАРУЖЕНИЮ ВЫБРОСОВ В ДАННЫХ О ПОТРЕБЛЕНИИ ИНФОРМАЦИОННОГО КОНТЕНТА'

ПРИМЕНЕНИЕ СИНГУЛЯРНЫХ РАЗЛОЖЕНИЙ К ОБНАРУЖЕНИЮ ВЫБРОСОВ В ДАННЫХ О ПОТРЕБЛЕНИИ ИНФОРМАЦИОННОГО КОНТЕНТА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
0
0
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
контент / оценка качества / анализ данных / сингулярные разложения / детекция аномалий / scikit-learn / pandas / numpy / SVD / content / quality assessment / data analysis / singular value decompositions / anomaly detection / scikit-learn / pandas / numpy / SVD

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Мосин Владимир Геннадьевич, Козловский Владимир Николаевич, Васин Сергей Александрович

В статье рассмотрен метод выявления аномальных объектов, основанные на редукции данных к главным направлениям и не требующий предварительной разметки данных на нормальные и аномальные объекты. Метод реализован в виде алгоритма и протестирован на данных о потреблении контента одного из ведущих хостингов.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Мосин Владимир Геннадьевич, Козловский Владимир Николаевич, Васин Сергей Александрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

APPLICATION OF SINGULAR DECOMPOSITIONS TOWARDS DETECTING OUTLIERS IN CONTENT CONSUMPTION DATA

The article discusses a method for identifying anomalous objects, based on data reduction to the main directions and not requiring preliminary marking of data into normal and anomalous objects. The method is implemented as an algorithm and tested on content consumption data from one of the leading hosting services.

Текст научной работы на тему «ПРИМЕНЕНИЕ СИНГУЛЯРНЫХ РАЗЛОЖЕНИЙ К ОБНАРУЖЕНИЮ ВЫБРОСОВ В ДАННЫХ О ПОТРЕБЛЕНИИ ИНФОРМАЦИОННОГО КОНТЕНТА»

DIGITALIZA TION OF THE PROCESS APPROACH N.A. Drankova

The article considers main changes in the approach to management, issues of digitalization of processes, trends in business processes, as well as influence of digitalization on various spheres of activity. Particular attention is paid to the selection of staff, in this regard, requirements for a business process specialist have been developed and experience with the application of digital technologies in the context of business process architecture modelling has been presented. The results of the study allow to draw conclusions about the importance of digitalization ofprocesses for increasing efficiency and optimization of various areas of activity, as well as to identify prospects for the development of this field.

Key words: process, digitalization, optimization, sustainable development.

Drankova Natalia Alexandrovna, head of business process optimization, [email protected], Russia, Moscow, LLC Consulting Center «Expert»

УДК 005.6

DOI: 10.24412/2071 -6168-2024-3 -464-465

ПРИМЕНЕНИЕ СИНГУЛЯРНЫХ РАЗЛОЖЕНИЙ К ОБНАРУЖЕНИЮ ВЫБРОСОВ В ДАННЫХ О ПОТРЕБЛЕНИИ ИНФОРМАЦИОННОГО КОНТЕНТА

В.Г. Мосин, В.Н. Козловский, С.А. Васин

В статье рассмотрен метод выявления аномальных объектов, основанные на редукции данных к главным направлениям и не требующий предварительной разметки данных на нормальные и аномальные объекты. Метод реализован в виде алгоритма и протестирован на данных о потреблении контента одного из ведущих хостин-гов.

Ключевые слова: контент, оценка качества, анализ данных, сингулярные разложения, детекция аномалий, scikit-learn, pandas, numpy, SVD.

1. Введение. Одной из важных задач анализа данных является обнаружение шума в данных и его последующее исключение для получения более надежных результатов, не зависящих от случайных флуктуаций [6, 7].

Шум в данных — это нежелательные, случайные или неточные значения, которые вносят искажения или искажают истинные данные. Шум может возникать по разным причинам, таким как ошибки измерений, неполадки в оборудовании, случайные факторы или неправильные записи. Шум может иметь различные формы и влиять на данные по-разному. Некоторые типы шума включают случайный шум, выбросы (аберрации), грубые ошибки, систематические искажения и многие другие.

Поскольку шум может вносить искажения в данные, его наличие может затруднить анализ и интерпретацию данных. Это может привести к неправильным выводам и недостоверным результатам. Поэтому важно применять методы обработки данных и фильтрации шума для улучшения качества данных перед анализом или использованием их для принятия решений. Методы борьбы с шумом могут включать фильтрацию, сглаживание (например, сглаживание скользящим средним), применение алгоритмов обнаружения выбросов или применение статистических методов для определения и удаления шумовых значений.

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

1.1. Теоретическая часть. Обнаружение выбросов относится к предварительной обработке данных, которая, как правило, предшествует основной задаче: задаче моделирования и прогнозирования целевых признаков. Для того чтобы модели обладали лучшими характеристиками, а их прогнозы были более точными, из обучающих наборов данных важно исключать записи, являющиеся нетипичными или аномальными [7].

Это связано с тем, что обучение модели на типичных объектах позволяет ей лучше улавливать общие закономерности и характеристики в данных. Аномальные объекты могут содержать случайные или экстремальные значения, которые могут отличаться от общих трендов и снизить способность модели к обобщению на новые, неизвестные объекты.

Кроме того, аномальные объекты могут вносить существенные искажения в данные и повлиять на модель, если они включены в процесс обучения. Модель может стремиться адаптироваться к этим выбросам, в результате чего потеряется способность модели к правильному предсказанию на типичных данных.

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

Не менее важной является и задача прогнозирования [6]. Обученная стабильная модель, дающая хорошие результаты на типичных объектах, вполне может оказаться непригодной при попытке спрогнозировать значения целевых признаков в ситуациях, сильно отличающихся от тех, на которых модель обучалась.

Это проявляется, прежде всего, в низкой точности прогнозов. Если модель не была обучена на разнообразных данных и не встречала сильно отличающиеся друг от друга примеры, ее прогноз может быть неточным на таких данных. Модель может не уловить закономерности или связи между признаками в новых данных, что приведет к плохим прогнозам.

Вдобавок к этому происходит потеря обобщающей способности. Если модель была обучена на данных с определенными характеристиками и структурой, она може т не получить достаточной обобщающей способности для предсказания на данных с другой структурой или характеристиками.

464

Необходимо помнить, что модель машинного обучения является результатом обучения на конкретных данных, и ее прогнозы оказываются наиболее точными в пределах набора данных, на котором она обучалась. Для этого нужно уметь различать объекты, подаваемые на вход модели для прогнозирования, нужно уметь выявлять нетипичные объекты и исключать их из процесса еще до подачи в модель.

1.2. Постановки задачи. Если данные, используемые для обучения модели, являются размеченными, то есть, каждый объект заранее обладает меткой «норма/аномалия», то задача обнаружения выбросов на обучающих данных вообще не стоит, а обнаружение выбросов на новых данных сводится к задаче бинарной классификации по признаку-метке [4].

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

1.2.1. Предмет исследования. Предметом нашего исследования является метод, позволяющий выявить нетипичные объекты в данных, не являющихся изначально размеченными по признаку «норма/аномалия».

1.2.2. Методика исследования. Метод основан на сингулярных матричных разложениях и последующей редукции данных к главным направлениям. Если редуцированные данные обладают слишком большой реконструк-ционной ошибкой, то такие объекты признаются аномальными. Мы применяем в качестве критерия выброса процент от общего объема обучающих данных, то есть, относим к типичным их объектам K-й перцентиль (где K достаточно велико), а объекты, не попадающие в него, объявляем нетипичными выбросами.

1.2.3. Цель исследования. Наша цель — получить алгоритм, индексирующий объекты обучающей выборки как аномальные по заданному перцентилю выбросов. Кроме того, мы собираемся применить этот алгоритм к новым данным, и, используя полученный на обучающей выборке порог отсечения, выделить в них нетипичные объекты.

1.3. Технологии. Для обработки и анализа данных мы используем среду jupyter notebook, которая предоставляет удобные инструменты для работы с языком программирования python и его основными библиотеками: numpy, pandas, scikit-learn и matplotlib [1, 2]).

Библиотека numpy является важным средством для научных вычислений и обработки массивов данных в python. Она предлагает эффективные структуры данных, алгоритмы и функции для работы с одномерными и многомерными числовыми массивами. В настоящей работе мы в качестве ключевого приема используем сингулярные разложения, которые реализованы в numpy как метод svd модуля linalg.

Pandas является самой мощной библиотекой для работы с данными в python. Она тесно интегрируется с другими инструментами для анализа и обработки данных на платформе python, такими как numpy, scikit-learn и matplotlib. Pandas обеспечивает эффективные средства для обработки информации, а также множество алгоритмов и функций для анализа и визуализации данных [1].

2. Описание данных. Используются данные о потреблении контента одного из ведущих хостингов за 500 дней: с 2021-08-20 по 2023-01-01. Объектами таблицы служат даты. Признаки описывают различные характеристики объекта: 'Просмотры', 'Время просмотра (часы)' и т. д. Полную структуру данных см. ниже, шаг 3.2 алгоритма исследования.

3. Алгоритм

3.1. Чтение данных. Методом read_csv библиотеки pandas загружаем в среду исполнения набор данных о потреблении контента и формируем дата-фрейм.

Дата Просмотры Время просмотра (часы) Поделились ... Дизлайки Лайки

2023-01-01 475.0 21.2038 9.0 ... 0.0 16.0

2022-12-31 174.0 5.4814 1.0 ... 0.0 4.0

2022-12-30 490.0 17.8182 3.0 ... 1.0 3.0

2021-08-22 275.0 10.4130 1.0 ... 0.0 2.0

2021-08-21 222.0 10.5967 0.0 ... 2.0 4.0

2021-08-20 209.0 8.6935 0.0 ... 0.0 1.0

3.2. Разведочный анализ. Применяем метод info библиотеки pandas и выводим сведения о признаках.

# Column Non-Null Count Dtype

0 Просмотры 500 non-null float64

1 Время просмотра (часы) 500 non-null float64

2 Поделились 500 non-null float64

3 Постоянные зрители 500 non-null float64

4 Новые комментарии 500 non-null float64

5 Отказались от подписки 500 non-null float64

6 Новые подписчики 500 non-null float64

7 Новые зрители 500 non-null float64

8 Среднее число просмотров одним пользователем 500 non-null float64

9 Уникальные зрители 500 non-null float64

10 CTR для значков видео (%) 500 non-null float64

11 Показы 500 non-null float64

12 Подписчики 500 non-null float64

13 Средний процент просмотра (%) 500 non-null float64

14 Процент лайков 500 non-null float64

# Column Non-Null Count Dtype

15 Средняя продолжительность просмотра 500 non-null float64

16 Дизлайки 500 non-null float64

17 Лайки 500 non-null float64

В данных присутствуют 500 объектов. В качестве индекса выступает дата, таким образом, объектами служат даты. Все признаки относятся к типу с плавающей запятой, пропущенных значений нет.

3.3. Разделение объектов на обучающую и тестовую выборки. Используем модуль model_selection библиотеки skleam. Применяем метод train_test_split с параметром test_size=0.2. Получаем два датафрейма: df_train объемом 400 объектов и df_test объемом 100 объектов.

3.4. Нормализация обучающей выборки. Применяем к обучающей выборке метод describe библиотеки pandas и получаем сведения о статистиках по всем признакам.

_min_mean_max_std

Просмотры 159.00 936.51 2200.00 418.144

Время просмотра (часы) 5.48 37.17 96.72 16.64

Поделились 0.00 6.96 71.00 6.25

Постоянные зрители 30.00 163.34 463.00 78.90

Новые комментарии

0.00 0.53 6.00 0.83

Отказались от подписки 0.00 2.77 29.00 2.55

Новые подписчики

0.00 6.49 19.00 3.51

Новые зрители 60.00 366.83 735.00 174.01

Среднее число просмотров одним пользователем 1.31 1.79 2.85 0.21

Уникальные зрители 96.00 530.18 1103.00 239.22

CTR для значков видео (%)

1.25 5.54 8.52 1.11

Показы 1938.00 8093.78 39479.00 3816.08

Подписчики -23.00 3.72 15.00 4.02

Средний процент просмотра (%) 18.68 26.72 41.29 3.41

Процент лайков 0.00 92.02 100.00 10.31

Средняя продолжительность просмотра 96.07 144.33 211.02 15.66

Дизлайки 0.00 1.28 10.00 1.34

Лайки -6.00 15.80 70.00 9.13

Значения некоторых признаков (например, ' Показы' и 'Среднее число просмотров одним пользователем') отличаются на порядки.

Чтобы избежать дисбаланса размерностей, нормализуем данные обучающей выборки приведением к стандартному виду:

df_train_norm = (df_train - df_train.mean())/df_train.std(). После этого все признаки, во-первых, оказываются центрированными, то есть, обладают нулевыми средними, а во-вторых, их дисперсии становятся единичными, и дисбаланс размерностей исчезает:

_min_mean_max_std

Просмотры -1.85 0.00 3.02 1.00

Время просмотра (часы) -1.90 0.00 3.57 1.00

Показы -1.61 0.00 8.22 1.00

Подписчики -6.63 0.00 2.80 1.00

Средний процент просмотра (%) -2.35 0.00 4.26 1.00

Процент лайков -8.92 0.00 0.77 1.00

Средняя продолжительность просмотра -3.08 0.00 4.25 1.00

Дизлайки -0.95 0.00 6.49 1.00

Лайки -2.38 0.00 5.93 1.00

466

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3.5. Сингулярное разложение матрицы обучающих данных. Сингулярное разложение матрицы — это представление матрицы X в виде произведения

X = USV-1

где U и V — ортогональные матрицы, а S — диагональная матрица той же конфигурации, что и X. Столбцы матриц U и V называются соответственно левым и правым сингулярными базисами, а диагональные элементы матрицы S — сингулярными значениями матрицы X.

Теорема о сингулярном разложении утверждает, что такое разложение существует для любой матрицы X, в частности, оно существует для нашей матрицы обучающих данных.

3.5.1. Вывод массива numpy из датафрейма df_train_norm. Для сингулярного разложения данных обучающей выборки мы будем пользоваться методами библиотеки numpy, поэтому, прежде чем приступать к разложению, мы переводим датафрейм df_train_norm в массив numpy при помощи метода to_numpy библиотеки pandas. В результате получаем двумерный массив X_train нужного нам формата.

3.5.2. Сингулярное разложение. Получение левого и правого сингулярных базисов и множества сингулярных значений происходит за счет метода svd из модуля linalg библиотеки numpy. Применяем этот метод к матрице X_train, он возвращает три объекта:

1. двумерный массив U (столбцы которого образуют левый сингулярный базис),

2. одномерный массив Sigma (элементы которого служат диагональю матрицы S)

3.и двумерный массив V (который представляет собой уже обращенную матрицу V, то есть, строки этого массива образуют правый сингулярный базис).

3.5.3. Переход к сингулярному базису. Если матричное равенство из теоремы о сингулярном разложении умножить на V справа, то оно приобретает вид:

XV = US

Заметим, что после нормализации данные оказались центрированными, поэтому левая часть этого равенства представляет собой не что иное, как теорему о замене базиса [3], то есть, строки матрицы, расположенной в левой части — это координаты точек облака обучающих данных в правом сингулярном базисе.

Чтобы получить координаты облака обучающих данных в правом сингулярном базисе, мы заводим массив S_train и при помощи метода dot библиотеки numpy присваиваем ему результат матричного произведения массивов X_train и V.T , где правый множитель мы транспонировали из-за специфики реализации алгоритма сингулярного разложения в библиотеке numpy (см. сноску выше).

3.6. Проекция обучающих данных на первое главное направление

В данном исследовании для редукции данных мы будем использовать одно главное направление, а именно: первое главное направление, то есть, то, которое отвечает наибольшему сингулярному значению. Данные, редуцированные к первому главному направлению — это проекция точек облака данных на прямую, порожденную первым сингулярным вектором. Поэтому координаты редуцированных данных в сингулярном базисе получаются заменой всех координат, кроме первой, на нулевые значения.

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

Строки массива S_trian_reduce представляют собой координаты редуцированных данных в сингулярном базисе, в тот момент как нас интересуют их координаты в исходном базисе. Чтобы получить координаты редуцированных данных в старом базисе, нужно еще раз воспользоваться теоремой о замене базиса и выполнить обратный переход, но применить его не к полной матрице S_trian, а к редуцированной S_trian_reduce.

Мы заводим массив X_train_reduce и при помощи метода dot библиотеки numpy присваиваем ему результат матричного произведения массивов S_train_reduce и V. Теперь строки массива X_train_reduce содержат координаты проекций исходных данных на первое главное направление.

3.7. Реконструкционная ошибка обучающих данных. Реконструкционной ошибкой называется норма разности между исходными и редуцированными данными. Другими словами, это расстояние от точки облака данных до ее проекции на прямую, заданную первым главным направлением. Те объекты, у которых реконструкционная ошибка слишком велика, мы будем признавать нетипичными и объявлять их выбросами.

Для получения реконструкционной ошибки мы используем метод norm из модуля linalg библиотеки numpy, применяя его к разности двумерных массивов X_train_reduce - X_train и указав значение атрибута axis=1, чтобы вычислению нормы разности подвергались именно строки. Результат этого действия записываем в одномерный массив reconstruction_error_train, в котором оказываются реконструкционные ошибки всех объектов обучающей выборки.

3.8. Порог отсечения. Мы будем устанавливать порог реконструкционной ошибки, превышение которого будем считать выбросом в данных, исходя из объема обучающей выборки. Допустим, при обучении какой-либо модели мы готовы пожертвовать K% данных для того, чтобы оставшиеся данные давали более устойчивую модель. Тогда в качестве порога отсечения мы выбираем (100 - К)-й перцентиль массива всех реконструкционных ошибок.

Для этого мы применяем метод pecentil библиотеки numpy к массиву рекнострукционных ошибок reconstruction_error_train, в результате чего получается число, которое мы записываем в переменную threshold_train.

3. 9. Выбросы в обучающей выборке. Теперь для получения нетипичных объектов обучающей выборки нам достаточно применить метод where библиотеки numpy с условием:

reconstruction_error_train > threshold_train

Этот метод возвращает индексы выбросов, то есть, некий набор номеров, которые мы записываем в массив anomaly_indices_train. Результаты этого действия визуализированы (рис. 1) и описаны в комментарии к визуализации.

Заметим, что объем выбросов на обучающей выборке всегда будет одним и тем же: при любом случайном разбиения данных на обучающую и тестовую выборки алгоритм будет помечать K% обучающей выборке как выбросы.

3.10. Нормализация тестовой выборки. Применяем к тестовой выборке метод describe библиотеки pandas и получаем сведения о статистиках по всем признакам.

min mean max std

Просмотры 126.00 916.10 1805.00 422.82

Время просмотра (часы) 4.69 36.23 83.17 17.23

Поделились 0.00 7.15 49.00 6.90

Постоянные зрители 21.00 161.16 354.00 79.91

Новые комментарии 0.00 0.66 6.00 0.89

Отказались от подписки 0.00 3.37 95.00 9.46

Новые подписчики 1.00 6.62 15.00 3.32

Новые зрители 46.00 354.15 693.00 168.35

Среднее число просмотров одним пользователем 1.40 1.80 3.04 0.24

Уникальные зрители 70.00 515.31 1030.00 239.32

CTR для значков видео (%) 1.21 5.44 8.43 1.34

Показы 1701.00 8418.39 69432.00 6887.19

Подписчики -85.00 3.25 13.00 9.58

Средний процент просмотра (%) 16.86 26.42 42.56 4.23

Процент лайков 0.00 92.54 106.25 11.92

Средняя продолжительность просмотра 88.6 142.94 195.57 18.22

Дизлайки -1.00 1.12 5.00 1.18

Лайки 0.00 17.86 63.00 12.48

Данные тестовой выборки необходимо привести к облаку обучающей выборки. Для этого мы выполняем центрирование и масштабирование, применяя к тестовой выборке средние и дисперсии обучающей выборки:

(ИМ;е81;_погт = ((ИМ^ - df_train.mean())/df_train.std().

Заметим, что после этой операции средние значения признаков тестовой выборки отличаются от нуля, а их дисперсии не являются единичными, так как и центр облака и его рассеяние были настроены ранее на обучающей выборке:

min mean max std

Просмотры -1.93 -0.04 2.07 1.01

Время просмотра (часы) -1.95 -0.05 2.76 1.03

Поделились -1.11 0.02 6.71 1.10

Постоянные зрители -1.80 -0.02 2.41 1.01

Новые комментарии -0.64 0.15 6.57 1.07

Отказались от подписки -1.08 0.23 36.13 3.70

Новые подписчики -1.56 0.03 2.41 0.94

Новые зрители -1.84 -0.07 1.87 0.96

Среднее число просмотров одним пользователем -1.81 0.04 5.83 1.13

Уникальные зрители -1.92 -0.06 2.08 1.00

CTR для значков видео (%) -3.88 -0.08 2.58 1.20

Показы -1.67 0.08 16.07 1.80

Подписчики -22.03 -0.11 2.30 2.38

Средний процент просмотра (%) -2.88 -0.08 4.63 1.24

Процент лайков -8.92 0.05 1.37 1.15

Средняя продолжительность просмотра -3.55 -0.08 3.27 1.16

Дизлайки -1.70 -0.12 2.77 0.88

Лайки -1.73 0.22 5.16 1.36

Подобно тому, как мы делали это на шаге 3.5.1, мы переводим датафрейм df_test_norm в массив при помощи метода to_numpy библиотеки pandas. В результате получаем двумерный массив X_test нужного нам формата: это двумерный массив, в нем 100 строк и 18 столбцов.

3.11. Реконструкционная ошибка тестовых данных. Координаты точек тестовой выборки в сингулярном базисе мы вычисляем точно так же, как на шаге 3.5. При этом мы не выполняем новое сингулярное разложение для тестовых данных, а используем правый сингулярный базис из разложения, полученного для обучающей выборки. В результате получается двумерный массив S_test.

Затем, так же как на шаге 3.6, мы редуцируем этот массив до первого столбца, получая при этом массив S_test_reduce, и возвращаемся к исходному базису, умножая редуцированные сингулярные координаты на матрицу V. В итоге возникает массив X_test_reduce, строки которого представляют собой проекции точек тестовой выборки на первое главное направление обучающей выборки.

После этого мы, так же как и на шаге 3.7, выстраиваем массив реконструкционных ошибок тестовых данных reconstruction_error_test.

3.12. Выбросы в тестовой выборке. Порог отсечения реконструкционной ошибки мы получили выше, на шаге 3.8, когда мы вычислили его на обучающей выборке. К тестовой выборке мы применяем тот же самый порог отсечения:

reconstruction_error_test > threshold_tram после чего метод where библиотеки numpy возвращает индексы нетипичных объектов. Результат этого действия представлен на рис. 2 и описан в комментарии к визуализации.

Заметим, что для тестовой выборки количество выбросов может получиться произвольным. Например, алгоритм может сообщить, что в тестовой выборке вообще нет выбросов, или, наоборот, в тестовой выборке может оказаться гораздо больше выбросов, чем в обучающей. В силу того, что порог отсечения настраивался на обучающей выборке, результат будет зависеть от того, как соотносятся облака тестовых и обучающих данных [8].

Так или иначе, на этом шаге мы получаем список anomaly_indices_test, индексы тех объектов, которые алгоритм посчитал нетипичными объектами среди тестовых данных по отношению к обучающим данным.

4. Результаты. Напомним, что наши данные о потреблении контента индексированы датами, то есть, объектами (не важно, типичными или нетипичными) являются даты, которые характеризуются рядом параметров: числом просмотров, количеством лайков и т. д.

В нашем распоряжении есть 500 записей по датам с 2021-08-20 по 2023-01-01, которые мы случайным образом разбиваем на обучающую и тестовую выборки. Соотношение разбиения составляет 80% к 20%, таким образом, в обучающую выборку попадает 400 объектов, а в тестовую — 100 объектов.

Для того чтобы исключить выбросы из обучения модели, мы готовы пожертвовать 2% обучающих данных, и, установив в качестве гиперпараметра алгоритма значение K = 2, мы запускаем наш алгоритм определения выбросов. На рисунке ниже (см. рис. 1) по горизонтали откладываются даты наблюдений, а по вертикали — соответствующая дате реконструкционная ошибка. Горизонтальная прямая устанавливает порог и отсекает нетипичные объекты.

25 20 15 10

5

о

2021-08-19 2022-08-25 2023-01-01

Рис. 1. Выбросы обучающей выборки

На обучающей выборке алгоритм естественным образом возвращает 8 объектов (это ровно 2% от 400 объектов обучающей выборки). А именно, алгоритм рекомендует детектировать как обладающие нетипичными признаками следующие даты:

2022-07-12, 2022-01-18, 2022-06-05, 2022-08-13, 2022-08-05, 2022-08-25, 2022-08-27, 2022-08-26.

Затем мы применяем алгоритм к тестовой выборке для того, чтобы исключить нетипичные объекты из пула объектов, для работы прогнозирующей модели, так как на нетипичных объектах (читай — выбросах) модель заведомо будет давать нелепый прогноз, в силу того, что обучалась на типичных данных.

25 20 15 10 5 0

2021-08-19 2022-08-25 2023-01-01

Рис. 2. Выбросы тестовой выборки

Здесь алгоритм возвращает 5 дат:

2022-09-14, 2022-11-17, 2021-09-02, 2022-08-28, 2022-09-04.

Это больше, чем 2% от 100 объектов. Тем не менее, хорошо видно, что эти объекты действительно далеко отстоят от остальных дат по величине своих реконструкционных ошибок. В силу настройки, полученной на обучающей выборке (была настроена высота горизонтальной линии отсечения), это действительно выбросы.

5. Выводы. Обнаружение выбросов обычно рассматривается как задача бинарной классификации, особенно когда исследователя интересует лишь определение, является ли точка выбросом или нет. В этом случае выбросы рассматриваются как класс «положительных» или аномальных точек, в то время как все остальные точки будут принадлежать классу «отрицательных» или не-выбросов. Для решения этой задачи используются различные алгоритмы машинного обучения для бинарной классификации, такие как логистическая регрессия, случайный лес, градиентный бустинг и так далее [5].

Однако в ситуации, когда изначальная разметка данных на нормальные и аномальные объекты отсутствует, классификация невозможна. Тогда необходимы другие методы, один из которых был рассмотрен в настоящей статье и показал на примере данных о потреблении контента одного из ведущих хостингов весьма неплохие резуль-

• train

- 2%

• •• • • •

• train

- 2°/t ■

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• •• * - * « •

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

Список литературы

1.Хейдт М. Изучаем Pandas. Москва: ДМК Пресс, 2018. 438 с.

2.Бурков А. Машинное обучение без лишних слов. СПб: Питер, 2020. 192 с.

3.Вьюгин В.В. Математические основы теории машинного обучения и прогнозирования. М.: МЦИМО. 2013. 387 с.

4.Бринк Х. Машинное обучение / Х. Бринк, Дж. Ричардс, М. Феверолф. СПб.: Питер, 2017. 336 с.

5.Дрейпер Н.Р. Прикладной регрессионный анализ / Дрейпер Н. Р., Смит Г. ; ред. пер. Саит-Аметова М.; Пер. с англ. и ред. пер. Власенко М., Имамутдинова Р. Г., Орехова Н. А., Саит-Аметова М. М. : Диалектика : Виль-ямс, 2007. 911 с.

6.Безменов И.В. Метод очистки измерительных данных от выбросов: поиск оптимального решения с минимальным количеством отбракованных результатов измерений // Измерительная техника. 2023. № 1. С. 16-23.

7.Безменов И. В., Дроздов А. Э., Пасынок С. Л. Стратегия поиска выбросов в рядах зашумлённых данных с неизвестным трендом // Измерительная техника. 2022. № 5. С. 29-34.

8.Kozlovskiy V. Analytical models of mass media as a method of quality management in the automotive industry / V. Kozlovskiy, D. Aydarov // Quality - Access to Success. 2017. Т. 18. № 160. С. 83-87.

Мосин Владимир Геннадьевич, канд. физ.-мат. наук, доцент, yanbacha@yandex. ru, Россия, Самара, Самарский государственный технический университет,

Козловский Владимир Николаевич, д-р техн. наук, профессор, заведующий кафедрой, [email protected], Россия, Самара, Самарский государственный технический университет,

Васин Сергей Александрович, д-р. техн. наук, профессор, vasin [email protected], Россия, Тула, Тульский государственный университет

APPLICATION OF SINGULAR DECOMPOSITIONS TOWARDS DETECTING OUTLIERS IN CONTENT CONSUMPTION DATA

V.G. Mosin, V.N. Kozlovsky, S.A. Vasin

The article discusses a method for identifying anomalous objects, based on data reduction to the main directions and not requiring preliminary marking of data into normal and anomalous objects. The method is implemented as an algorithm and tested on content consumption data from one of the leading hosting services.

Key words: content, quality assessment, data analysis, singular value decompositions, anomaly detection, scikit-learn, pandas, numpy, SVD.

Mosin Vladimir Gennadievich, candidate of physical and mathematical sciences, docent, yanbacha@yandex. ru, Russia, Samara, Samara State Technical University,

Kozlovsky Vladimir Nikolaevich, doctor of technical sciences, professor, head of the department, [email protected], Russia, Samara, Samara State Technical University,

Vasin Sergey Alexandrovich, doctor of technical sciences, professor, vasin_sa53@mail. ru, Russia, Tula, Tula State University

i Надоели баннеры? Вы всегда можете отключить рекламу.