การตรวจจับความผิดปกติ: อัลกอริธึมที่ใช้?


10

บริบท: ฉันกำลังพัฒนาระบบที่วิเคราะห์ข้อมูลทางคลินิกเพื่อกรองข้อมูลที่ไม่น่าเชื่อที่อาจเป็นตัวพิมพ์ผิด

สิ่งที่ฉันทำจนถึง:

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

plausibility(p)=qDGauss(distance(p,q))

ด้วยการหาปริมาณนั้นฉันสามารถเลือกเกณฑ์ที่แยกข้อมูลที่เป็นไปได้จากข้อมูลที่ไม่น่าเชื่อ ฉันใช้ python / numpy

ปัญหาของฉัน:

  1. อัลกอริทึมนี้ไม่สามารถตรวจพบมิติอิสระ เป็นการดีที่ฉันสามารถใส่ทุกสิ่งที่ฉันรู้เกี่ยวกับบันทึกลงในอัลกอริทึมและปล่อยให้มันค้นพบด้วยตัวเองว่ามิติ X ไม่มีผลต่อความน่าเชื่อถือของบันทึก
  2. อัลกอริทึมไม่ทำงานสำหรับค่าที่ไม่ต่อเนื่องเช่นบูลีนหรืออินพุตที่เลือก พวกเขาสามารถแมปกับค่าต่อเนื่อง แต่มันเป็นเคาน์เตอร์ที่ใช้งานง่ายว่า Select 1 ใกล้กับ Select 2 มากกว่า to Select 3

คำถาม:

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

คำแนะนำใด ๆ ที่ชื่นชมอย่างมาก

[แก้ไข] ตัวอย่าง:

สมมติว่าข้อมูลประกอบด้วยความสูงของบุคคลน้ำหนักของบุคคลและการประทับเวลา - ดังนั้นจึงเป็นข้อมูล 3D น้ำหนักและส่วนสูงมีความสัมพันธ์กัน แต่การประทับเวลามีความเป็นอิสระอย่างสมบูรณ์ หากฉันพิจารณาระยะทางแบบยุคลิดฉันจะต้องเลือกขีด จำกัด เล็ก ๆ เพื่อให้พอดีกับข้อมูลการตรวจสอบความถูกต้องไขว้ของฉันเกือบทั้งหมด ตามหลักการแล้วอัลกอริธึมจะไม่สนใจมิติการประทับเวลาเนื่องจากไม่เกี่ยวข้องกับการตรวจสอบว่าบันทึกมีความน่าเชื่อถือหรือไม่เนื่องจากการประทับเวลานั้นไม่มีความสัมพันธ์กับส่วนข้อมูลอื่น ๆ แต่อย่างใด การประทับเวลาใด ๆ ที่เป็นไปได้

ในอีกด้านหนึ่งเราอาจสร้างตัวอย่างที่การประทับเวลามีความสำคัญ ตัวอย่างเช่นอาจเป็นได้ว่าค่า Y สำหรับคุณสมบัติ X เป็นไปได้เมื่อวัดก่อนวันที่แน่นอน แต่ไม่หลังจากวันที่แน่นอน


โปรดดูการตอบสนองของฉันต่อstats.stackexchange.com/questions/97946/changepoints-in-rเนื่องจากมันปฏิบัติต่อคำถามที่น่ารำคาญนี้ (สำหรับบางคน) คำถาม
IrishStat

จะstats.stackexchange.com/questions/213จะเรียงลำดับของสิ่งที่คุณกำลังมองหาหรือไม่?
whuber

ฉันสงสัยว่าคุณสามารถทำงานให้กับบูลีนได้
Aksakal

@ เมื่อฉันไม่แน่ใจว่ามันดูเหมือนจะไม่ครอบคลุมขนาดที่ไม่เกี่ยวข้องสามารถถูกละเว้น
Georg

1
โดยวิธีการที่ฉันยังพยายามที่จะหาวิธีการที่ฉันอธิบาย ถ้าฉันรู้ศัพท์ที่เป็นทางการมันก็จะช่วยฉันในการวิจัย อาจมีความแตกต่างของอัลกอริทึมนี้ที่แก้ไขปัญหามิติอิสระ / ไม่เกี่ยวข้องอย่างน้อย
Georg

คำตอบ:


7

mxxip(x)

p(x)=i=1mp(xi;μi,σi2)

xixiN(μi,σi2)

p(x)<ϵ

xixiloglog(xi)xi

q=μ

ϵ

ϵF1

F1=2PrecisionRecallPrecision+Recall

แต่ในการคำนวณ F1 คุณต้องรู้ว่าอะไรผิดปกติและอะไรไม่ นั่นคือผลบวกที่แท้จริงคือเมื่อระบบคาดการณ์ความผิดปกติและจริง ๆ แล้วเป็นความผิดปกติบวกเท็จจะทำนายความผิดปกติที่ไม่ได้เป็นเช่นนั้น ดังนั้นถ้าคุณไม่มีสิ่งนั้นคุณอาจต้องถอยกลับไปคาดเดา

