การกำหนดเกณฑ์อัตโนมัติสำหรับการตรวจจับความผิดปกติ


9

ฉันกำลังทำงานกับอนุกรมเวลาของคะแนนความผิดปกติ (พื้นหลังคือการตรวจจับความผิดปกติในเครือข่ายคอมพิวเตอร์) ทุกนาทีฉันได้รับคะแนนความผิดปกติซึ่งบอกฉันว่า "ไม่คาดฝัน" หรือผิดปกติสถานะปัจจุบันของเครือข่ายคืออะไร ยิ่งคะแนนสูงเท่าไรสถานะปัจจุบันก็ยิ่งผิดปกติมากเท่านั้น คะแนนที่ใกล้เคียงกับ 5 เป็นไปได้ในทางทฤษฎี แต่เกิดขึ้นแทบจะไม่เคยเกิดขึ้นเลยxเสื้อ[0,5]

ตอนนี้ฉันต้องการอัลกอริธึมหรือสูตรที่กำหนดเกณฑ์โดยอัตโนมัติสำหรับอนุกรมเวลาผิดปกตินี้ ทันทีที่คะแนนผิดปกติเกินเกณฑ์นี้สัญญาณเตือนจะเริ่มทำงาน

การแจกแจงความถี่ด้านล่างเป็นตัวอย่างสำหรับอนุกรมเวลาที่ผิดปกติมากกว่า 1 วัน อย่างไรก็ตามมันไม่ปลอดภัยที่จะสมมติว่าซีรีย์ความผิดปกติทุกครั้งจะมีลักษณะเช่นนั้น ในตัวอย่างพิเศษนี้เกณฑ์ความผิดปกติเช่น. 99-quantile จะเข้าท่าเนื่องจากคะแนนไม่กี่อันทางขวามากถือได้ว่าเป็นความผิดปกติ

ป้อนคำอธิบายรูปภาพที่นี่

และการแจกแจงความถี่เดียวกันกับอนุกรมเวลา (ช่วงนั้นมีค่าตั้งแต่ 0 ถึง 1 เนื่องจากไม่มีคะแนนความผิดปกติสูงกว่าในอนุกรมเวลา):

อนุกรมเวลา

แต่น่าเสียดายที่การแจกแจงความถี่อาจมีรูปร่างที่ .99-quantile คือไม่ได้มีประโยชน์ ตัวอย่างด้านล่าง หางขวาอยู่ในระดับต่ำมากดังนั้นหากใช้. 99-quantile เป็นจุดเริ่มต้นสิ่งนี้อาจส่งผลให้เกิดผลบวกปลอมหลายอย่าง การแจกแจงความถี่นี้ดูเหมือนจะไม่มีความผิดปกติดังนั้นเกณฑ์ควรอยู่นอกการกระจายที่ประมาณ 0.25

ป้อนคำอธิบายรูปภาพที่นี่

สรุปแล้วความแตกต่างระหว่างสองตัวอย่างนี้คือตัวอย่างแรกดูเหมือนว่าจะมีความผิดปกติในขณะที่อีกอันหนึ่งไม่มี

จากมุมมองที่ไร้เดียงสาของฉันอัลกอริทึมควรพิจารณาสองกรณีนี้:

  • หากการแจกแจงความถี่มีหางขวาขนาดใหญ่ (เช่นคะแนนผิดปกติสองเท่า) ดังนั้น. 99-quantile อาจเป็นเกณฑ์ที่ดี
  • หากการแจกแจงความถี่มีหางขวาสั้นมาก (เช่นไม่มีคะแนนผิดปกติ) เกณฑ์นั้นควรอยู่นอกการแจกแจง

/ แก้ไข: นอกจากนี้ยังไม่มีข้อมูลจริงเช่นชุดข้อมูลที่มีป้ายกำกับ ดังนั้นอัลกอริทึมคือ "ตาบอด" กับธรรมชาติของคะแนนความผิดปกติ

