Модели классификации для ансамблевого фильтра шума В недавнем исследовании мы провели предварительную работу по обнаружению шума на двух примерах программного обеспечения NASA, используя ансамбль из 25 классификаторов.9 Основная идея заключалась в использовании набора различных классификаторов (в качестве фильтра ансамбля-классификатора) для классификации программных модулей и маркировки как потенциального шума тех, которые были неправильно классифицированы большинством классификаторов. Основное предположение заключается в том, что если большинство классификаторов неправильно классифицируют программный модуль, то значения атрибутов этого модуля, вероятно, не соответствуют основным характеристикам всего программного продукта, и модуль, скорее всего, является шумом.
Ансамблевый фильтр шума состоит из 25 различных классификаторов. Он включает традиционные классификаторы (такие как логистическая регрессия, наивный Байес и деревья регрессии) и передовые методы на основе вычислительного интеллекта (такие как генетическое программирование, нейронные сети и грубые множества). В таблице 4 перечислены 25 классификаторов, используемых в нашем ансамбле фильтрации шума. Классификаторы охватывают различные парадигмы контролируемого обучения, включая индукцию, мягкие вычисления и статистическую регрессию. Некоторые из них реализованы в программе Weka для поиска данных и машинного обучения, написанной на языке Java.10 В других работах каждый классификатор описан более подробно.9,10
Для каждого метода классификации мы сначала получили несколько моделей-кандидатов. В качестве окончательной модели мы выбрали модель с оптимальным балансом между коэффициентами ошибок FPR и FNR. Мы приняли эту стратегию в соответствии с нашими предыдущими исследованиями1 высоконадежных программных систем, подобных JM1 и KC2. Более того, такая стратегия является практическим решением для программных систем с высокой степенью надежности, поскольку классификация по принципу супервизора сложна для таких систем и часто дает классификатор, который предсказывает большинство или все модули как не подверженные сбоям.
Классификатор строк кода сначала сортирует модули в порядке возрастания количества строк кода. Используя определенное пороговое значение количества строк кода, thdLOC, модули с LOC меньше thdLOC были отобраны и помечены (предсказаны) как не подверженные сбоям, а остальные - как подверженные сбоям. Мы варьировали пороговое значение пока мы не получили желаемый баланс между FPR и FNR. Специалисты по разработке программного обеспечения часто используют метрику LOC в качестве эмпирического правила для оценки качества программного продукта. В основе лежит предположение о том, что программный модуль большего размера, скорее всего, будет иметь больше программных ошибок, чем модуль меньшего размера.
В таблице 4 показаны показатели FPR и FNR 25 классификаторов для двух примеров. Для 19 из 25 классификаторов показатели ошибок основаны на десятикратной перекрестной валидации. Для шести методов классификации, отмеченных в таблице звездочкой, функция перекрестной валидации недоступна из-за ограничений соответствующих используемых инструментов. В таблице 5 представлены некоторые описательные статистики коэффициентов ошибок для 25 моделей классификации. Коэффициенты ошибок выбранных моделей для JM-8850 относительно выше, чем для KC2-520. Кроме того, коэффициенты ошибок FPR и FNR для данного классификатора схожи, что отражает эффект нашей стратегии отбора моделей.