ตรวจจับธุรกรรมที่ฉ้อโกงโดยใช้แมชชีนเลิร์นนิงกับ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.

ตรวจจับธุรกรรมที่ฉ้อโกงโดยใช้แมชชีนเลิร์นนิงกับ Amazon SageMaker

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

อย่างไรก็ตาม ระบบตรวจจับการฉ้อโกงแบบดั้งเดิมนั้นอาศัยชุดกฎเกณฑ์และตัวกรองที่สร้างขึ้นโดยผู้เชี่ยวชาญที่เป็นมนุษย์ ตัวกรองมักจะเปราะบางและกฎอาจไม่ครอบคลุมสัญญาณหลอกลวงทั้งหมด นอกจากนี้ ในขณะที่พฤติกรรมฉ้อโกงมีการพัฒนาอยู่ตลอดเวลา ลักษณะคงที่ของกฎและตัวกรองที่กำหนดไว้ล่วงหน้าทำให้ยากต่อการบำรุงรักษาและปรับปรุงระบบตรวจจับการฉ้อโกงแบบเดิมอย่างมีประสิทธิภาพ

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

หรือ หากคุณกำลังมองหาบริการที่มีการจัดการเต็มรูปแบบเพื่อสร้างแบบจำลองการตรวจจับการฉ้อโกงที่กำหนดเองโดยไม่ต้องเขียนโค้ด เราขอแนะนำให้ตรวจสอบ เครื่องตรวจจับการฉ้อโกงของ Amazon. Amazon Fraud Detector ช่วยให้ลูกค้าที่ไม่มีประสบการณ์ ML สามารถสร้างโมเดลการตรวจจับการฉ้อโกงที่ปรับแต่งให้เหมาะกับข้อมูลได้โดยอัตโนมัติ โดยใช้ประโยชน์จากความเชี่ยวชาญในการตรวจจับการฉ้อโกงมากกว่า 20 ปีจาก AWS และ Amazon.com

ภาพรวมโซลูชัน

โซลูชันนี้สร้างแกนหลักของระบบตรวจจับการฉ้อโกงบัตรเครดิตโดยใช้ SageMaker เราเริ่มต้นด้วยการฝึกโมเดลการตรวจจับความผิดปกติแบบไม่มีผู้ดูแลโดยใช้อัลกอริธึม ป่าสุ่มตัด (RCF). จากนั้นเราฝึกโมเดลการจำแนกประเภทภายใต้การดูแลสองแบบโดยใช้อัลกอริทึม XGBoostหนึ่งเป็นแบบจำลองพื้นฐานและอีกอันหนึ่งสำหรับการคาดการณ์ โดยใช้กลยุทธ์ที่แตกต่างกันเพื่อจัดการกับความไม่สมดุลของข้อมูลในระดับสูงสุด สุดท้ายนี้ เราฝึกโมเดล XGBoost ที่เหมาะสมที่สุดด้วย การเพิ่มประสิทธิภาพไฮเปอร์พารามิเตอร์ (HPO) เพื่อปรับปรุงประสิทธิภาพของโมเดลต่อไป

สำหรับชุดข้อมูลตัวอย่าง เราใช้ธุรกรรมบัตรเครดิตสาธารณะที่ไม่เปิดเผยชื่อ ชุด ที่แต่เดิมปล่อยออกมาเป็นส่วนหนึ่งของa การวิจัย ความร่วมมือของ Worldline และ กลุ่มแมชชีนเลิร์นนิงของ ULB (Université Libre de Bruxelles). ในบทแนะนำนี้ เรายังพูดถึงวิธีปรับแต่งโซลูชันเพื่อใช้ข้อมูลของคุณเอง