ปัญหาของฟีเจอร์ที่สัมพันธ์กัน

mΣ

p(x)=1(2π)m2(detΣ)1/2e12(xμ)TΣ1(xμ)

เดียวกันจะไปสำหรับการหาและวิธีนี้ยังมีข้อเสียเปรียบซึ่งก็คือคุณต้องคำนวณค่าผกผันของที่\ดังนั้นจะต้องมีตัวอย่างอย่างน้อยที่สุดเท่าที่ฟีเจอร์และถ้าจำนวนฟีเจอร์มีขนาดใหญ่กระบวนการจะต้องใช้การคำนวณอย่างเข้มข้น จำคำเตือนเหล่านั้นไว้ แต่ดูเหมือนว่าคุณจะไม่เป็นปัญหาϵΣ


ฉันได้ลองวิธีนี้แล้วรวมถึงการแจกแจงแบบเกาส์หลายตัวแปร แท้จริงแล้วคุณสมบัติที่ไม่เกี่ยวข้องนั้นไม่ได้เป็นปัญหากับแนวทางนี้มากนัก สิ่งที่ฉันพบคือวิธีการนี้ไม่เหมาะสำหรับแบบจำลองที่ซับซ้อน ตัวอย่างเช่นถ้าฉันมีชุดข้อมูล 2 มิติที่มีคุณสมบัติ F1, F2 ซึ่งเป็นกรณีที่ประมาณ F2 = F1 ^ 3 การแจกแจงแบบหลายตัวแปรแบบเกาส์วาจะวาดรูปวงรีรอบ ๆ ข้อมูลและสร้างแบบจำลองข้อมูลอย่างคร่าวๆ นั่นเป็นเหตุผลที่ฉันไปหาวิธีการที่อธิบายในคำถาม (ที่ไม่มีหนึ่ง q แต่หลาย qs)
เฟรดริก

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

@Gorgorg อืมฉันสงสัยว่าปัญหาของคุณไม่ใช่ปัญหาของโมเดลที่ซับซ้อน แต่เป็นข้อมูลที่ซับซ้อนและโมเดลที่ง่ายเกินไป หรือกล่าวอีกนัยหนึ่งภายใต้ข้อต่อ ในกรณีดังกล่าวข้างต้นจะเกิดอะไรขึ้นถ้าแทนการใช้ที่คุณใช้ ? คุณสมบัติสามารถนำมาจากข้อมูลหรือคำนวณ (F1,F2)(F1,F21/3)
waTeim

ใช่การ underfitting คือสิ่งที่ฉันหมายถึง และใช่ว่าจะใช้งานได้ แต่ฉันต้องการให้อัลกอริทึมตรวจจับได้โดยอัตโนมัติ ฉันไม่สามารถปรับเปลี่ยนคุณสมบัติต่าง ๆ ด้วยตนเองได้ แต่ควรทำงานในทุกกรณี
Georg

นี่คือตัวอย่าง: สองแปลงแสดงข้อมูลความสูง (แกน x) และน้ำหนัก (แกน y) (ขออภัยคำบรรยายภาษาเยอรมัน;) พล็อตแรกแสดงผลลัพธ์ของวิธีการแบบหลายตัวแปร Gaussian ที่สองของวิธีการที่อธิบายไว้ในคำถาม ในทั้งสองกรณีเกณฑ์ถูกเลือกจน 97% ของข้อมูล CV ถือว่าเป็นไปได้ วิธีที่สองสามารถจับความซับซ้อนของข้อมูลได้ดียิ่งขึ้น 1: dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2: dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Georg

3

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

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

คุณสมบัติอิสระ

คุณสมบัติอิสระสามารถกรองออกโดยการวัดของค่าสัมประสิทธิ์สหสัมพันธ์ ฉันเปรียบเทียบคุณสมบัติทั้งหมดเป็นคู่และวัดความสัมพันธ์ จากนั้นฉันใช้สัมประสิทธิ์สหสัมพันธ์สัมบูรณ์สูงสุดของแต่ละคุณลักษณะเป็นตัวประกอบสเกล ด้วยวิธีการนี้คุณสมบัติที่ไม่สัมพันธ์กับค่าอื่น ๆ จะถูกคูณด้วยค่าที่ใกล้เคียงกับ 0 ดังนั้นจึงส่งผลต่อระยะทางแบบยุคลิด(หรือที่รู้จัก ) เล็กน้อยd ฉันs T n อี( x 1 , x 2 )||x1x2||distance(x1,x2)

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

ค่าไม่ต่อเนื่อง

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

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