ตอนนี้ฉันไม่แน่ใจว่าวิธีการสังเกตเหล่านี้สามารถแสดงในแง่ของอัลกอริทึมหรือสูตร ใครบ้างมีข้อเสนอแนะวิธีแก้ปัญหานี้? ฉันหวังว่าคำอธิบายของฉันจะเพียงพอเนื่องจากพื้นหลังทางสถิติของฉันมี จำกัด มาก

ขอบคุณสำหรับความช่วยเหลือของคุณ!


เพียงแค่ทราบกราฟแรกไม่เหมือนกับสิ่งใดปกติสำหรับฉัน
mpiktas

1
@ cryptron คำถามสำคัญคือสิ่งที่เป็นเกณฑ์เสียง ตัวอย่างเช่นหากการแจ้งเตือนที่เพิ่มขึ้นและการแจ้งเตือนที่ไม่ได้เพิ่มขึ้นนั้นมีค่าใช้จ่ายบางอย่างคุณสามารถเลือกเกณฑ์ที่จะลดต้นทุนรวมได้ เพื่อที่เราต้องการข้อมูลค่าใช้จ่าย หากไม่มีคำจำกัดความที่แน่นอนของเสียงเป็นไปไม่ได้ที่จะวัดวิธีการประเมินวิธีที่เลือกสำหรับการเลือกเกณฑ์
mpiktas

@mpiktas: ฉันต้องยอมรับว่าคำว่า "เสียง" โชคร้ายในบริบทนี้เพราะฉันไม่มีวิธีการประเมินเกณฑ์อย่างจริงจัง (ดังนั้นฉันจึงแก้ไขมัน) โดยพื้นฐานแล้วเกณฑ์ที่ควรจะลดผลบวกที่ผิดพลาดเพราะพวกเขาเป็นวิธีที่มีราคาแพงกว่าเชิงลบเท็จในการตรวจจับความผิดปกติของเครือข่าย
cryptron

@cryptron คุณมีข้อมูลใด ๆ เกี่ยวกับค่าบวกที่เป็นเท็จหรือไม่?
mpiktas

1
ฉันสับสนกับแผนการของคุณ นี่เป็นอนุกรมเวลาที่ไม่แปรเปลี่ยน{xเสื้อ} การรับค่ามา 0<xเสื้อ5? หรือควรจะเป็น0<xเสื้อ0.5? (จากการดูที่แกน x ในพล็อตแรกของคุณ) traceplot ก็มีประโยชน์มากกว่าเช่นกัน ตัวอย่างเช่นคุณได้รับคะแนนสูงในช่วงเวลาที่ยั่งยืนหรือเป็นช่วงสั้น ๆ (หรือทั้งคู่)? ถ้าทั้งคู่มีปัญหามากกว่าอีกเรื่องหนึ่งหรือไม่? หากคุณสามารถวางแบบจำลองที่สมเหตุสมผลสำหรับข้อมูลคุณสามารถใช้ควอนตัมเชิงทฤษฎีจากการแจกแจงที่พอดีซึ่งจะแก้ปัญหาที่คุณระบุด้วยตัวอย่างควอนไทล์
JMS

คำตอบ:


2

คุณอาจพบกระดาษนี้น่าสนใจ ดูการนำเสนอนอกจากนี้ยังมีรายละเอียดอื่น ๆ ของแบบจำลองที่คล้ายกันในเวสต์และแฮร์ริสัน มีตัวอย่างอื่น ๆ ของการตรวจสอบประเภทนี้เช่นกันส่วนมากเป็นแบบล่าสุด แต่นี่ไม่ใช่รถเข็นของฉัน :) ไม่ต้องสงสัยเลยว่ามีการติดตั้งใช้งานที่เหมาะสมของโมเดลเหล่านี้ แต่ฉันไม่รู้ว่าพวกเขาจะทำอะไรทันใด ...