ผลลัพธ์ของการแก้ปัญหามีดังนี้:

  • ไม่มีผู้ดูแล SageMaker RCF แบบอย่าง. โมเดลจะแสดงคะแนนความผิดปกติสำหรับแต่ละธุรกรรม ค่าคะแนนต่ำบ่งชี้ว่าธุรกรรมนั้นถือว่าเป็นเรื่องปกติ (ไม่ใช่การฉ้อโกง) มูลค่าที่สูงแสดงว่าธุรกรรมนั้นเป็นการฉ้อโกง คำจำกัดความของค่าต่ำสุดและค่าสูงขึ้นอยู่กับการใช้งาน แต่แนวทางปฏิบัติทั่วไประบุว่าคะแนนที่เกินค่าเบี่ยงเบนมาตรฐานสามค่าจากคะแนนเฉลี่ยถือว่าผิดปกติ
  • มีผู้ดูแล SageMaker XGBoost โมเดลที่ได้รับการฝึกอบรมโดยใช้สคีมาการถ่วงน้ำหนักในตัวเพื่อแก้ไขปัญหาข้อมูลที่ไม่สมดุลในระดับสูง
  • โมเดล SageMaker XGBoost ภายใต้การดูแลซึ่งได้รับการฝึกฝนโดยใช้ เทคนิคการสุ่มตัวอย่างมากเกินไปของชนกลุ่มน้อยสังเคราะห์ (สโมท).
  • โมเดล SageMaker XGBoost ที่ผ่านการฝึกอบรมพร้อม HPO
  • การคาดการณ์ความน่าจะเป็นของแต่ละธุรกรรมที่เป็นการฉ้อโกง หากความน่าจะเป็นโดยประมาณของธุรกรรมเกินเกณฑ์ จะถูกจัดประเภทเป็นการฉ้อโกง

เพื่อสาธิตวิธีที่คุณสามารถใช้โซลูชันนี้ในโครงสร้างพื้นฐานทางธุรกิจที่มีอยู่ของคุณ เรายังได้รวมตัวอย่างของการเรียก REST API ไปยังปลายทางของโมเดลที่ปรับใช้โดยใช้ AWS แลมบ์ดา เพื่อทริกเกอร์ทั้งรุ่น RCF และ XGBoost

ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมโซลูชัน

เบื้องต้น

หากต้องการลองใช้วิธีแก้ปัญหาในบัญชีของคุณเอง ตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:

เมื่ออินสแตนซ์ Studio พร้อมแล้ว คุณสามารถเปิด Studio และเข้าถึง JumpStart ได้ โซลูชัน JumpStart ไม่พร้อมใช้งานในอินสแตนซ์โน้ตบุ๊ก SageMaker และคุณไม่สามารถเข้าถึงได้ผ่าน SageMaker API หรือ อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI)

เปิดตัวโซลูชัน

ในการเปิดโซลูชัน ให้ทำตามขั้นตอนต่อไปนี้:

  1. เปิด JumpStart โดยใช้ตัวเรียกใช้งาน JumpStart ใน เริ่มต้นเลย หรือโดยการเลือกไอคอน JumpStart ในแถบด้านข้างทางซ้าย
  2. ภายใต้ โซลูชันเลือก ตรวจจับผู้ใช้และธุรกรรมที่เป็นอันตราย เพื่อเปิดโซลูชันในแท็บ Studio อื่น
    หาทางออก
  3. บนแท็บโซลูชัน เลือก ยิง เพื่อเปิดโซลูชัน
    เปิดตัวโซลูชัน
    ทรัพยากรโซลูชันได้รับการจัดเตรียมและแท็บอื่นจะเปิดขึ้นเพื่อแสดงความคืบหน้าในการปรับใช้ เมื่อการติดตั้งใช้งานเสร็จสิ้น an เปิดสมุดบันทึก ปุ่มปรากฏขึ้น
  4. Choose เปิดสมุดบันทึก เพื่อเปิดสมุดบันทึกโซลูชันใน Studio
    เปิดสมุดบันทึก

ตรวจสอบและประมวลผลข้อมูล

ชุดข้อมูลเริ่มต้นมีเฉพาะคุณลักษณะที่เป็นตัวเลข เนื่องจากคุณลักษณะดั้งเดิมได้รับการแปลงโดยใช้ การวิเคราะห์องค์ประกอบหลัก (PCA) เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ ด้วยเหตุนี้ ชุดข้อมูลจึงมีส่วนประกอบ PCA 28 ชิ้น, V1–V28 และสองคุณลักษณะที่ยังไม่ได้แปลง ได้แก่ จำนวนและเวลา จำนวนเงินหมายถึงจำนวนธุรกรรม และเวลาคือวินาทีที่ผ่านไประหว่างธุรกรรมใดๆ ในข้อมูลและธุรกรรมแรก

