คุณสามารถค้นหารหัสที่สมบูรณ์ได้ ที่นี่

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

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

การรวบรวมข้อมูล

ฉันใช้ ชุดข้อมูล Kaggle ซึ่งมีธุรกรรม 284807 รายการ ชุดข้อมูลนี้นำเสนอธุรกรรมที่เกิดขึ้นในสองวัน โดยเรามีการฉ้อโกง 492 ครั้งจากธุรกรรม 284,807 รายการ ชุดข้อมูลไม่สมดุลอย่างมาก ระดับเชิงบวก (การฉ้อโกง) คิดเป็น 0.172% ของธุรกรรมทั้งหมด

การวิเคราะห์ข้อมูลเชิงสำรวจ

ในตอนแรก ฉันต้องการสำรวจคอลัมน์ข้อมูลเวลา จำนวน และชั้นเรียน

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

ธุรกรรมฉ้อโกงเกิดขึ้นบ่อยครั้งมากขึ้น ดูเหมือนว่าเป็นการยากที่จะแยกแยะการฉ้อโกงจากธุรกรรมปกติด้วยจำนวนธุรกรรมเพียงอย่างเดียว ชั่วโมง “ศูนย์” หมายถึงชั่วโมงที่เกิดธุรกรรมครั้งแรก และไม่จำเป็นต้องเป็นเวลา 01.00–01.00 น. เนื่องจากธุรกรรมปกติลดลงอย่างมากจากชั่วโมงที่ 1 ถึง 8 และอีกครั้งในเวลาประมาณ 24 ถึง 32 ชั่วโมง ดูเหมือนว่าการฉ้อโกงมีแนวโน้มที่จะเกิดขึ้นในอัตราที่สูงกว่าในช่วงกลางคืน การทดสอบทางสถิติสามารถใช้เพื่อให้หลักฐานสำหรับข้อเท็จจริงนี้ได้

เมื่อดูการกระจายคลาส เราจะพบว่ามีธุรกรรมฉ้อโกงเพียง 492 รายการเท่านั้น นั่นเป็นเพียง 0.173% ของธุรกรรมทั้งหมดในชุดข้อมูลนี้!

การปรับขนาดคุณลักษณะ

ดังที่เราทราบจากชุดข้อมูล ฟีเจอร์ V1-V28 ได้รับการเปลี่ยนแปลงโดย PCA และปรับขนาดแล้ว ในขณะที่คุณสมบัติ “เวลา” และ “จำนวน” ไม่มี และเมื่อพิจารณาว่าเราจะวิเคราะห์คุณสมบัติทั้งสองนี้กับ V1-V28 อื่นๆ ควรปรับขนาดคุณสมบัติเหล่านี้ให้ดีขึ้นก่อนที่เราจะฝึกโมเดลของเราโดยใช้อัลกอริธึมต่างๆ เราควรใช้วิธีปรับขนาดแบบใด ไม่แนะนำให้ใช้ Scaler มาตรฐาน เนื่องจากฟีเจอร์ "เวลา" และ "จำนวน" ไม่ได้รับการกระจายตามปกติ ไม่แนะนำให้ใช้ ตัวปรับขนาดต่ำสุด-สูงสุด เนื่องจากมีข้อผิดพลาดที่เห็นได้ชัดเจนในฟีเจอร์ "จำนวน" Robust Scaler ทนทานต่อค่าผิดปกติ: (xi–Q1(x))/( Q3(x)–Q1(x)) (Q1 และ Q3 คิดเป็น 25% และ ควอไทล์ 75%) ดังนั้นเราจึงเลือก Robust Scaler เพื่อปรับขนาดคุณลักษณะทั้งสองนี้

เมทริกซ์สหสัมพันธ์

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

แบบจำลองอาคาร