แนวคิดพื้นฐานคือคุณมีโมเดลการสลับซึ่งการสังเกต / ลำดับของการสังเกตบางอย่างนั้นมาจากสถานะเครือข่ายที่ผิดปกติในขณะที่ส่วนที่เหลือถือว่าเป็นเรื่องปกติ ส่วนผสมแบบนี้สามารถอธิบายได้ว่าหางยาวขวาในพล็อตแรกของคุณ โมเดลแบบไดนามิกสามารถแจ้งเตือนคุณถึงการกระโดดผิดปกติเช่นเวลา 8:00 น. และ 4:00 น. แบบเรียลไทม์โดยกำหนดความน่าจะเป็นสูงให้กับการสังเกตใหม่ที่เป็นของปัญหา นอกจากนี้ยังสามารถขยายออกได้อย่างง่ายดายเพื่อรวมสิ่งต่าง ๆ เช่นตัวทำนายส่วนประกอบตามระยะเวลา (บางทีคะแนนของคุณเพิ่มขึ้น / ลดลงเล็กน้อยกับกิจกรรม) และสิ่งนั้น

แก้ไข: ฉันควรเพิ่มรูปแบบเช่นนี้คือ "unsupervised" ในแง่ที่ว่ามีความผิดปกติเกิดขึ้นโดยการแสดงการเปลี่ยนแปลงค่าเฉลี่ยขนาดใหญ่หรือการเพิ่มความแปรปรวน เมื่อคุณรวบรวมข้อมูลคุณสามารถปรับปรุงโมเดลด้วยการแจกแจงก่อนหน้าที่ให้ข้อมูลเพิ่มเติม แต่บางทีเมื่อคุณมีข้อมูลเพียงพอ (และตัวอย่างการฝึกอบรมที่ยากต่อการจัดการกับปัญหาเครือข่าย!) คุณสามารถกำหนดกฎการตรวจสอบง่าย ๆ (thresholds และอื่น ๆ )


1

คุณมีตัวอย่าง 'ติดป้ายกำกับ' ของสิ่งที่ก่อให้เกิดความผิดปกติหรือไม่? ค่าที่เกี่ยวข้องกับความล้มเหลวของเครือข่ายหรืออะไรแบบนั้น

แนวคิดหนึ่งที่คุณอาจพิจารณานำไปใช้คือเส้นโค้ง ROC ซึ่งมีประโยชน์สำหรับการเลือก threshholds ที่ตรงกับเกณฑ์เฉพาะเช่นการเพิ่มผลบวกที่แท้จริงหรือลดเชิงลบที่ผิดพลาดให้น้อยที่สุด

แน่นอนว่าต้องใช้ ROC curve คุณต้องติดป้ายกำกับข้อมูลของคุณด้วยวิธีใดวิธีหนึ่ง


1
น่าเสียดายที่ฉันไม่มีชุดข้อมูลที่มีป้ายกำกับ มีเพียงข้อสันนิษฐานว่าหางยาวหรือค่าผิดปกติแสดงถึงความผิดปกติในชุดข้อมูล
cryptron

@ cryptron ฉันเห็น ดังนั้นสิ่งที่คุณต้องการคือวิธีการระบุค่าผิดปกติแบบไดนามิก
Zach

นั่นจะช่วยแก้ปัญหาได้ใช่ไหม
cryptron

1

กราฟของ "ซีรี่ส์ดั้งเดิม" ไม่จำเป็นต้องแสดงโครงสร้างใด ๆ ที่กำหนดไว้ล่วงหน้า สิ่งสำคัญคือกราฟของ "ส่วนที่เหลือจากชุดแบบจำลองที่เหมาะสม" จำเป็นต้องแสดงทั้งโครงสร้างแบบเกาส์เซียน "โครงสร้างแบบเกาส์" นี้มักจะได้รับจากการรวม "การแปลง" อย่างน้อยหนึ่งอย่างต่อไปนี้ 1. รูปแบบ arima 2. การปรับสำหรับการเลื่อนระดับท้องถิ่นหรือแนวโน้มของเวลาท้องถิ่นหรือฤดูกาลตามฤดูกาลหรือจังหวะปกติ 4. การเปลี่ยนแปลงพลังงานที่เป็นไปได้ (บันทึกและอื่น ๆ ) เพื่อจัดการกับความแตกต่างของความแตกต่างที่เฉพาะเจาะจง 5. การตรวจหาจุดในเวลาที่อาจมีการเปลี่ยนแปลงรูปแบบ / พารามิเตอร์