คอลัมน์ Class สอดคล้องกับธุรกรรมที่เป็นการฉ้อโกงหรือไม่

ข้อมูลตัวอย่าง

เราจะเห็นได้ว่าคนส่วนใหญ่ไม่หลอกลวง เพราะจากตัวอย่างทั้งหมด 284,807 ตัวอย่าง มีเพียง 492 (0.173%) เท่านั้นที่หลอกลวง นี่เป็นกรณีของความไม่สมดุลของชนชั้นที่รุนแรง ซึ่งเป็นเรื่องปกติในสถานการณ์การตรวจจับการฉ้อโกง

ความไม่สมดุลของคลาสข้อมูล

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

หากคุณต้องการนำข้อมูลการฝึกอบรมของคุณเอง ตรวจสอบให้แน่ใจว่าเป็นข้อมูลแบบตารางในรูปแบบ CSV อัปโหลดข้อมูลไปยัง บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon บัคเก็ต (Amazon S3) และแก้ไขเส้นทางวัตถุ S3 ในรหัสสมุดบันทึก

เส้นทางข้อมูลใน S3

หากข้อมูลของคุณมีคอลัมน์ตามหมวดหมู่ที่มีค่าที่ไม่ใช่ตัวเลข คุณจะต้องเข้ารหัสค่าเหล่านี้ด้วย one-hot (เช่น OneHotEncoder ของ sklearn) เนื่องจากอัลกอริทึม XGBoost รองรับเฉพาะข้อมูลที่เป็นตัวเลขเท่านั้น

ฝึกโมเดล Random Cut Forest ที่ไม่มีผู้ดูแล

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

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

เราใช้อัลกอริธึม RCF ในตัวของ SageMaker เพื่อฝึกโมเดลการตรวจจับความผิดปกติในชุดข้อมูลการฝึก จากนั้นจึงคาดการณ์ชุดข้อมูลทดสอบของเรา

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

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

คะแนนความผิดปกติที่คาดการณ์ไว้

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

ฮิสโตแกรมของคะแนนสำหรับตัวอย่างทดสอบ

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

. RCF
ความแม่นยำที่สมดุล 0.560023
โคเฮน คัปปา 0.003917
F1 0.007082
ร็อค AUC -

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

ฝึกโมเดล XGBoost ด้วยสคีมาการถ่วงน้ำหนักในตัว

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

เราฝึกและปรับใช้โมเดลภายใต้การดูแลครั้งแรกของเราโดยใช้คอนเทนเนอร์อัลกอริทึม XGBoost ในตัวของ SageMaker นี่คือรูปแบบพื้นฐานของเรา เพื่อจัดการกับความไม่สมดุลของข้อมูล เราใช้ไฮเปอร์พารามิเตอร์ scale_pos_weightซึ่งชั่งน้ำหนักของตัวอย่างชั้นบวกกับตัวอย่างชั้นเชิงลบ เนื่องจากชุดข้อมูลมีความเบ้สูง เราจึงตั้งค่าไฮเปอร์พารามิเตอร์นี้เป็นค่าอนุรักษ์นิยม: sqrt(num_nonfraud/num_fraud).

เราฝึกและปรับใช้โมเดลดังนี้:

  1. ดึงข้อมูล URI คอนเทนเนอร์ SageMaker XGBoost
  2. ตั้งค่าไฮเปอร์พารามิเตอร์ที่เราต้องการใช้สำหรับการฝึกโมเดล ซึ่งรวมถึงพารามิเตอร์ที่เราพูดถึงซึ่งจัดการความไม่สมดุลของข้อมูล scale_pos_weight.
  3. สร้างตัวประมาณ XGBoost และฝึกฝนด้วยชุดข้อมูลรถไฟของเรา
  4. ปรับใช้โมเดล XGBoost ที่ได้รับการฝึกอบรมไปยังปลายทางที่มีการจัดการของ SageMaker
  5. ประเมินแบบจำลองพื้นฐานนี้ด้วยชุดข้อมูลทดสอบของเรา

