โอเพนซอร์สตรวจจับความผิดปกติใน Python


61

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

ในการมอบหมายที่คล้ายกันฉันได้ลอง Splunk กับ Prelert แล้ว แต่ฉันกำลังสำรวจตัวเลือกโอเพนซอร์สในขณะนี้

ข้อ จำกัด : ฉัน จำกัด ตัวเองกับ Python เพราะฉันรู้ดีและต้องการชะลอการสลับเป็น R และเส้นโค้งการเรียนรู้ที่เกี่ยวข้อง เว้นแต่ว่าจะมีการสนับสนุน R (หรือภาษา / ซอฟต์แวร์อื่น ๆ ) อย่างล้นหลามฉันต้องการยึด Python สำหรับงานนี้

นอกจากนี้ฉันกำลังทำงานในสภาพแวดล้อม Windows ในขณะนี้ ฉันต้องการใช้แซนด์บ็อกซ์ใน Windows ต่อไปบนไฟล์บันทึกขนาดเล็ก แต่สามารถย้ายไปยังสภาพแวดล้อม Linux ได้หากจำเป็น

แหล่งข้อมูล: ฉันได้ตรวจสอบสิ่งต่อไปนี้พร้อมผลลัพธ์ที่ไม่คาดคิด:

  1. งูหลามหรือ R สำหรับการดำเนินการขั้นตอนวิธีการเรียนรู้ของเครื่องสำหรับการตรวจสอบการทุจริต ข้อมูลบางอย่างที่นี่มีประโยชน์ แต่น่าเสียดายที่ฉันดิ้นรนเพื่อค้นหาแพ็คเกจที่เหมาะสมเพราะ:

  2. "AnomalyDetection" ของ Twitter อยู่ใน R และฉันต้องการติดกับ Python นอกจากนี้Pyculiarity Python ของพอร์ตดูเหมือนจะทำให้เกิดปัญหาในการใช้งานในสภาพแวดล้อม Windows สำหรับฉัน

  3. Skyline ความพยายามครั้งต่อไปของฉันดูเหมือนจะถูกยกเลิกไปค่อนข้างมาก (จากปัญหา GitHub ) ฉันไม่ได้เจาะลึกลงไปในเรื่องนี้เนื่องจากดูเหมือนว่าจะมีการสนับสนุนออนไลน์เพียงเล็กน้อย

  4. scikit เรียนรู้ฉันยังคงสำรวจ แต่ดูเหมือนว่าจะเป็นคู่มือมากขึ้น วิธีการแบบ down-in-the-weeds นั้นใช้ได้สำหรับฉัน แต่ภูมิหลังของฉันในเครื่องมือการเรียนรู้อ่อนแอดังนั้นฉันต้องการกล่องดำสำหรับแง่มุมทางเทคนิคเช่นอัลกอริทึมคล้ายกับ Splunk + Prelert

คำนิยามปัญหาและคำถาม: ฉันกำลังมองหาซอฟต์แวร์โอเพนซอร์ซที่สามารถช่วยฉันในการตรวจจับความผิดปกติจากไฟล์บันทึกอนุกรมเวลาใน Python ผ่านทางแพ็คเกจหรือไลบรารีโดยอัตโนมัติ

  1. สิ่งเหล่านี้มีอยู่เพื่อช่วยเหลืองานที่ทำอยู่ของฉันหรือว่าพวกเขาจินตนาการในใจของฉันหรือไม่?
  2. ทุกคนสามารถช่วยเหลือขั้นตอนที่เป็นรูปธรรมเพื่อช่วยให้ฉันบรรลุเป้าหมายของฉันรวมถึงพื้นฐานหรือแนวคิดพื้นฐานได้หรือไม่?
  3. นี่เป็นชุมชน StackExchange ที่ดีที่สุดในการถามหรือว่าเป็นสถิติคณิตศาสตร์หรือแม้แต่ความปลอดภัยหรือ Stackoverflow ตัวเลือกที่ดีกว่า

แก้ไข [2015-07-23] โปรดทราบว่าการอัปเดตล่าสุดสำหรับความแปลกใหม่ดูเหมือนว่าจะได้รับการแก้ไขสำหรับสภาพแวดล้อม Windows! ฉันยังไม่ได้ยืนยัน แต่ควรเป็นอีกเครื่องมือที่มีประโยชน์สำหรับชุมชน