การตรวจจับสิ่งรบกวนจะให้ข้อความเกี่ยวกับนัยสำคัญทางสถิติของเหตุการณ์ล่าสุดที่บ่งบอกถึงสภาวะปกติหรือความผิดปกติ


0

ในการตอบกลับของ OP กับคำตอบก่อนหน้าของฉันเขาได้โพสต์ข้อมูลของเขาไปยังเว็บ 60 อ่านต่อชั่วโมงเป็นเวลา 24 ชั่วโมงเป็นเวลา 6 วัน เนื่องจากนี่เป็นเครื่องมือข้ามเวลาแบบอนุกรมเช่น DBSCAN มีความเกี่ยวข้อง จำกัด เนื่องจากข้อมูลมีการพึ่งพาชั่วคราว ด้วยข้อมูลเช่นนี้มักจะมองหาโครงสร้างภายในชั่วโมงและภายในวัน นอกจากโครงสร้างประเภทนี้เราสามารถติดตามการตรวจสอบความผิดปกติซึ่งอาจเป็นเพียงครั้งเดียวเท่านั้น (พัลส์) หรือระบบในธรรมชาติ (การเลื่อนระดับ) โดยใช้วิธีการที่ได้รับการบันทึกไว้อย่างดี (ดูวรรณกรรมของ Tsay, Tiao, Chen et. al.) ขั้นตอนเหล่านี้ให้ผลต่อ "ความผิดปกติ" ต่อไปนี้โปรดทราบว่าการเปลี่ยนระดับนั้นมีนัยสำคัญในการแนะนำ "กลุ่ม" แยกต่างหาก ความผิดปกติที่ระบุด้านบน

                                HOUR/MINUTE     TIME

-1

หลังจากเพื่อนของฉันชี้ให้ฉันไปในทิศทางของอัลกอริธึมการจัดกลุ่มฉันพบกับDBSCANซึ่งสร้างกลุ่มในพื้นที่ n-มิติตามพารามิเตอร์ที่กำหนดไว้ล่วงหน้าสองรายการ แนวคิดพื้นฐานคือการจัดกลุ่มตามความหนาแน่นเช่นบริเวณที่หนาแน่นเป็นกลุ่ม อัลกอริทึมจะถูกส่งคืนแยกต่างหาก ดังนั้นเมื่อนำไปใช้กับฮิสโตแกรม 1 มิติของฉัน DBSCAN สามารถบอกฉันได้ว่าคะแนนความผิดปกติของฉันมีค่าผิดปกติหรือไม่ หมายเหตุ: ใน DBSCAN ค่าผิดปกติเป็นเพียงจุดที่ไม่ได้เป็นของคลัสเตอร์ใด ๆ ในระหว่างการดำเนินการตามปกติฉันคาดว่าอัลกอริทึมจะให้ผลเพียงคลัสเตอร์เดียว (และไม่มีค่าผิดปกติ)

หลังจากการทดลองฉันพบว่าพารามิเตอร์ ε0.1ทำได้ดี. ซึ่งหมายความว่าคะแนนจะต้องมีระยะห่างอย่างน้อย 0.1 ถึงกระจุก "ปกติ" เพื่อที่จะมองเห็นได้ไกลกว่า