จากนั้น เราประเมินแบบจำลองของเราด้วยเมตริกสี่แบบเดียวกับที่กล่าวไว้ในขั้นตอนสุดท้าย คราวนี้เราสามารถคำนวณเมตริก ROC AUC ได้ด้วย

. RCF XGBoost
ความแม่นยำที่สมดุล 0.560023 0.847685
โคเฮน คัปปา 0.003917 0.743801
F1 0.007082 0.744186
ร็อค AUC - 0.983515

เราจะเห็นได้ว่าวิธีการเรียนรู้ภายใต้การดูแล XGBoost พร้อมสคีมาการถ่วงน้ำหนัก (โดยใช้ไฮเปอร์พารามิเตอร์ scale_pos_weight) บรรลุประสิทธิภาพที่ดีกว่า RCF วิธีการเรียนรู้แบบไม่มีผู้ดูแลอย่างมีนัยสำคัญ อย่างไรก็ตาม ยังมีพื้นที่ให้ปรับปรุงประสิทธิภาพการทำงาน โดยเฉพาะอย่างยิ่งการเพิ่มคะแนน Kappa ของ Cohen ที่สูงกว่า 0.8 โดยทั่วไปจะดีมาก

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

เมทริกซ์ความสับสนของโมเดล XGBoost

. ความแม่นยำ จำ คะแนน f1 สนับสนุน
ไม่ฉ้อโกง 1.00 1.00 1.00 28435
การหลอกลวง 0.80 0.70 0.74 46

ส่งทราฟฟิกทดสอบไปยังปลายทางต่อไปผ่าน Lambda

เพื่อสาธิตวิธีใช้แบบจำลองของเราในระบบที่ใช้งานจริง เราได้สร้าง REST API ด้วย Amazon API Gateway Amazon และฟังก์ชันแลมบ์ดา เมื่อแอปพลิเคชันไคลเอ็นต์ส่งคำขออนุมาน HTTP ไปยัง REST API ซึ่งจะทริกเกอร์ฟังก์ชัน Lambda ซึ่งจะเรียกใช้ปลายทางของโมเดล RCF และ XGBoost และส่งคืนการคาดการณ์จากโมเดล คุณสามารถอ่านโค้ดฟังก์ชัน Lambda และตรวจสอบการเรียกใช้บนคอนโซล Lambda

นอกจากนี้เรายังได้สร้างสคริปต์ Python ที่สร้างคำขออนุมาน HTTP ไปยัง REST API โดยมีข้อมูลทดสอบของเราเป็นข้อมูลอินพุต หากต้องการดูวิธีการนี้ ให้ตรวจสอบ generate_endpoint_traffic.py ไฟล์ในซอร์สโค้ดของโซลูชัน เอาต์พุตการคาดการณ์จะถูกบันทึกลงในบัคเก็ต S3 ผ่าน an สายไฟ Amazon Kinesis Data กระแสการจัดส่ง คุณสามารถค้นหาชื่อบัคเก็ต S3 ปลายทางได้ในคอนโซล Kinesis Data Firehose และตรวจสอบผลการคาดคะเนในบัคเก็ต S3

ฝึกโมเดล XGBoost ด้วยเทคนิคการสุ่มตัวอย่างเกิน SMOTE

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

