Software Fault Proneness Prediction Using Support Vector Machines
Изложение статьи
Yogesh Singh, Arvinder Kaur, Ruchika Malhotra. Software Fault Proneness Prediction Using Support Vector Machines. July 2009. World Congress on Engineering 2009 Vol I.
Основная часть
В статье рассматривается задача выявления дефектов (определение вероятности того, что в классе содержится дефект архитектурного решения). Для решения данной задачи используются метрики Чидамбера и Кемерера, которые оценивают структурные характеристики классов. Данные по метрикам используются как входные данные для метода опорных векторов (SVM). В статье рассматриваются следующие вопросы:
- Возможно ли выделение дефектов при помощи SVM?
- Насколько точна будет построенная модель для выявления дефектов?
Используемые метрики и датасеты
В статье рассматриваются следующие метрики:
- Coupling between Objects (CBO) - количество классов, с которым связан данный класс (fan-out)
- Lack of Cohesion (LCOM) - усредненная по атрибутам доля методов, использующая этот атрибут (LCOM3)
- Number of Children (NOC) - число непосредственных детей в дереве насследования у данного класса
- Depth of Inheritance (DIT) - расстояние от класса до корня в дереве насследования
- Weighted Methods per Class (WMC) - количество методов, имплементируемым классом
- Response for a Class (RFC) - WMC плюс количество наследованных методов
- Source Lines Of Code (SLOC) - количество строк кода в классе
При помощи данных метрик предсказывается вероятность наличия дефекта в классе.
В качестве выборки используется датасет KC1 (NASA), в котором даны измерения по 21 метрике для классов и методов. Для анализа используются только 7 вышеперечисленных метрик.
Метод опорных векторов
Метод опорных векторов применяется в различных задачах, такик как детекция лиц, распознавание дорожных знаков и пр. Идея метода опорных векторов состоит в построении оптимальной гиперплоскости, которая разделяет классы в пространстве признаков. В ходе построения модели предсказывания, находятся опорные вектора, которые определяют положение гиперплоскости. Стоит заметить, что опорные векторы максимизируют отступ между классами (margin) - расстояние от гиперплоскости до классов.
Для построения нелинейной разделяемой поверхности используется kernel trick: замена функции оптимизации с учётом сохранения свойств для решения задачи SVM (подробнее можно прочесть здесь). В решении задач хорошо зарекомендовала себя Radial Basis Function (RBF), которая может строить сложные разделяемые поверхности, к примеру, сферы.
Для оценивания наличия дефектов, используется порог разделения вероятностей принадлежности классу (если значение выше порога, то дефект присутствует, иначе дефекта нет). Оценка построенной модели производится при помощи измерения площади под ROC-кривой (ссылка).
Вычислительный эксперимент
В рамках вычислительного эксперимента для каждой из метрик оцениваются такие параметры, как полнота (доля отмеченных классов как дефект от общего числа дефективных классов) (Recall, Sensitivity), точность (доля правильно отмеченных дефектов) (Precision), доля классов, отмеченных как недефективные (Specificity) и доля правильно данных предсказаний (Completeness).
В ходе исследований, оказалось, что метрики NOC (ответ: все классы недефективны) и DIT (мал precision и specificity) не подходят для качественного выделения дефектов, лучше всего справляются с задачей метрики SLOC и CBO.
Для общей модели результаты получились следующими:
- Sensitivity - 76% (45 классов из 59)
- Specificity - 81% (более 70 классов из 86)
- Precision - 79%
- Completeness - 86%
- AUC-ROC - 0.89
После кросс-валидации по 10 блокам результаты остались в районе 70-80% по всем критериям качества.
В итоге, была обеспечена большая точность нахождения дефектов, что экономит средства на ручное выполнение данного процесса.
Заключение
Проанализировано применение метода опорных векторов в задаче выявления дефектов. По результатам исследования, можно сделать следующие выводы:
- Метрики CBO, RFC и SLOC сильно связаны с вероятностью дефекта, в то время как использованием NOC и DIT лучше пренебречь
- SVM дал хороший AUC-ROC, поэтому метод может быть применим на практике. Более того, результаты адаптируемы к объектно-ориентированным системам.
Более детальное продолжение данного исследования можно найти здесь, где рассмотрены различные методы машинного обучения и метрики качества.