หลังจากสามารถระบุค่าผิดปกติได้การค้นหาเกณฑ์จะทำให้กฎง่าย ๆ เช่น:

  • หากชุดแสดงค่าผิดปกติให้ตั้งค่าขีด จำกัด ระหว่างคลัสเตอร์ "ปกติ" และ "นอก" เพื่อให้ระยะขอบทั้งสองถูกขยายให้ใหญ่สุด
  • หากชุดไม่แสดงค่าผิดปกติใด ๆ ให้ตั้งค่าเบี่ยงเบนมาตรฐานหนึ่งค่าเบี่ยงเบนจากจุดขวาสุด

อย่างไรก็ตามขอบคุณสำหรับคำตอบที่เป็นประโยชน์ทั้งหมด!


@crypton DBSCAN จัดการกับซีรี่ส์ที่เกี่ยวข้องได้อย่างไร ตัวอย่างเช่นอนุกรมเวลา 1,9,1,9,1,9,5 จะมีค่า in / ผิดปกติ มันจัดการกับ Level Shifts ในซีรีส์หรือมีแนวโน้มที่เป็นไปได้หรือไม่? มันจัดการกับข้อมูลอัตชีวประวัติตามฤดูกาลอย่างไรนอกเหนือจากที่กล่าวว่าเดือนมิถุนายนของแต่ละเดือนชุดเป็น "ปกติ" ในขณะที่ทุกเดือนมิถุนายนชุดที่ "ใหญ่" ตรวจพบ "ค่ามิถุนายนขนาดใหญ่" เป็นค่าผิดปกติหรือไม่ แค่สงสัย !
IrishStat

2
@IrishStat โดยทั่วไปกลุ่ม DBSCAN จะชี้ไปที่พื้นที่ n-dimension ดังนั้นความเหมาะสมในการวิเคราะห์อนุกรมเวลาจึงมี จำกัด มาก มันใช้งานได้กับกรณีพิเศษของฉันเนื่องจากฉันคาดว่าจะมีเพียงคลัสเตอร์เดียวในฮิสโตแกรม (1 มิติ) ของฉัน ในการตอบคำถามของคุณ: เมื่อใช้พารามิเตอร์ที่เหมาะสมค่า 5 ของตัวอย่างของคุณจะถูกตรวจพบว่าเป็นค่าผิดปกติ ฉันคิดว่ามันสามารถจัดการกับแนวโน้ม แต่ในซีรีส์เวลา '1, 2, 3, 4, 5, 6, 7, 2' ค่า 2 จะไม่ถือว่าเป็นค่าผิดปกติ! ฉันหวังว่าจะให้ความคิดคร่าวๆเกี่ยวกับความสามารถและข้อ จำกัด ของ DBSCAN
cryptron

1
@ คริปตันขอบคุณสำหรับข้อมูล สำหรับฉันแล้วดูเหมือนว่าเมื่อคุณอ้างถึง 1 คลัสเตอร์คุณหมายถึง 1 และ 1 เฉลี่ยเท่านั้น แม้ว่าจะไม่มีการเปลี่ยนแปลงความสัมพันธ์อัตโนมัติโดยเฉลี่ยในข้อมูลของคุณทำให้มันเป็น "อนุกรมเวลา" ซึ่งชี้ให้เห็นว่า DBSCAN อาจไม่เป็นประโยชน์อย่างที่คุณคิดว่าจะแยกสัญญาณจากสัญญาณรบกวนเพื่อนำไปสู่การระบุข้อมูลที่มีประสิทธิภาพ
IrishStat

1
@ คริปตันฉันคิดว่าหนึ่งคลัสเตอร์มีค่าเฉลี่ย 1 เมื่อเทียบกับอนุกรมเวลาที่บอกว่า 1,1,1,1,1,2,2,2,2,2 โดยมีค่าเบี่ยงเบนเล็ก ๆ รอบค่าเหล่านี้
IrishStat

2
@ crpton ฉันคิดว่าคุณกำลังใช้เครื่องมือตัดขวางสำหรับปัญหาอนุกรมเวลา โพสต์ข้อมูลจริงและฉันจะพยายามสาธิตการตรวจจับความผิดปกติให้คุณด้วยการวิเคราะห์อนุกรมเวลา
IrishStat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.