ขั้นตอนมีดังนี้:

  1. ใช้ SMOTE เพื่อสุ่มตัวอย่างกลุ่มชนกลุ่มน้อย (กลุ่มหลอกลวง) ของชุดข้อมูลรถไฟของเรา SMOTE สุ่มตัวอย่างชนกลุ่มน้อยจากประมาณ 0.17–50% โปรดทราบว่านี่เป็นกรณีที่มีการสุ่มตัวอย่างมากเกินไปของชนกลุ่มน้อย อีกทางเลือกหนึ่งคือการใช้อัตราส่วนการสุ่มตัวอย่างที่เล็กกว่า เช่น มีกลุ่มตัวอย่างหนึ่งกลุ่มสำหรับทุกๆ sqrt(non_fraud/fraud) ตัวอย่างส่วนใหญ่ หรือใช้เทคนิคการสุ่มตัวอย่างขั้นสูง สำหรับตัวเลือกการสุ่มตัวอย่างเพิ่มเติม โปรดดูที่ เปรียบเทียบตัวอย่างที่สุ่มตัวอย่างมากเกินไป.
  2. กำหนดไฮเปอร์พารามิเตอร์สำหรับการฝึก XGBoost ตัวที่สองเพื่อลบ scale_pos_weight และไฮเปอร์พารามิเตอร์อื่นๆ ยังคงเหมือนเดิมเมื่อฝึกโมเดล XGBoost พื้นฐาน เราไม่จำเป็นต้องจัดการกับความไม่สมดุลของข้อมูลด้วยไฮเปอร์พารามิเตอร์นี้อีกต่อไป เพราะเราได้ทำไปแล้วด้วย SMOTE
  3. ฝึกโมเดล XGBoost ตัวที่สองด้วยไฮเปอร์พารามิเตอร์ใหม่บนชุดข้อมูลรถไฟที่ประมวลผล SMOTE
  4. ปรับใช้โมเดล XGBoost ใหม่กับปลายทางที่มีการจัดการของ SageMaker
  5. ประเมินโมเดลใหม่ด้วยชุดข้อมูลทดสอบ

เมื่อประเมินโมเดลใหม่ เราจะเห็นได้ว่าด้วย SMOTE XGBoost มีประสิทธิภาพที่ดีขึ้นในด้านความแม่นยำที่สมดุล แต่ไม่ใช่กับคะแนน Kappa และ F1 ของ Cohen เหตุผลก็คือ SMOTE ได้สุ่มตัวอย่างคลาสการฉ้อโกงมากเกินไปจนเพิ่มการทับซ้อนในพื้นที่คุณลักษณะด้วยกรณีที่ไม่เป็นการฉ้อโกง เนื่องจาก Kappa ของ Cohen ให้ความสำคัญกับผลบวกลวงมากกว่าความแม่นยำที่สมดุล เมตริกจึงลดลงอย่างมาก เช่นเดียวกับความแม่นยำและคะแนน F1 สำหรับกรณีการฉ้อโกง

. RCF XGBoost XGBoost SMOTE
ความแม่นยำที่สมดุล 0.560023 0.847685 0.912657
โคเฮน คัปปา 0.003917 0.743801 0.716463
F1 0.007082 0.744186 0.716981
ร็อค AUC - 0.983515 0.967497

อย่างไรก็ตาม เราสามารถนำความสมดุลระหว่างเมตริกกลับมาได้ด้วยการปรับเกณฑ์การจัดหมวดหมู่ จนถึงตอนนี้ เราใช้ 0.5 เป็นเกณฑ์ในการติดป้ายกำกับว่าจุดข้อมูลมีการฉ้อโกงหรือไม่ หลังจากทดสอบขีดจำกัดที่แตกต่างกันตั้งแต่ 0.1–0.9 เราจะเห็นได้ว่า Kappa ของ Cohen เพิ่มขึ้นเรื่อยๆ ควบคู่ไปกับขีดจำกัด โดยไม่สูญเสียความแม่นยำที่สมดุลอย่างมีนัยสำคัญ

ทดสอบเกณฑ์ต่างๆ เพื่อสร้างสมดุลระหว่างเมตริก

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

ฝึกโมเดล XGBoost ที่เหมาะสมที่สุดด้วย HPO

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

กระบวนการ HPO ต้องการชุดข้อมูลการตรวจสอบ ดังนั้นก่อนอื่นเราจะแยกข้อมูลการฝึกอบรมออกเป็นชุดข้อมูลการฝึกอบรมและการตรวจสอบโดยใช้ การสุ่มตัวอย่างแบบแบ่งชั้น. เพื่อจัดการกับปัญหาความไม่สมดุลของข้อมูล เราใช้สคีมาการถ่วงน้ำหนักของ XGBoost อีกครั้ง โดยตั้งค่า scale_pos_weight ไฮเปอร์พารามิเตอร์ถึง sqrt(num_nonfraud/num_fraud).

