{"id":2797,"date":"2026-11-07T13:27:51","date_gmt":"2026-11-07T13:27:51","guid":{"rendered":"https:\/\/sites.wp.odu.edu\/locky\/?p=2797"},"modified":"2026-10-26T20:50:02","modified_gmt":"2026-10-26T20:50:02","slug":"the-19-attacks-my-99-98-model-missed","status":"publish","type":"post","link":"https:\/\/sites.wp.odu.edu\/locky\/2026\/11\/07\/the-19-attacks-my-99-98-model-missed\/","title":{"rendered":"The 19 Attacks My 99.98% Model Missed"},"content":{"rendered":"\n<p>My intrusion detection model scored 0.9998 ROC-AUC. The interesting part was the 19 attacks it missed.<\/p>\n\n\n\n<p>The assignment was Gradient Boosting on NSL-KDD, a benchmark of 25,192 network connection records. I tuned 27 hyperparameter combinations with five-fold cross-validation. Then I evaluated the winner once on a held-out test set.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tuning barely mattered<\/h3>\n\n\n\n<p>The default settings already reached 0.9996 cross-validated ROC-AUC. The best tuned configuration reached 0.99984. That gain is about the size of the noise between folds.<\/p>\n\n\n\n<p>An untuned Random Forest then matched the tuned model almost exactly. Only AdaBoost fell behind, with roughly six times the missed intrusions. Its single-split trees couldn\u2019t capture the problem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What the misses had in common<\/h3>\n\n\n\n<p>Out of 3,523 intrusions, the model missed 19. None was a scan or a flood. All 19 were TCP, and most were normally completed sessions on ordinary ports: HTTP, FTP, telnet, SMTP.<\/p>\n\n\n\n<p>Scans and floods are easy. They leave structural fingerprints, like a SYN with no reply. Signature-based tools already catch those.<\/p>\n\n\n\n<p>The missed attacks looked like normal sessions carrying a malicious payload. Those are exactly the cases machine learning is supposed to add value against.<\/p>\n\n\n\n<p>It wasn\u2019t a threshold problem either. Most of the misses scored below 0.11 probability of being an attack. The model was confidently wrong.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why<\/h3>\n\n\n\n<p>One feature, source bytes, carried 72.8 percent of the model\u2019s importance. A model leaning that hard on payload size separates floods easily. It has little to say about a telnet session carrying a few hundred bytes of password guesses.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The takeaway<\/h3>\n\n\n\n<p>The near-perfect score described the easy attacks. The useful result was the structure of the errors left over.<\/p>\n\n\n\n<p>The full report is on my <a href=\"https:\/\/sites.wp.odu.edu\/locky\/coursework\/cybersecurity-applications\/cyse-420-applied-ml-in-cybersecurity\/\">CYSE 420 course page<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\"><div class=\"wp-block-group__inner-container\"><a href=\"https:\/\/sites.wp.odu.edu\/locky\/wp-content\/uploads\/sites\/38189\/2026\/10\/CYSE420_Assignment04_Report.pdf\" class=\"pdfemb-viewer\" style=\"\" data-width=\"max\" data-height=\"max\"  data-toolbar=\"both\" data-toolbar-fixed=\"on\">CYSE420_Assignment04_Report<br\/><\/a>\n<p class=\"wp-block-pdfemb-pdf-embedder-viewer\"><\/p>\n<\/div><\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<ul class=\"wp-block-social-links has-normal-icon-size has-visible-labels has-icon-color has-icon-background-color is-style-default is-horizontal is-content-justification-center is-layout-flex wp-container-core-social-links-layout-1 wp-block-social-links-is-layout-flex\"><li style=\"color: #ffffff; background-color: #cf2e2e; \" class=\"wp-social-link wp-social-link-chain has-white-color wp-block-social-link\"><a rel=\"https:\/\/www.credly.com\/users\/carl-lochstampfor-jr noopener nofollow\" target=\"_blank\" href=\"http:\/\/sites.wp.odu.edu\/locky\/wp-content\/uploads\/sites\/38189\/2026\/10\/CYSE420_Assignment04_Report.pdf\" class=\"wp-block-social-link-anchor\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" version=\"1.1\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15.6,7.2H14v1.5h1.6c2,0,3.7,1.7,3.7,3.7s-1.7,3.7-3.7,3.7H14v1.5h1.6c2.8,0,5.2-2.3,5.2-5.2,0-2.9-2.3-5.2-5.2-5.2zM4.7,12.4c0-2,1.7-3.7,3.7-3.7H10V7.2H8.4c-2.9,0-5.2,2.3-5.2,5.2,0,2.9,2.3,5.2,5.2,5.2H10v-1.5H8.4c-2,0-3.7-1.7-3.7-3.7zm4.6.9h5.3v-1.5H9.3v1.5z\"><\/path><\/svg><span class=\"wp-block-social-link-label\">Full Screen or Download<\/span><\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>My tuned Gradient Boosting IDS scored 0.9998 ROC-AUC on NSL-KDD. The 19 intrusions it missed reveal what the score hides.<\/p>\n","protected":false},"author":30379,"featured_media":2798,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"image","meta":{"footnotes":"","wds_primary_category":60},"categories":[165,60],"tags":[299,281],"_links":{"self":[{"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/posts\/2797"}],"collection":[{"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/users\/30379"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/comments?post=2797"}],"version-history":[{"count":1,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/posts\/2797\/revisions"}],"predecessor-version":[{"id":2799,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/posts\/2797\/revisions\/2799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/media\/2798"}],"wp:attachment":[{"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/media?parent=2797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/categories?post=2797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sites.wp.odu.edu\/locky\/wp-json\/wp\/v2\/tags?post=2797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}