ฉันแบ่งชุดข้อมูลเป็น 70%-30% เพื่อการฝึกและทดสอบก่อนที่จะสร้างโมเดลใดๆ ปัญหาที่ต้องแก้ไขอีกประการหนึ่งคือชุดข้อมูลที่ไม่สมดุลอย่างมาก มีหลายวิธีในการประเมินและแก้ไขปัญหาความไม่สมดุล เทคนิคการสุ่มตัวอย่างเกินส่วนน้อยสังเคราะห์ (SMOTE) เป็นหนึ่งในวิธีการสุ่มตัวอย่างมากเกินไปเพื่อแก้ไขปัญหานี้ ตามวิธี SMOTE ฉันใช้วิธี borderline-SMOTE ในการจัดการกับความไม่สมดุลของชุดข้อมูลของฉัน ด้วยการตั้งค่านี้ ตอนนี้ฉันพร้อมที่จะเรียกใช้ข้อมูลผ่านบางรุ่นแล้ว ก่อนที่ฉันจะทำงานกับโมเดลการถดถอยโลจิสติกสามโมเดล ได้แก่ DecisionTreeClassifier และ RandomForestClassifier ฉันใช้วิธี "ไปป์ไลน์" เพื่อลดความซับซ้อนของขั้นตอนการทำงาน

สรุปผลลัพธ์ของสามรุ่น:

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

ด้วย DecisionTreeClassifier ตรวจพบกรณีการฉ้อโกง 104 จาก 147 กรณีในชุดข้อมูลทดสอบ แต่ทำได้ดีมากโดยแสดงผลบวกลวงน้อยลงประมาณ 81 ธุรกรรม

RandomForestClassifier สามารถบันทึกคดีฉ้อโกงได้ 117 กรณีจากทั้งหมด 147 กรณี และมีเพียง 13 กรณีเท่านั้นที่ถูกตรวจพบโดยไม่ได้ตั้งใจว่าเป็นธุรกรรมปกติว่าเป็นธุรกรรมฉ้อโกง

โมเดล TensorFlow Keras

ฉันใช้โมเดลการเรียนรู้เชิงลึกเพื่อจำแนกกรณีการฉ้อโกงและเปรียบเทียบกับโมเดลสามรุ่นก่อนหน้าของฉัน

ฉันใช้ฟังก์ชันการเปิดใช้งาน Relu สำหรับทุกเลเยอร์ในการเข้ารหัส และฟังก์ชันการเปิดใช้งาน sigmoid เพื่อถอดรหัสเอาต์พุต จากนั้นโมเดล Keras ได้รับการฝึกฝนกับ Adam Optimizer binary_crossenttropy ถูกใช้เป็นฟังก์ชันการสูญเสียและแบบจำลองได้รับการฝึกฝนในขนาดแบตช์ 100 epochs ซึ่งเท่ากับ 256

การประเมินแบบจำลอง

ฉันใช้ลักษณะการทำงานของตัวรับ (ROC) และเมทริกซ์ความสับสนเพื่อประเมินแบบจำลอง ROC คือการวัดประสิทธิภาพสำหรับปัญหาการจำแนกประเภทที่เกณฑ์ต่างๆ โดยพื้นฐานแล้วมันคือเส้นโค้งความน่าจะเป็น และยิ่งคะแนน Area Under the Curve (AUC) สูงเท่าไร โมเดลก็จะทำนายธุรกรรมที่เป็นการฉ้อโกง/ไม่ฉ้อโกงได้ดีขึ้นเท่านั้น

เมื่อสิ้นสุดการฝึกอบรมจากธุรกรรมการตรวจสอบความถูกต้อง 85,334 รายการ เราสามารถระบุธุรกรรมที่ฉ้อโกงได้ 82 รายการอย่างถูกต้อง และพลาดไป 26 รายการ เราตั้งค่าสถานะธุรกรรมที่ถูกต้องตามกฎหมาย 1,552 รายการอย่างไม่ถูกต้อง

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

บทสรุป

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

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