อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

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

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

สารบัญ

อัลกอริทึมการแยกฟอเรสต์กับวิธีพล็อตกล่อง 

ด้านล่างเป็นภาพสองภาพสำหรับการตรวจจับค่าผิดปกติ สังเกตความแตกต่างอย่างมีนัยสำคัญในการแสดงภาพเมื่อใช้เมื่อเปรียบเทียบกับเมื่อใช้ Isolation Forest ML Model สำหรับการตรวจจับ Outlier 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ใน Isolation Forest ML Model เปอร์เซ็นต์ของค่าผิดปกติที่ตรวจพบโดยอัลกอริธึมการตรวจจับความผิดปกติของ IS คือ32.56% เมื่อใช้อัลกอริธึมเดียวกัน ข้อมูลที่เหลือ67.44%จะอยู่ในช่วงปกติซึ่งค่อนข้างละเอียดอ่อน เป้าหมายของเราคือการปรับแต่งความไวนี้โดยใช้  Python

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

วิธีการตรวจจับค่าผิดปกติแบบดั้งเดิม

วิธีดั้งเดิมในการค้นหาค่าผิดปกติคือการใช้วิธีพล็อตกล่อง ในวิธีนี้ เราใช้ IQR เพื่อค้นหาสิ่งที่อยู่นอกช่วงข้อมูลที่คาดไว้ 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ในตัวอย่างนี้ จุดเดียวเหนือมัสสุคือค่าผิดปกติของเรา

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ถ้าเราแปลกราฟภาพนี้ให้เป็นแผนภูมิวงกลม เราจะได้ค่าผิดปกติเฉพาะนี้ ซึ่งเท่ากับ2.33%ของข้อมูลทั้งหมด 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ในบล็อกนี้ เราจะเรียนรู้วิธีใช้ Isolation Forest ML Method ปรับแต่งให้ตรงกับวิธีดั้งเดิม และเพิ่มหรือลดความไว

ชุดข้อมูลสำหรับอัลกอริทึมป่าแยก

เปิดชุดข้อมูลของเราใน LuckyTemplates จากนั้นคลิกแปลงข้อมูล 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ชุดข้อมูลของเราสำหรับบทช่วยสอนนี้จะปรากฏขึ้น ประกอบด้วยDate , number of Users , Index , Isolation Forest Outlierพร้อมเอาต์พุต 1 สำหรับช่วงปกติและ -1 สำหรับค่าผิด  ปกติ

เรายังมีคอลัมน์สำหรับค่าผิดปกติแบบดั้งเดิมและคอลัมน์แบบมีเงื่อนไขที่ชื่อว่าIS Anomaly Detectionซึ่งสะท้อนถึงค่าผิดปกติของป่าที่แยกออกมา 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ข้อความค้นหาที่สองของเราแสดงกรอบข้อมูลของเรา ซึ่งเราจะเรียนรู้วิธีการรวมทุกอย่างเข้าด้วยกัน 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

รหัส Python

ใน บานหน้าต่าง Propertiesเราสามารถเห็นสคริปต์Python สองตัวของเราที่กำลังทำงานอยู่ เราสร้างเอาต์พุต Isolation Forest ด้วยหนึ่งใน สคริปต์ Python เหล่านี้ และสร้างค่าผิดปกติแบบดั้งเดิมด้วยอีกสคริปต์หนึ่ง 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

รหัสหลามอัลกอริทึมป่าแยก

คลิกRun Python scriptเพื่อดูโค้ด 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ในโค้ด Python นี้ เรานำเข้าแพนด้า เป็น pdและใช้สิ่งที่เรียกว่าIsolation Forest 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

Isolation Forestเป็นแบบจำลองตามต้นไม้ซึ่งทำการตัดสินใจตามโครงสร้างของต้นไม้ จากนั้นจึงตัดสินว่ามันมีค่าผิดปกติหรือไม่ เราเรียกสิ่งนั้นว่าensemble modelเพราะมันใช้สองวิธีที่แตกต่างกันในการค้นหาค่าผิดปกติเฉพาะ 