เราสร้างตัวประมาณ XGBoost โดยใช้คอนเทนเนอร์อัลกอริทึม XGBoost ในตัวของ SageMaker และระบุเมตริกการประเมินวัตถุประสงค์และช่วงไฮเปอร์พารามิเตอร์ที่เราต้องการทดสอบ ด้วยสิ่งเหล่านี้เราจึงสร้าง a ไฮเปอร์พารามิเตอร์จูนเนอร์ และเริ่มงานปรับแต่ง HPO ซึ่งฝึกหลายรุ่นพร้อมกัน โดยมองหาชุดค่าผสมไฮเปอร์พารามิเตอร์ที่เหมาะสมที่สุด

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

รายการข้อมูลแต่ละรุ่นจากงานปรับแต่ง

จากนั้นเราจะปรับใช้โมเดลที่ดีที่สุดและประเมินด้วยชุดข้อมูลทดสอบของเรา

ประเมินและเปรียบเทียบประสิทธิภาพของแบบจำลองทั้งหมดบนข้อมูลการทดสอบเดียวกัน

ตอนนี้เรามีผลการประเมินจากทั้งสี่รุ่น: RCF, XGBoost baseline, XGBoost พร้อม SMOTE และ XGBoost พร้อม HPO ลองเปรียบเทียบประสิทธิภาพของพวกเขา

. RCF XGBoost XGBoost กับ SMOTE XGBoost ด้วย HPO
ความแม่นยำที่สมดุล 0.560023 0.847685 0.912657 0.902156
โคเฮน คัปปา 0.003917 0.743801 0.716463 0.880778
F1 0.007082 0.744186 0.716981 0.880952
ร็อค AUC - 0.983515 0.967497 0.981564

เราจะเห็นได้ว่า XGBoost ที่มี HPO นั้นมีประสิทธิภาพที่ดีกว่าวิธี SMOTE โดยเฉพาะอย่างยิ่ง คะแนน Kappa ของ Cohen และ F1 นั้นมากกว่า 0.8 ซึ่งแสดงถึงประสิทธิภาพของโมเดลที่เหมาะสมที่สุด

ทำความสะอาด

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

ทำความสะอาดโดยการลบโซลูชัน

หรือคุณสามารถใช้ การก่อตัวของ AWS Cloud เพื่อลบทรัพยากรมาตรฐานทั้งหมดที่สร้างโดยโซลูชันและโน้ตบุ๊กโดยอัตโนมัติ หากต้องการใช้วิธีนี้ บนคอนโซล AWS CloudFormation ให้ค้นหาสแต็ก CloudFormation ที่มีคำอธิบายประกอบด้วยการตรวจจับการฉ้อโกงโดยใช้การเรียนรู้ด้วยเครื่องและลบออก นี่คือสแต็กหลัก และการเลือกลบสแต็กนี้จะลบสแต็กที่ซ้อนกันโดยอัตโนมัติ

ทำความสะอาดผ่าน CloudFormation

ด้วยวิธีใดวิธีหนึ่ง คุณยังต้องลบทรัพยากรเพิ่มเติมที่คุณอาจสร้างไว้ในสมุดบันทึกนี้ด้วยตนเอง ตัวอย่างบางส่วน ได้แก่ บัคเก็ต S3 พิเศษ (นอกเหนือจากบัคเก็ตเริ่มต้นของโซลูชัน) ตำแหน่งข้อมูล SageMaker พิเศษ (โดยใช้ชื่อที่กำหนดเอง) และเพิ่มเติม การลงทะเบียน Amazon Elastic Container ที่เก็บข้อมูล (Amazon ECR)

สรุป

