УПРАВЛЕНИЕ КАЧЕСТВОМ ПРОДУКЦИИ. СТАНДАРТИЗАЦИЯ. ОРГАНИЗАЦИЯ ПРОИЗВОДСТВА
УДК 005.6
DOI: 10.24412/2071-6168-2024-1-208-209
НОВЫЕ ИНСТРУМЕНТЫ МОНИТОРИНГА КАЧЕСТВА. АНАЛИЗ ПОТРЕБЛЕНИЯ КОНТЕНТА НА РАЗРЕЖЕННЫХ ДАННЫХ
В.Г. Мосин, В.Н. Козловский, О.В. Пантюхин
В статье проводится исследование возможности применения инструментария регрессионного анализа в решении задач мониторинга качества на примере анализа потребления электронного контента.
Ключевые слова: контент, оценка качества, анализ данных, бинарная классификация, scikit-learn, pandas.
В задачах анализа данных и машинного обучения очень часто встречаются пропуски данных. Это может быть вызвано различными причинами, такими как человеческая ошибка, технические проблемы, отсутствие информации и т. д. Пропуски могут присутствовать в различных форматах, это могут быть пустые значения, маркеры N/A или null. Умение обращаться с пропущенными данными и эффективным образом их заполнять и обрабатывать является важной частью работы с данными.
Другая проблема помимо пропущенных данных — это разреженные данные, то есть данные, в которых значительная часть элементов отсутствует или равна нулю. В отличие от плотных данных, где большинство элементов имеют ненулевые значения, разреженные данные содержат меньшее количество информации. Примером разреженных данных может быть матрица, в которой большая часть элементов пуста или равна нулю. Например, матрица с данными о пользовательских взаимодействиях в социальной сети, где строки представляют пользователей, столбцы — различные действия, а значения — количество взаимодействий. Большинство пользователей могут не выполнять некоторые действия, поэтому эти элементы матрицы будут пустыми.
Алгоритмы работы с разреженными данными, особенно алгоритмы их компрессии для последующей передачи или хранения, хорошо изучены и широко применяются в практике машинного обучения [5, 6]. В настоящей статье мы рассмотрим еще один аспект работы с разреженными данными.
Теоретическая часть. Считается, что если обучить регрессионную модель на разреженных данных и протестировать ее на плотных данных, могут возникнуть проблемы и ошибки предсказаний.
Действительно, разреженные и плотные данные имеют различную структуру и распределение значений. В разреженных данных присутствуют пропуски или нулевые значения, а это может существенно влиять на обучение моделей и на их способность корректно предсказывать на плотных данных. Естественно, что регрессионная модель, обученная только на разреженных данных, может не учесть наличия большого количества ненулевых значений в плотных данных и не адаптироваться к ним.
Предмет исследования. Предметом нашего исследования являются данные о просмотрах контента на одном из ведущих хостингов на период с 01.01.2022 по 01.01.2023. Данные подвергаются искусственной сепарации на две неравные части по разным признакам так, что в одной части оказываются данные, разреженность которых выше.
Методика исследования. Если имеется два набора данных, обладающих одинаковой структурой, причем разреженность одного из них кратно превышает разреженность другого, то можно обучить две регрессионные модели: одну на разреженных данных, вторую — на плотных данных, и провести их перекрестное тестирование. Тогда полученные значения метрик эффективности покажут, правомерно ли применять модели к данным с чужой разреженностью.
Цель исследования. Наша цель состоит в том, чтобы продемонстрировать, что модели, обученные на разреженных данных, хорошо применимы к плотным данным, при этом обратное неверно.
Технологии. Мы работаем с данными, выполняем исследования и визуализируем результаты при помощи среды Jupyter Notebook. Эта среда предоставляет удобные инструменты для работы с языком программирования Python и его основными библиотеками: numpy, pandas, sklearn и matplotlib.
Одной из ключевых библиотек для научных вычислений и обработки массивов данных в языке программирования Python является библиотека numpy. Одномерные и многомерные числовые массивы эффективно обрабатываются с помощью предлагаемых библиотекой структур данных, алгоритмов и функций [2, 3].
Самая мощная библиотека для работы с данными в Python — pandas. Она тесно взаимодействует с другими инструментами для анализа и вычислений данных на платформе Python, такими как numpy, sklearn и matplotlib. Pandas обеспечивает эффективную обработку информации и применение различных алгоритмов и функций для анализа и визуализации данных [1].
Для решения регрессионных задач мы применяем библиотеку scikit-learn, которая также известна под именем sklearn. Библиотека sklearn является мощной и гибкой библиотекой машинного обучения с широким набором возможностей и удобным интерфейсом, что делает ее отличным средством для реализации моделей машинного обучения [3, 4].
Описание данных. Данные представляют собой сведения о 500 роликах, расположенных на одном из ведущих хостингов. За период с 01.01.2022 по 01.01.2023 по каждому ролику были накоплены сведения о следующих показателях:
1. количество новых комментариев к ролику;
2. количество пользователей, которые поделились ссылкой на этот ролик;
3. количество лайков, полученных роликом;
4. общее количество просмотров ролика;
5. общее время просмотра ролика в часах;
6. количество показов значка ролика в сервисах хостинга.
Данные представлены в виде таблицы, строки таблицы соответствуют объектам-роликам, столбцы — перечисленным выше признакам.
Алгоритм. Чтение данных. Методом read_csv библиотеки pandas загружаем в среду исполнения набор данных и формируем дата-фрейм.
Каждая строка описывает отдельный видеоролик, каждый столбец указывает на один из признаков, при помощи которого он описывается.
Разведочный анализ. Применяем метод info библиотеки pandas и выводим сведения о признаках. Все признаки относятся к типу с плавающей запятой, пропущенных данных нет.
Сепарация данных по одному из признаков. В качестве сепарирующего признака выбираем признак 'Показы' и разбиваем множество объектов на два класса по следующему принципу:
1. к условно богатому классу будем относить объекты, у которых значение сепарирующего признака выше среднего;
2. к условно бедному классу — объекты, у которых значение сепарирующего признака ниже среднего.
Для этого используем метод loc библиотеки pandas и получаем две локализации по сформулированным выше условиям. Заметим, что разбиение получилось неравномерным: объем богатого класса 126, в тот момент как к бедному классу относится 374 объекта.
# 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
№ Новые комментарии Поделились Отметки "Нравится" Просмотры Время просмотра (часы) Показы
0 9.0 108.0 143.0 9666.0 504.0843 35160.0
1 7.0 117.0 215.0 11857.0 611.2082 75236.0
2 6.0 30.0 47.0 4178.0 112.0546 12880.0
497 0.0 3.0 1.0 201.0 2.1633 4966.0
498 0.0 1.0 1.0 115.0 2.6637 2690.0
499 0.0 0.0 1.0 57.0 0.5895 1146.0
Сравнение средних значений. Применяя метод mean библиотеки pandas, выводим средние значения признаков для богатой и бедной локализаций.
№ Новые комментарии Поделились Отметки "Нравится" Просмотры Время просмотра (часы) Показы
Rich 1.222222 13.468254 29.888889 1697.761905 71.723731 11975.682540
Poor 0.125668 0.882353 2.826203 159.903743 5.272615 2088.216578
Все средние значения богатой локализации оказались выше значений бедной локализации.
Вычисление коэффициентов разреженности. Под коэффициентом разреженности данных мы понимаем отношение числа нулевых элементов дата-фрейма к общему числу его элементов.
Общее число элементов вычисляется легко: количество объектов умножается на количество признаком. Для подсчета числа ненулевых элементов мы применяем к дата-фрейму метод astype(bool), который возвращает дата-фрейм той же структуры, заполненный логическими значениями False и True (False возвращается, если элемент нулевой, True — если он отличен от нуля). После этого, применяя метод sum, получаем число всех вхождений True, то есть, число ненулевых элементов дата-фрейма. Отнимаем от общего числа элементов число ненулевых элементов и получаем число вхождений нуля в дата-фрейм [8, 9].
После вычислений приходим к следующим результатам: для полного набора исходных данных — 0.22, для богатой локализации — 0.07, для бедной локализации — 0.28. Таким образом, доля нулей в бедной локализации в 4 раза выше, чем в богатой.
Нормализация данных. Нормализация данных является неотъемлемым и важным шагом в процессе обучения регрессионных моделей. Регрессионная модель предназначена для прогнозирования значения целевой функции на основе значений не-
210
зависимых переменных. Однако если масштабы и диапазоны значений независимых переменных сильно отличаются, это может негативно сказаться на качестве модели и ее способности давать точные прогнозы.
Исходные данные в нашем исследовании не сбалансированы относительно масштабов измерения. Например, значения признака 'Новые комментарии' — это единицы, а значения признака 'Показы' — десятки тысяч. Такая несбалансированность может привести к построению некорректных моделей, потому что естественный приоритет будет отдаваться признакам с большими значениями, а признаки с меньшими будут игнорироваться.
Чтобы избежать этого эффекта, мы нормализуем данные к стандартному виду с нулевым средним значением и единичной дисперсией.
Построение и обучение моделей. На этом шаге, выбирая в качестве целевой функции тот или иной признак (а всего признаков 6), мы строим и обучаем 12 моделей, потому что по каждому признаку строится 2 модели: одна на богатой локализации и одна на бедной.
Целевая функция 'Новые комментарии'. Сначала берем богатую локализацию и для получения левой части регрессионной задачи, пользуясь методом drop библиотеки pandas, удаляем из нее целевой признак ' Новые комментарии ', после чего переводим оставшийся дата-фрейм в массив numpy, пользуясь методом to_numpy. В результате получается числовой массив X_rich, содержащий 126 строк и 5 столбцов. Для получения правой части выделяем в богатой локализации целевой признак, переводим его в массив и получаем одномерный числовой массив y_rich, содержащий 126 элементов. Действуя точно так же на бедной локализации, получаем массив левой части регрессионной задач X_poor, содержащий 374 строки и 5 столбцов, и массив y_poor, содержащий 374 элемента. Затем, методом LinearRegression из модуля linear_model библиотеки sklearn, мы формируем два объекта: модель model_rich и модель model_poor. Модель model_rich мы тренируем на богатых данных X_rich, y_rich, а модель mod-el_poor — на бедных данных X_poor, y_poor.
Другие целевые функции. Действуя так же, мы выделяем другие целевые функции и получаем еще 10 обученных моделей, по 2 модели на каждый из признаков 'Поделились', 'Отметки "Нравится"', 'Просмотры', 'Время просмотра (часы) ' и 'Показы'.
Перекрестное тестирование моделей
Зафиксируем какую-нибудь одну целевую функцию. Тогда у нас есть 2 модели, прогнозирующие ее значение: модель, обученная на богатых данных, и модель, обученная на бедных данных. И есть 2 набора данных: богатые, с меньшим коэффициентом разреженности, и бедные, с большим коэффициентом разреженности. Следовательно, можно провести 4 тестирования моделей и получить 4 оценки, которые естественным образом образуют матрицу:
R2rr R2rp
R2 R2
pr pp
Индексы этой матрицы оценок подчинены следующей логике (от англ. rich — богатый, poor — бедный): rr — модель была обучена на богатых данных и протестирована на богатых данных, rp — модель была обучена на богатых данных, а протестирована на бедных данных, pr — модель была обучена на бедных данных, а протестирована на богатых данных, pp — модель была обучена на бедных данных и протестирована на бедных данных. Именно такой матричной структуры перекрестных оценок мы будем придерживаться везде в дальнейшем исследовании.
Тестирование моделей с целевой функцией 'Новые комментарии'. Пользуясь методом score библиотеки sklearn, вычисляем 4 коэффициента детерминации:
R2rr = 0.48 R2rp = 0.13 R2pr = 0.41 R2pp = 0.20
Тестирование моделей с другими целевыми функциями. Повторяя в цикле по всем признакам, получаем 24 оценки.
Новые комментарии Поделились Отметки "Нравится" Просмотры Время просмотра (часы) Показы
Показы 0.48 0.13 0.92 0.49 0.96 0.65 0.96 0.80 0.96 0.82 0.84 -0.44
0.41 0.20 0.88 0.56 0.92 0.74 0.95 0.84 0.96 0.82 0.52 0.20
Сепарация по всем признакам. Теперь мы повторяем шаги. Фактически, мы реализуем вложенный цикл, используя в качестве сепаратора и целевой функции признаки исходного дата-фрейма, при этом признаки нумеруются в следующем порядке: 'Новые комментарии' — 0, 'Поделились' — 1, 'Отметки "Нравится"' — 2, 'Просмотры' — 3, 'Время просмотра (часы) ' — 4 и 'Показы' — 5.
Получаем таблицу оценок, где строки указывают на сепарирующий признак, а столбцы — на целевую функцию.
Шаги Tar get0 Tar get1 Tar get2 Tar get3 Tar get4 Tar get5
Sep0 0.47 0.00 0.93 0.79 0.96 0.83 0.97 0.93 0.96 0.91 0.85 0.19
0.00 1.00 0.91 0.82 0.94 0.87 0.96 0.94 0.96 0.92 0.69 0.44
Sep1 0.48 0.06 0.91 0.09 0.95 0.70 0.96 0.64 0.96 0.70 0.87 -0.19
0.44 0.25 0.77 0.39 0.92 0.79 0.90 0.80 0.95 0.77 0.63 0.42
Sep2 0.48 0.17 0.92 0.42 0.95 0.54 0.96 0.80 0.95 0.75 0.84 -0.34
0.43 0.23 0.86 0.54 0.91 0.60 0.95 0.82 0.94 0.77 0.64 0.27
Sep3 0.44 -0.03 0.92 0.17 0.95 0.59 0.96 0.73 0.95 0.74 0.85 -0.48
0.32 0.10 0.81 0.40 0.91 0.69 0.94 0.79 0.95 0.75 0.60 0.26
Sep4 0.44 -0.32 0.93 0.07 0.95 0.64 0.97 0.55 0.96 0.58 0.85 -0.37
0.35 0.17 0.77 0.35 0.92 0.70 0.88 0.78 0.92 0.69 0.60 0.43
Sep5 0.48 0.13 0.92 0.49 0.96 0.65 0.96 0.80 0.96 0.82 0.84 -0.44
0.41 0.20 0.88 0.56 0.92 0.74 0.95 0.84 0.96 0.82 0.52 0.20
Результаты. Если сепарировать данные по произвольному признаку и в качестве целевой функции тоже назначить произвольный признак, то каждой такой ситуации будет возникать 4 оценки прогнозирующей способности регрессионной модели:
R2rr R2rp
R2pr R2pp
В результате проведенного исследования нами получено 144 оценки, сгруппированные в 36 блоков по 4 оценки в каждом блоке. Наш основной результат заключается в том, что почти всегда (с единственным исключением) выполняются следующие соотношения:
R2rr > R2pr > R2pp > R2rp
Интерпретация. Ситуация rich-rich. Наибольшую метрику прогнозирующей эффективности демонстрируют модели, обученные на богатых данных, и протестированные на тех же данных, на которых обучалась модель (то есть, тоже на богатых данных). В этом нет ничего удивительного, так как в качестве тестовой выборки выступает обучающая выборка.
Ситуация poor-poor. С одной стороны, ситуация, когда модель обучается на бедной выборке и тестируется тоже на бедной (то есть, фактически, на себе самой), должна быть аналогична предыдущей. С другой стороны, мы видим, что метрика эффективности в такой ситуации гораздо меньше. Это можно объяснить именно бедностью данных: поскольку нетривиальных значений меньше, их сложнее прогнозировать.
Ситуация rich-poor. Самые низкие прогнозирующие способности демонстрируют модели, обученные на богатых данных, и протестированные на бедных. В этом тоже нет ничего удивительного, в силу того, что обучающие и тестовые данные неоднородны.
Ситуация poor-rich. Но если обучить модель на бедных данных и протестировать на богатых, результат оказывается неожиданно высоким. Казалось бы, данные, как и в предыдущей ситуации, неоднородны, качество прогноза должно быть низким, но оно почти всегда (с единственным исключением) оказывается близким к максимально возможным значениям, которые возникают в ситуации rich-rich.
212
Исключение. Исключение составляет ситуация, когда в качестве как сепаратора, так и целевой функции выступает признак 'Новые комментарии'. Это объясняется тем, что сам по себе признак 'Новые комментарии' является очень бедным, большинство его позиций — это 0, а среднее значение, по которому производится разделение на бедные и богатые данные, равно 0.402, то есть меньше 1. В силу того, что на множестве неотрицательных целых чисел все, что меньше 1 — это 0, на бедных данных признак 'Новые комментарии' оказывается константным нулем. Поэтому прогноз в ситуации poor-poor идеален (если значение целевой функции — это всегда 0, то его наверняка можно предсказать), а прогнозы в разноименных ситуациях rich-poor и poor-rich обладают нулевым коэффициентом детерминации, так как они ничего не прогнозируют.
Выводы. Данные в машинном обучении не всегда бывают сбалансированы по плотности в силу нескольких причин, прежде всего потому, что в реальных данных может присутствовать разное количество примеров разных классов или значений целевой функции. Например, в задаче детекции мошеннических транзакций, обычно мошеннических транзакций бывает гораздо меньше по сравнению с нормальными транзакциями. Такие несбалансированные данные — это естественное следствие реальных сценариев.
Кроме того, сбор данных может быть затруднен, особенно для определенных классов или редких событий. Например, сбор данных о редких заболеваниях или катастрофах может быть сложным из-за их низкой частоты.
Несбалансированность данных может создавать проблемы при обучении моделей, такие как смещение в сторону доминирующего класса, низкую точность предсказаний редкого класса и неправильную оценку общей производительности модели. В таких случаях могут потребоваться специфические методы для работы с несбалансированными данными: аугментация данных, сэмплирование, использование взвешенных функций потерь или алгоритмов, которые уделяют больше внимания редкому классу [2, 5 - 8]. В настоящей работе мы исследовали другой феномен, относящийся к разреженным данным, то есть, к данным, значительная часть которых равна 0. А именно: нам удалось продемонстрировать, что регрессионные модели, построенные и обученные на разреженных данных, показывают хорошую прогнозирующую способность на плотных данных. При этом обратное неверно: если модель была обучена на плотных данных, то она обладает низкой прогнозирующей способностью на разреженных данных. Мы не утверждаем, что действие этого феномена является универсальным и проявляется всегда, как только возникают несбалансированные по плотности данные, более того, в нашем распоряжении есть данные, когда наблюдается обратное явление. Но в любом случае, этот феномен нельзя считать случайным, так как он проявляется значимо чаще, чем не проявляется.
Список литературы
1. Хейдт М. Изучаем Pandas. Москва: ДМК Пресс, 2018. 438 с.
2. Бурков А. Машинное обучение без лишних слов / А. Бурков; СПб: Питер, 2020. 192 с.
3. Вьюгин В.В. Математические основы теории машинного обучения и прогнозирования. М.: МЦИМО. 2013. 387 с.
4. Бринк Х. Машинное обучение / Х. Бринк, Дж. Ричардс, М. Феверолф — СПб.: Питер, 2017. 336 с.
5. Воронцов К.В., Попова М.С. Обзор и сравнительный анализ методов извлечения выборок нулевой плотности для регрессионного анализа разреженных данных // Информатика и ее применения. 2017. Т. 11. № 2.
6. Фельдман И. В., Малюкина Е. В., Якупова С. М. Моделирование разреженного временного ряда полигармоническими функциями // Вестник Томского государственного университета. Математика и механика. 2017. № 4(48). С. 36-42.
7. Козловский, В.Н. Цифровая среда поддержки управления конкурентоспособностью / В.Н. Козловский, Д.В. Айдаров, Д.И. Панюков, М.М. Васильев // Стандарты и качество. 2018. № 6. С. 86-89.
8. Козловский, В.Н. Потребительская ценность качества автомобилей / В.Н. Козловский, Г.Л. Юнак, Д.В. Айдаров, С.А. Шанин // Стандарты и качество. 2017. № 12. С. 76-80.
Мосин Владимир Геннадьевич, канд. физ.-мат. наук, доцент, [email protected], Россия, Самара, Самарский государственный технический университет,
Козловский Владимир Николаевич, д-р техн. наук, профессор, заведующий кафедрой, [email protected], Россия, Самара, Самарский государственный технический университет,
Пантюхин Олег Викторович, д-р техн. наук, доцент, olegpantyukhin@,mail.ru, Россия, Тула, Тульский государственный университет
NEW QUALITY MONITORING TOOLS. ANALYSIS OF CONTENT CONSUMPTION ON
SPARSE DATA
V.G. Mosin, V.N. Kozlovsky, O.V. Pantyukhin
The article studies the possibility of using regression analysis tools in solving quality monitoring problems using the example of analyzing the consumption of electronic content.
Key words: content, quality assessment, data analysis, binary classification, scikit-learn, pandas.
Mosin Vladimir Gennadievich, candidate of physical and mathematical sciences, do-cent, [email protected], 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,
Pantyukhin Oleg Viktorovich, doctor of technical sciences, docent, olegpantyu-khin@,mail.ru, Russia, Tula, Tula State University