เรายังแทนที่ ตัวแปร ชุดข้อมูลซึ่งเก็บชุดข้อมูลของเราเป็นค่าเริ่มต้นเป็น  df

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ด้วยชุดข้อมูลของเรา เราไม่จำเป็นต้องมีโค้ดสองบรรทัดที่ไฮไลต์ด้านล่าง ดังนั้นเราจึงสามารถลบบรรทัดเหล่านั้นได้ 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

สิ่งที่เรากำลังทำคือการยกตัวอย่างแบบจำลอง

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

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

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

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

เพื่อให้มีความไวน้อยลง เราสามารถเพิ่มการปนเปื้อน = .1ในฟังก์ชันIsolationForest

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

สุดท้าย รีเซ็ตดัชนีแล้วคลิกตกลง

ผลลัพธ์จะแสดงตารางสรุป ไปที่ บานหน้าต่าง ขั้นตอนที่ใช้แล้วคลิกdf

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ในผลลัพธ์ เราสามารถหาค่าผิดปกติได้ที่คอลัมน์  Anomaly Detection

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

นอกจากนี้เรายังต้องการดูว่ามันทำงานอย่างไรเมื่อเทียบกับค่าผิดปกติแบบดั้งเดิม 

รหัส Python Outlier แบบดั้งเดิม

เราจะเรียกใช้สคริปต์ Python อื่น ซึ่งในตัวอย่างนี้คือRun Python script1

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

รหัสนี้เพิ่มฟังก์ชันค่าผิดปกติโดยใช้ควอไทล์ที่หนึ่งและสาม เมื่อเราลบq1 ออกจาก q3เรา  จะได้Interquartile Range (IQR)

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

สองบรรทัดถัดไปกำหนดเงื่อนไขสำหรับค่าผิดปกติ บรรทัดแรกบอกว่าอะไรก็ตามที่น้อยกว่า1.5 * iqrถือว่าเป็นค่าผิดปกติที่เป็นลบหรือต่ำกว่า นี่เป็นวิธีที่เราค้นหาค่าผิดปกติด้วยวิธีดั้งเดิม

เรารู้ด้วยว่าเรามีค่าผิดปกติหนึ่งจุดซึ่งเป็นจุดสูงสุดในข้อมูลของเรา บรรทัดที่สองระบุว่าจุดข้อมูลที่สูงกว่าq3 + 1.5 * iqrจะถือว่าเป็นค่าผิดปกติด้วย 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ส่งคืนชุดข้อมูลนั้นและใช้ฟังก์ชันoutliers(df, 'Users' ) จากนั้นคลิกตกลง

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ตารางสรุปที่คล้ายกับที่เรามีก่อนหน้านี้จะปรากฏขึ้น 

ถ้าเราไปที่ บานหน้าต่าง ขั้นตอนที่ใช้แล้วคลิกChanged Type1เราจะได้รับ คอลัมน์ Outlier ดั้งเดิมและ คอลัมน์ Anomaly Detectionเคียงข้างกัน โดยคอลัมน์หลังใช้ 1 และ -1 เพื่อแสดงค่าผิดปกติและไม่ใช่

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

อย่างไรก็ตาม เมื่อเราใช้ date กับ Python มันอาจจะดูยุ่งเหยิง 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

สิ่งที่เราทำได้คือสร้างคอลัมน์เพิ่มเติมโดยใช้ดัชนีจาก Add Column

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

จากนั้นเพิ่มIndexลงในคอลัมน์ก่อนหน้าด้วยMergeเพื่อให้เราสามารถรักษาข้อมูลทั้งหมดในคอลัมน์/ชุดข้อมูลเดิมนั้นได้ 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

เมื่อเรารวมทุกอย่างเข้าด้วยกันแล้ว เราสามารถรันโค้ดและอัปเดตวิชวลของเราได้ โปรดจำไว้ว่าเราเปลี่ยนการปนเปื้อนของค่าผิดปกติจาก 0.5 เป็น 0.1 ดังนั้นเราน่าจะเห็นส่วนนี้ของกราฟลดลงเล็กน้อย 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

กลับไปที่วิชวลแล้วคลิกใช้การเปลี่ยนแปลง 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

สังเกตว่าการตรวจจับความผิดปกติลดลงจาก 32.56% เป็น 11.63% ของข้อมูลของเราได้อย่างไร 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

