Исследователи из Московского технического университета связи и информатики (МТУСИ) выяснили, какие алгоритмы машинного обучения наиболее эффективны для обнаружения дефектов в программном обеспечении. В современном мире программный код является основой функционирования практически всех устройств, начиная от бытовой техники и заканчивая сложными телекоммуникационными системами. Однако, несмотря на это, доля ошибочного кода в реальных проектах значительно меньше, чем корректного, что делает его выявление сложной задачей. Об этом сообщил представитель МТУСИ в интервью CNews.
Для поиска наиболее эффективного решения группа ученых МТУСИ под руководством Юрия Леохина и Тимура Фатхулина провела сравнительный анализ нескольких алгоритмов машинного обучения. В исследовании были задействованы как классические модели, такие как наивный байесовский классификатор и метод опорных векторов (SVM), так и более современные подходы, включая Random Forest, нейросеть MultiLayer Perceptron и алгоритмы градиентного бустинга. Перед обучением моделей данные были специально подготовлены: метод SMOTE использовался для искусственного увеличения доли примеров с ошибками, что позволило алгоритмам одинаково эффективно распознавать как «хороший», так и «проблемный» код.
Каждая модель оценивалась по трем ключевым критериям: точность (редкость ошибок модели), полнота (количество найденных реальных ошибок) и F1-мера (сбалансированная оценка качества). Кроме того, для большинства моделей была проведена оптимизация параметров, чтобы максимально раскрыть их потенциал. По результатам серии экспериментов наилучшие показатели продемонстрировал алгоритм XGBoost. Он показал высокую точность в обнаружении дефектов, устойчивость к различным типам данных, а также быстрое обучение и высокую скорость работы.
Исследователи считают, что использование моделей на базе алгоритма XGBoost позволит разработчикам заранее выявлять уязвимые участки кода, снижать количество сбоев и повышать надежность цифровых систем. В будущем ученые МТУСИ планируют усовершенствовать модель XGBoost, чтобы еще больше повысить ее точность и производительность. XGBoost (Extreme Gradient Boosting) представляет собой высокопроизводительную реализацию алгоритма градиентного бустинга, применяемую в машинном обучении для решения задач классификации, регрессии и ранжирования. Это оптимизированная распределенная библиотека с открытым исходным кодом, которая строит модель путем последовательного добавления слабых моделей (обычно деревьев решений) в ансамбль, при этом каждая новая модель фокусируется на исправлении ошибок, допущенных предыдущими моделями.