แก้ไข [2016-01-19] การอัปเดตเล็กน้อย ฉันไม่มีเวลาที่จะทำสิ่งนี้และการวิจัย แต่ฉันกำลังย้อนกลับไปทำความเข้าใจพื้นฐานของปัญหานี้ก่อนที่จะทำการวิจัยในรายละเอียดที่เฉพาะเจาะจงต่อไป ตัวอย่างเช่นสองขั้นตอนที่เป็นรูปธรรมที่ฉันทำคือ:

  1. เริ่มต้นด้วยบทความ Wikipedia สำหรับการตรวจจับความผิดปกติ [ https://en.wikipedia.org/wiki/Anomaly_detection ] ทำความเข้าใจอย่างเต็มที่แล้วเลื่อนขึ้นหรือลงในลำดับชั้นแนวคิดของบทความ Wikipedia ที่เชื่อมโยงอื่น ๆ เช่น [ https: // en.wikipedia.org/wiki/K-nearest_neighbor_algorithm ] จากนั้นไปที่ [ https://en.wikipedia.org/wiki/Machine_learning ]

  2. เทคนิคการสำรวจในการสำรวจครั้งใหญ่โดย Chandola et al 2009 "การตรวจจับความผิดปกติ: การสำรวจ" [ http://www-users.cs.umn.edu/~banerjee/papers/09/anomaly.pdf ] และ Hodge et al 2004 "การสำรวจวิธีการตรวจหาค่าผิดปกติ" [ http://eprints.whiterose.ac.uk/767/1/hodgevj4.pdf ]

เมื่อแนวคิดเป็นที่เข้าใจดีขึ้น (ฉันหวังว่าจะเล่นกับตัวอย่างของเล่นที่ฉันไปเพื่อพัฒนาด้านการปฏิบัติเช่นกัน) ฉันหวังว่าจะเข้าใจว่าเครื่องมือ Python โอเพ่นซอร์สใดเหมาะกับปัญหาของฉันมากขึ้น


ฉันแนะนำวิดีโอเหล่านี้หากคุณเพิ่งเริ่มต้น Scikit: github.com/justmarkham/scikit-learn-videos
Harvey

ไลบรารี h2o ไม่ได้นำเข้าในโมดูลนี้

1
ปัญหาของคุณไม่ชัดเจน สิ่งที่ถือว่าผิดปกติอาจมีความหมายที่แตกต่างกันมากมาย มันคือการเบี่ยงเบนของค่าเฉลี่ยหรือไม่ มันเป็นรูปแบบพฤติกรรมบางอย่าง? วิธีการที่แตกต่างกันนำไปใช้ในแต่ละกรณี คุณจะต้องตรวจสอบ "การตรวจจับค่าผิดปกติ" หากความผิดปกตินั้นเบี่ยงเบนจากค่าเฉลี่ย หากคุณกำลังมองหารูปแบบที่เฉพาะเจาะจงคุณจะได้รับบริการที่ดีขึ้นด้วยอัลกอริทึมการเรียนรู้แบบมีผู้สอนเช่นเครือข่ายประสาท
Willem van Doesburg

1
ฉันรู้ว่าคุณต้องการ Python แต่สำหรับการตรวจจับความผิดปกติ ELKI น่าจะเป็นเครื่องมือที่ใช้
Anony-Mousse

คำตอบ:


35

การตรวจจับความผิดปกติหรือการตรวจจับเหตุการณ์สามารถทำได้หลายวิธี:

วิธีพื้นฐาน

อนุพันธ์! หากความเบี่ยงเบนของสัญญาณของคุณจากอดีต & อนาคตสูงคุณอาจมีเหตุการณ์ สิ่งนี้สามารถสกัดได้โดยการหาจุดข้ามศูนย์ขนาดใหญ่ในอนุพันธ์ของสัญญาณ

วิธีการทางสถิติ

ค่าเฉลี่ยของสิ่งใดเป็นปกติพฤติกรรมพื้นฐาน หากสิ่งที่เบี่ยงเบนจากค่าเฉลี่ยหมายความว่ามันเป็นเหตุการณ์ โปรดทราบว่าค่าเฉลี่ยในอนุกรมเวลานั้นไม่สำคัญและไม่ใช่ค่าคงที่ แต่เปลี่ยนแปลงตามการเปลี่ยนแปลงของอนุกรมเวลาดังนั้นคุณต้องดู"ค่าเฉลี่ยเคลื่อนที่"แทนค่าเฉลี่ย ดูเหมือนว่านี้:

เหตุการณ์นั้นมีค่าสูงสุดมากกว่า 1 ส่วนเบี่ยงเบนมาตรฐานจากค่าเฉลี่ยเคลื่อนที่

ย้ายรหัสเฉลี่ยสามารถพบได้ที่นี่ ในคำศัพท์เกี่ยวกับการประมวลผลสัญญาณคุณกำลังใช้ตัวกรอง"Low-Pass"โดยใช้ค่าเฉลี่ยเคลื่อนที่

คุณสามารถติดตามรหัสตะโกน:

MOV = movingaverage(TimeSEries,5).tolist()
STD = np.std(MOV)
events= []
ind = []
for ii in range(len(TimeSEries)):
    if TimeSEries[ii] > MOV[ii]+STD:
        events.append(TimeSEries[ii])

วิธีที่น่าจะเป็น

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

ฉันหวังว่าฉันจะช่วยได้ :) โชคดี!


ขอขอบคุณสำหรับความพยายามในการอภิปรายอย่างลึกซึ้ง แม้ว่าการเขียนโปรแกรมนี้ดูเหมือนจะไม่เลว (น่าสนใจทีเดียวฉันอาจพูดได้ว่าการดำน้ำลึกเข้าไปในอัลกอริทึม) ฉันก็ยังสงสัยในแพ็คเกจที่มีอยู่แล้ว คุณรู้หรือไม่ว่ามีอะไรที่ติดตั้งได้ง่าย? โปรดทราบว่านี่ไม่ใช่สิ่งเดียวกับการใช้งานง่ายซึ่งฉันเข้าใจไม่สามารถรับประกันได้ หากฉันสามารถทำให้สภาพแวดล้อมการทำงานของฉันเป็นจริงฉันเชื่อว่าฉันสามารถใช้กลอุบายตามตัวอย่างงานของฉันได้
ximiki

15

h2o มีโมดูลการตรวจจับความผิดปกติและตามธรรมเนียมแล้วรหัสนั้นมีให้ใน R. แต่นอกเหนือจากรุ่น 3 ก็มีโมดูลที่คล้ายกันที่มีอยู่ในไพ ธ อนเช่นกันและเนื่องจาก h2o เป็นโอเพ่นซอร์ส

คุณสามารถดูตัวอย่างการทำงานได้ที่นี่

import sys
sys.path.insert(1,"../../../")
import h2o

def anomaly(ip, port):
    h2o.init(ip, port)

    print "Deep Learning Anomaly Detection MNIST"

    train = h2o.import_frame(h2o.locate("bigdata/laptop/mnist/train.csv.gz"))
    test = h2o.import_frame(h2o.locate("bigdata/laptop/mnist/test.csv.gz"))

    predictors = range(0,784)
    resp = 784

    # unsupervised -> drop the response column (digit: 0-9)
    train = train[predictors]
    test = test[predictors]

    # 1) LEARN WHAT'S NORMAL
    # train unsupervised Deep Learning autoencoder model on train_hex
    ae_model = h2o.deeplearning(x=train[predictors], training_frame=train, activation="Tanh", autoencoder=True,
                                hidden=[50], l1=1e-5, ignore_const_cols=False, epochs=1)

    # 2) DETECT OUTLIERS
    # anomaly app computes the per-row reconstruction error for the test data set
    # (passing it through the autoencoder model and computing mean square error (MSE) for each row)
    test_rec_error = ae_model.anomaly(test)

    # 3) VISUALIZE OUTLIERS
    # Let's look at the test set points with low/median/high reconstruction errors.
    # We will now visualize the original test set points and their reconstructions obtained
    # by propagating them through the narrow neural net.

    # Convert the test data into its autoencoded representation (pass through narrow neural net)
    test_recon = ae_model.predict(test)

    # In python, the visualization could be done with tools like numpy/matplotlib or numpy/PIL

if __name__ == '__main__':
    h2o.run_test(sys.argv, anomaly)

ขอบคุณ! ฉันยังไม่ได้พิจารณาแพ็คเกจนี้ - ฉันจะเพิ่มไปยังรายการผู้สมัคร ในการอธิบายให้ชัดเจนเมื่อคุณพูดว่า "นอกเหนือจากเวอร์ชัน 3 จะมีโมดูลที่คล้ายกันในไพ ธ อนเช่นกัน" คุณรู้หรือไม่ว่าโมดูลตรวจจับความผิดปกติของ h2o (เกินกว่า ver 3) มีให้ใน Python หรือโมดูลอื่น ๆ
ximiki

1
@ oxik ดีฉันกลับไปที่เอกสารหลามของรุ่นล่าสุดของพวกเขา 3.0.0.26 ( h2o-release.s3.amazonaws.com/h2o/rel-shannon/26/docs-website/ ...... ) และดูเหมือนว่า h2o.anomaly ไม่ใช่ แต่มีให้บริการซึ่งแตกต่างจาก R api.I ของฉันได้ตั้งคำถามในกลุ่ม google ของพวกเขา ( groups.google.com/forum/#!topic/h2ostream/uma3UdpanEI ) และคุณสามารถติดตามได้
0xF

1
กลุ่มสนับสนุน h2o ได้ตอบคำถามและความผิดปกติก็มีให้ใน python เช่นกันตัวอย่างมีให้ที่นี่ github.com/h2oai/h2o-3/blob/master/h2o-py/tests/testdir_algos/
......

ที่สมบูรณ์แบบ! ขอบคุณสำหรับการตรวจสอบ ฉันจะอัปเดตโพสต์นี้ด้วยผลลัพธ์
ximiki

1
ลิงก์ไปยังการทดสอบ h2o ไม่สามารถใช้งานได้อีก แต่มีหนึ่งรายการที่เทียบเท่า (อาจ): github.com/h2oai/h2o-3/blob/master/h2o-py/tests/testdir_algos/ (ลิงก์ไปยังรุ่น ในช่วงเวลาของการเขียนคือgithub.com/h2oai/h2o-3/blob/ ...... )
Andre Holzner

11

ฉันเพิ่งพัฒนากล่องเครื่องมือ: Py thon O ut et D etection toolbox ( PyOD ) ดูGitHub

มันถูกออกแบบมาสำหรับการระบุวัตถุที่อยู่ห่างไกลในข้อมูลด้วยวิธีการทั้งที่ไม่ได้ดูแลและดูแล PyOD มีคุณลักษณะสำหรับ:

  • API แบบรวมเอกสารรายละเอียดและตัวอย่างเชิงโต้ตอบในอัลกอริทึมต่างๆ
  • โมเดลขั้นสูงรวมถึงโครงข่ายประสาทเทียม / การเรียนรู้เชิงลึกและชุดตระการตา
  • เพิ่มประสิทธิภาพด้วย JIT และการขนานเมื่อเป็นไปได้โดยใช้ numba และ joblib เข้ากันได้กับทั้ง Python 2 และ 3 (รองรับการเรียนรู้ scikit เช่นกัน)

นี่คือลิงค์สำคัญ:

หากคุณใช้ PyOD ในสิ่งพิมพ์ทางวิทยาศาสตร์เราจะขอบคุณการอ้างอิงไปยังบทความต่อไปนี้

@article{zhao2019pyod,
  title={PyOD: A Python Toolbox for Scalable Outlier Detection},
  author={Zhao, Yue and Nasrullah, Zain and Li, Zheng},
  journal={arXiv preprint arXiv:1901.01588},
  year={2019},
  url={https://arxiv.org/abs/1901.01588}
}

ขณะนี้อยู่ระหว่างการตรวจสอบที่JMLR (การเรียนรู้ของเครื่องซอฟต์แวร์โอเพนซอร์ซติดตาม) ดูpreprint


คำแนะนำด่วน

ชุดเครื่องมือ PyOD ประกอบด้วยฟังก์ชั่นการทำงานหลักสามกลุ่ม: (i) อัลกอริทึมการตรวจจับที่ผิดปกติ; (ii) เฟรมเวิร์กรวมเกินค่าและ (iii) ฟังก์ชั่นยูทิลิตี้ตรวจจับค่าผิดปกติ

อัลกอริทึมการตรวจสอบส่วนบุคคล :

  • PCA : การวิเคราะห์องค์ประกอบหลัก (ผลรวมของระยะทางที่คาดการณ์ถ่วงน้ำหนักกับ hyperplanes eigenvector)
  • MCD : ปัจจัยกำหนดความแปรปรวนขั้นต่ำ (ใช้ระยะทาง mahalanobis เป็นคะแนนนอก)
  • OCSVM : เครื่องเวกเตอร์สนับสนุนชั้นหนึ่ง
  • LOF : ปัจจัยภายนอกเฉพาะที่
  • CBLOF : ปัจจัยภายนอกที่อิงตามการทำคลัสเตอร์
  • LOCI : LOCI: การตรวจหาค่าที่รวดเร็วโดยใช้อินทิกรัลสหสัมพันธ์แบบโลคอล
  • HBOS : คะแนน Outlier ตามฮิสโตแกรม
  • kNN : k เพื่อนบ้านที่ใกล้ที่สุด (ใช้ระยะทางไปยังเพื่อนบ้านที่ใกล้ที่สุด kth เป็น - - คะแนนนอกเขต
  • AvgKNN : kNN เฉลี่ย (ใช้ระยะทางเฉลี่ยกับ k เพื่อนบ้านที่ใกล้ที่สุดเป็นคะแนนนอก)
  • MedKNN : มัธยฐาน kNN (ใช้ระยะห่างมัธยฐานกับ k เพื่อนบ้านที่ใกล้ที่สุดเป็นคะแนนนอก)
  • ABOD : การตรวจจับค่าผิดปกติแบบอิงมุม
  • FastABOD : การตรวจจับค่าผิดปกติที่เกิดจากมุมเร็วโดยใช้การประมาณ
  • SOS : การเลือกผิดกลุ่มสุ่ม
  • IForest : ป่าแยก
  • การบรรจุถุง
  • LSCP : LSCP: การผสมภายในเครื่องที่เลือกสรรมาของตระการตาแบบคู่ขนาน
  • XGBOD : การตรวจจับค่าผิดพลาดเร่งด่วนมากขึ้น (ภายใต้การดูแล)
  • AutoEncoder : AutoEncoder ที่เชื่อมต่ออย่างเต็มที่ (ใช้ข้อผิดพลาดในการสร้างใหม่เป็นคะแนนนอก)
  • SO_GAAL : การเรียนรู้เชิงรุกแบบมีจุดประสงค์เชิงสร้างสรรค์แบบมีจุดประสงค์เดียว
  • MO_GAAL : การเรียนรู้เชิงรุกแบบมีส่วนร่วมแบบหลายวัตถุประสงค์

เฟรมเวิร์กชุดตรวจจับ / คะแนนภายนอก :

  • การบรรจุถุง
  • LSCP : LSCP: การผสมภายในเครื่องที่เลือกสรรมาของตระการตาแบบคู่ขนาน
  • ค่าเฉลี่ย : ชุดค่าผสมอย่างง่ายโดยเฉลี่ยคะแนน
  • ค่าเฉลี่ยถ่วงน้ำหนัก : การรวมง่าย ๆ โดยการหาค่าเฉลี่ยด้วยน้ำหนักของเครื่องตรวจจับ
  • การขยายให้ใหญ่สุด : การรวมกันอย่างง่ายโดยการทำคะแนนสูงสุด
  • AOM : ค่าเฉลี่ยสูงสุด
  • MOA : การทำให้มีค่าเฉลี่ยสูงสุด

ฟังก์ชั่นยูทิลิตี้สำหรับการตรวจจับค่าผิดปกติ :

  1. score_to_lable (): แปลงคะแนนนอกรีตดิบเป็นป้ายกำกับไบนารี
  2. precision_n_scores (): หนึ่งในตัวชี้วัดการประเมินยอดนิยมสำหรับการขุดนอก (ความแม่นยำ @ อันดับ n)
  3. generate_data (): สร้างข้อมูลหลอกสำหรับการทดสอบการตรวจจับค่าผิดปกติ
  4. wpearsonr (): pearson ที่มีน้ำหนักจะมีประโยชน์ในการสร้างความจริงพื้นเทียมหลอก

การเปรียบเทียบรุ่นที่ใช้งานทั้งหมดมีให้ด้านล่าง: ( รูป , รหัส , สมุดบันทึก Jupyter ):ป้อนคำอธิบายรูปภาพที่นี่

หากคุณสนใจโปรดตรวจสอบ Github ( https://github.com/yzhao062/Pyod ) สำหรับข้อมูลเพิ่มเติม


8

ขณะนี้ฉันอยู่บนเวทีเดียวกันกับคุณ ฉันกำลังหาตัวเลือกที่ดีที่สุดสำหรับการตรวจจับความผิดปกติ, กำลังทำการวิจัย

สิ่งที่ฉันได้พบคือฉันคิดว่าตรงกับความต้องการของคุณมากที่สุดและเปรียบเทียบสิ่งที่คุณเห็นดีกว่า เช่น TwitterAnomalyDetection, SkyLine

ฉันพบว่าดีกว่าคือ Numenta NAB (Numenta Anomaly Benchmark) นอกจากนี้ยังมีการสนับสนุนชุมชนที่ดีมากและสำหรับคุณข้อดีก็คือมันเป็นโอเพ่นซอร์สและพัฒนาในไพ ธ อน คุณสามารถเพิ่มอัลกอริทึมของคุณได้

ในกรณีของอัลกอริทึมฉันพบว่า LOF หรือ CBLOF เป็นตัวเลือกที่ดี

ลองดูอีกครั้ง อาจช่วยคุณได้ https://github.com/numenta/nab

หากคุณพบตัวเลือกที่ดีกว่า โปรดบอกฉัน. ฉันก็อยู่บนเส้นทางเดียวกัน

ขอให้โชคดี


ขอบคุณสำหรับข้อมูลที่มีค่า! ฉันจะตรวจสอบเรื่องนี้อย่างแน่นอน
ximiki

3
ฉันแค่ต้องการที่จะกลับมาและแสดงความคิดเห็นเกี่ยวกับวิธี NAB ที่เกี่ยวข้องกับปัญหาของฉัน ข้อเสียเปรียบเพียงอย่างเดียวที่ฉันเห็นก็คือนี่เป็นเพียงการตรวจจับความผิดปกติแบบอนุกรม (หนึ่งคอลัมน์) แบบอนุกรมเท่านั้น แต่สิ่งที่เกี่ยวกับหลายตัวแปร (หลายคอลัมน์)? ขอบคุณสำหรับคำแนะนำนี้ฉันจะผลักดันมันไปยังตัวเลือกสำหรับผู้สมัครรับเลือกตั้ง
ximiki

@ximiki คุณพบสิ่งใดสำหรับ MultiVariate Time-Series ฉันกำลังมองหาปัญหาที่คล้ายกัน
shubham003

7

1
ขอบคุณสำหรับเวลาของคุณ แต่โปรดดูหัวข้อแรกของ "ทรัพยากร"; ฉันได้ตรวจสอบตัวเลือกนี้และค้นหาสิ่งที่ตรงกับ "ข้อ จำกัด " ของฉัน
ximiki

1
หากต้องการย้ำและอาจทื่อมากขึ้นการใช้แพ็คเกจ AnomalyDetection ของ Twitter ไม่ใช่ตัวเลือกที่นี่: โปรดอ่านส่วน "ข้อ จำกัด " อย่างละเอียดยิ่งขึ้น ฉันไม่ได้ตั้งใจที่จะบอกเลิกความพยายามอย่างจริงใจที่จะช่วย แต่สิ่งนี้เป็นคำถามสำหรับแพคเกจที่ใช้ Python อย่างเคร่งครัด ดังนั้นผู้ลงคะแนนในอนาคตโปรดอย่าโหวตคำตอบนี้เพราะมันไม่ใช่ตัวเลือกที่ใช้งานได้ ฉันจะแนะนำให้ล้างคะแนน 2 ปัจจุบันสำหรับเรื่องนี้ผ่าน downvoting แต่บางทีนี่อาจผิดจรรยาบรรณในชุมชน Stackexchange และไม่ต้องการที่จะจับ flack ใด ๆ
ximiki

1
อีกครั้งฉันขอโทษที่จะพิณเรื่องนี้ แต่ฉันเพียงแค่พยายามทำให้คำถามนี้ชัดเจนและใช้งานได้สำหรับผู้อื่นที่พบปัญหาที่คล้ายกันและไม่ต้องการให้พวกเขาไปไล่ล่าห่านป่า
ximiki

6

ฉันถือว่าคุณสมบัติที่คุณใช้ในการตรวจสอบความผิดปกติคือหนึ่งแถวของข้อมูลใน logfile ถ้าเป็นเช่นนั้น Sklearn เป็นเพื่อนที่ดีของคุณและคุณสามารถใช้มันเป็น Blackbox ได้ ตรวจสอบการกวดวิชาของSVM หนึ่งชั้นและการตรวจสอบความแปลกใหม่

อย่างไรก็ตามในกรณีที่คุณสมบัติของคุณเป็นไฟล์บันทึกทั้งหมดคุณจะต้องสรุปให้กับคุณสมบัติบางอย่างที่มีขนาดเท่ากันก่อนจากนั้นจึงใช้การตรวจจับ Novealty


3

ยังมี Skyline รุ่นที่พัฒนาและใช้งานอยู่ในกรณีที่มีคนมาที่นี่และสนใจ

https://github.com/earthgecko/skyline

https://earthgecko-skyline.readthedocs.io/en/latest

ฉันเป็นผู้ดูแลโครงการปัจจุบันและตอนนี้ก้าวหน้ากว่ารุ่น Etsy ดั้งเดิมอย่างมากในแง่ของประสิทธิภาพ UI การจัดการที่ดีขึ้นตามฤดูกาลและมีฟังก์ชันที่เพิ่มขึ้นของฐานข้อมูลความผิดปกติการคำนวณความสัมพันธ์และความสามารถในการใช้ลายนิ้วมือ และเรียนรู้ว่าไม่ใช่รูปแบบที่ผิดปกติ


1

เนื่องจากคุณมีอนุกรมเวลาหลายตัวแปรฉันจะไปใช้ LSTM-RNN ที่จำลองพลวัตของระบบของคุณตามข้อมูลการฝึกอบรมซึ่งโดยปกติจะเป็นแบบกึ่งควบคุม (รวมชั้นเรียนปกติเท่านั้น) ซึ่งหมายความว่าคุณฝึกโมเดลของคุณเพื่อเรียนรู้สิ่งที่ "ปกติ" ในระหว่างการทดสอบคุณจะทดสอบทั้งสภาวะปกติและสภาวะผิดปกติเพื่อดูว่าแบบจำลองบอกความแตกต่างได้ดีเพียงใด

ข้อดีของเครือข่ายประสาทคือพวกเขา "เรียนรู้" ความสัมพันธ์ข้ามระหว่างสัญญาณอินพุตด้วยตนเอง คุณไม่จำเป็นต้องสำรวจด้วยตนเอง โดยเฉพาะอย่างยิ่ง LSTM-RNNs เป็นตัวเลือกที่เหมาะสมที่สุดเมื่อพูดถึงการสร้างแบบจำลองอนุกรมเวลาเนื่องจากความสามารถในการเก็บหน่วยความจำของอินพุตก่อนหน้านี้คล้ายกับแบบจำลองพื้นที่ของรัฐในทฤษฎีการควบคุม (ถ้าคุณเห็นการเปรียบเทียบ)

ใน Python แทบจะเป็นเรื่องเล็กน้อยที่จะใช้ LSTM-RNN โดยใช้Keras API (บนแบ็กเอนด์ Tensorflow) เครือข่ายนี้เรียนรู้ที่จะประเมินสัญญาณ (s) ของความสนใจที่ได้รับจำนวนอินพุตโดยพลการซึ่งหลังจากนั้นคุณจะเปรียบเทียบกับค่าที่วัดได้จริง หากมีการเบี่ยงเบน "ใหญ่" คุณจะมีความผิดปกติ (ระบุว่าแบบจำลองนั้นมีความแม่นยำเพียงพอ)!

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