ดังที่เราเห็นในผลลัพธ์ นี่เป็นวิธีที่ดีในการเพิ่มประสิทธิภาพการตรวจจับค่าผิดปกติของเรา 

โปรดจำไว้ว่าเมื่อผู้คนใช้วิธีดั้งเดิม พวกเขาอาจใช้ค่าที่ต่ำกว่า 1.5 แต่1.5 x IQRเป็นวิธีดั้งเดิม อย่างไรก็ตาม 

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python

อัลกอริทึมการแยกฟอเรสต์สำหรับการตรวจจับค่าผิดปกติใน Python


การตรวจจับและแสดงผลลัพธ์ Outlier ใน LuckyTemplates
การสร้างจุดทริกเกอร์ค่า Outlier แบบไดนามิกใน LuckyTemplates
LuckyTemplates Anomaly Detection Feature: How It Works

บทสรุป

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

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

สิ่งที่ดีที่สุด


ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

ตนเองคืออะไรใน Python: ตัวอย่างในโลกแห่งความเป็นจริง

วิธีบันทึกและโหลดไฟล์ RDS ใน R

วิธีบันทึกและโหลดไฟล์ RDS ใน R

คุณจะได้เรียนรู้วิธีการบันทึกและโหลดวัตถุจากไฟล์ .rds ใน R บล็อกนี้จะครอบคลุมถึงวิธีการนำเข้าวัตถุจาก R ไปยัง LuckyTemplates

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

เยี่ยมชม N วันทำการแรก – โซลูชันภาษาการเข้ารหัส DAX

ในบทช่วยสอนภาษาการเข้ารหัส DAX นี้ เรียนรู้วิธีใช้ฟังก์ชัน GENERATE และวิธีเปลี่ยนชื่อหน่วยวัดแบบไดนามิก

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

แสดงข้อมูลเชิงลึกโดยใช้เทคนิคการแสดงภาพแบบไดนามิกแบบหลายเธรดใน LuckyTemplates

บทช่วยสอนนี้จะครอบคลุมถึงวิธีการใช้เทคนิค Multi Threaded Dynamic Visuals เพื่อสร้างข้อมูลเชิงลึกจากการแสดงข้อมูลแบบไดนามิกในรายงานของคุณ

บทนำในการกรองบริบทใน LuckyTemplates

บทนำในการกรองบริบทใน LuckyTemplates

ในบทความนี้ ฉันจะเรียกใช้ผ่านบริบทตัวกรอง บริบทตัวกรองเป็นหนึ่งในหัวข้อหลักที่ผู้ใช้ LuckyTemplates ควรเรียนรู้ในขั้นต้น

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

เคล็ดลับที่ดีที่สุดในการใช้แอปใน LuckyTemplates Online Service

ฉันต้องการแสดงให้เห็นว่าบริการออนไลน์ของ LuckyTemplates Apps สามารถช่วยในการจัดการรายงานและข้อมูลเชิงลึกต่างๆ ที่สร้างจากแหล่งข้อมูลต่างๆ ได้อย่างไร

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

วิเคราะห์การเปลี่ยนแปลงอัตรากำไรล่วงเวลา – การวิเคราะห์ด้วย LuckyTemplates และ DAX

เรียนรู้วิธีคำนวณการเปลี่ยนแปลงอัตรากำไรของคุณโดยใช้เทคนิคต่างๆ เช่น การแยกสาขาและการรวมสูตร DAX ใน LuckyTemplates

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

แนวคิด Materialization สำหรับแคชข้อมูลใน DAX Studio

บทช่วยสอนนี้จะหารือเกี่ยวกับแนวคิดของการทำให้แคชข้อมูลเป็นรูปธรรมและวิธีที่สิ่งเหล่านี้ส่งผลต่อประสิทธิภาพของ DAX ในการให้ผลลัพธ์

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

การรายงานทางธุรกิจโดยใช้ LuckyTemplates

หากคุณยังคงใช้ Excel อยู่จนถึงตอนนี้ นี่เป็นเวลาที่ดีที่สุดในการเริ่มใช้ LuckyTemplates สำหรับความต้องการในการรายงานทางธุรกิจของคุณ

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้

เกตเวย์ LuckyTemplates คืออะไร ทั้งหมดที่คุณต้องการรู้