ในโพสต์นี้ เราแสดงให้คุณเห็นถึงวิธีสร้างแกนหลักของระบบตรวจจับการฉ้อโกงบัตรเครดิตแบบไดนามิก ปรับปรุงตนเอง และบำรุงรักษาได้โดยใช้ ML กับ SageMaker เราสร้าง ฝึกฝน และปรับใช้โมเดลการตรวจจับความผิดปกติ RCF ที่ไม่ได้รับการดูแล โมเดล XGBoost ภายใต้การดูแลเป็นพื้นฐาน โมเดล XGBoost อีกรุ่นภายใต้การดูแลที่มี SMOTE เพื่อจัดการกับปัญหาความไม่สมดุลของข้อมูล และโมเดล XGBoost ขั้นสุดท้ายที่ปรับให้เหมาะสมด้วย HPO เราได้พูดคุยถึงวิธีจัดการกับความไม่สมดุลของข้อมูลและใช้ข้อมูลของคุณเองในโซลูชัน เรายังรวมตัวอย่างการใช้งาน REST API กับ API Gateway และ Lambda เพื่อสาธิตวิธีใช้ระบบในโครงสร้างพื้นฐานทางธุรกิจที่มีอยู่ของคุณ

ที่จะลองด้วยตัวคุณเอง เปิด SageMaker สตูดิโอ และเปิดโซลูชัน JumpStart หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโซลูชัน โปรดดูที่ พื้นที่เก็บข้อมูล GitHub.


เกี่ยวกับผู้เขียน

เซียวลี่ เซินเซียวลี่ เซิน เป็นสมาชิก Solutions Architect และ Machine Learning Technical Field Community (TFC) ที่ Amazon Web Services เธอมุ่งเน้นที่การช่วยเหลือลูกค้าในการออกแบบสถาปัตยกรรมบนคลาวด์และใช้ประโยชน์จากบริการของ AWS เพื่อให้ได้มูลค่าทางธุรกิจ ก่อนร่วมงานกับ AWS เธอเคยเป็นหัวหน้าฝ่ายเทคโนโลยีและวิศวกรอาวุโสแบบฟูลสแตก ซึ่งสร้างระบบแบบกระจายที่เน้นข้อมูลบนคลาวด์

ตรวจจับธุรกรรมที่ฉ้อโกงโดยใช้แมชชีนเลิร์นนิงกับ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.ดร.ซิน หวาง เป็นนักวิทยาศาสตร์ประยุกต์สำหรับอัลกอริทึมในตัวของ Amazon SageMaker JumpStart และ Amazon SageMaker เขามุ่งเน้นไปที่การพัฒนาอัลกอริธึมการเรียนรู้ของเครื่องที่ปรับขนาดได้ ความสนใจในงานวิจัยของเขาอยู่ในพื้นที่ของการประมวลผลภาษาธรรมชาติ การเรียนรู้เชิงลึกที่อธิบายได้บนข้อมูลแบบตาราง และการวิเคราะห์ที่มีประสิทธิภาพของการจัดกลุ่มพื้นที่และเวลาที่ไม่อิงพารามิเตอร์ เขาได้ตีพิมพ์บทความจำนวนมากในการประชุม ACL, ICDM, KDD และวารสาร Royal Statistical Society: Series A

ตรวจจับธุรกรรมที่ฉ้อโกงโดยใช้แมชชีนเลิร์นนิงกับ Amazon SageMaker PlatoBlockchain Data Intelligence ค้นหาแนวตั้ง AI.Vedant เชน เป็น Sr. AI/ML Specialist Solutions Architect ซึ่งช่วยให้ลูกค้าได้รับคุณค่าจากระบบนิเวศ Machine Learning ที่ AWS ก่อนที่จะร่วมงานกับ AWS Vedant เคยดำรงตำแหน่ง ML/Data Science Specialty ในบริษัทต่างๆ เช่น Databricks, Hortonworks (ปัจจุบันคือ Cloudera) และ JP Morgan Chase นอกเหนือจากงานของเขา Vedant ยังหลงใหลในการทำดนตรีโดยใช้วิทยาศาสตร์เพื่อใช้ชีวิตที่มีความหมายและสำรวจอาหารมังสวิรัติแสนอร่อยจากทั่วโลก

ประทับเวลา:

เพิ่มเติมจาก AWS Machine Learning AWS