BigQuery ML สำหรับการตรวจหาการประพฤติมิชอบในธุรกรรมบัตรเครดิตโดยใช้คอนโซล

1. บทนำ

ในแล็บนี้ คุณจะได้ใช้ BigQuery เพื่อฝึกและแสดงโมเดลที่มีข้อมูลแบบตารางโดยใช้คอนโซล ข้อเสนอนี้เป็นส่วนเสริมที่ชื่นชอบสำหรับการแสดงโมเดลและการฝึกที่อิงตาม SQL BigQuery ML ช่วยให้ผู้ใช้สร้างและเรียกใช้โมเดลแมชชีนเลิร์นนิงใน BigQuery ได้โดยใช้การค้นหา SQL เป้าหมายคือการทำให้แมชชีนเลิร์นนิงเป็นเรื่องง่ายสำหรับทุกคนด้วยการช่วยให้ผู้ปฏิบัติงาน SQL สร้างโมเดลโดยใช้เครื่องมือที่มีอยู่ และเพิ่มความเร็วในการพัฒนาด้วยการลดความจำเป็นในการย้ายข้อมูล

สิ่งที่คุณจะได้เรียนรู้

  • สํารวจข้อมูลที่มีอยู่ใน BigQuery
  • สร้างโมเดลโดยใช้ SQL ใน BigQuery โดยใช้คอนโซล
  • ประเมินผลลัพธ์ของโมเดลที่สร้างขึ้น
  • คาดการณ์ธุรกรรมว่าเป็นการฉ้อโกงหรือไม่ด้วยโมเดลที่สร้างขึ้น

2. เกี่ยวกับข้อมูล

ชุดข้อมูลประกอบด้วยธุรกรรมที่ดำเนินการด้วยบัตรเครดิตในเดือนกันยายน 2013 โดยผู้ถือบัตรในยุโรป ชุดข้อมูลนี้แสดงธุรกรรมที่เกิดขึ้นใน 2 วัน โดยเราพบการฉ้อโกง 492 รายการจากธุรกรรมทั้งหมด 284,807 รายการ ข้อมูลมีความไม่สมดุลสูง โดยคลาสเชิงบวก (การประพฤติมิชอบ) คิดเป็น 0.172% ของธุรกรรมทั้งหมด

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

  1. ฟีเจอร์ V1, V2, ... V28 เป็นองค์ประกอบหลักที่ได้จาก PCA โดยมีเพียงฟีเจอร์ "เวลา" และ "จำนวนเงิน" เท่านั้นที่ไม่ได้แปลงด้วย PCA
  2. ฟีเจอร์ "เวลา" มีวินาทีที่ผ่านไประหว่างธุรกรรมแต่ละรายการกับธุรกรรมแรกในชุดข้อมูล
  3. ฟีเจอร์ "จำนวนเงิน" คือจำนวนเงินของธุรกรรม ฟีเจอร์นี้สามารถใช้สำหรับการเรียนรู้ที่คำนึงถึงต้นทุนซึ่งขึ้นอยู่กับตัวอย่างได้
  4. ฟีเจอร์ "Class" คือตัวแปรการตอบสนองและมีค่าเป็น 1 ในกรณีที่มีการฉ้อโกง และ 0 ในกรณีอื่นๆ

ชุดข้อมูลนี้ได้รับการรวบรวมและวิเคราะห์ระหว่างการทำงานวิจัยร่วมกันของ Worldline และกลุ่มแมชชีนเลิร์นนิง ( http://mlg.ulb.ac.be) ของ ULB (Université Libre de Bruxelles) เกี่ยวกับการทำเหมืองข้อมูลขนาดใหญ่และการตรวจหาการประพฤติมิชอบ

ดูรายละเอียดเพิ่มเติมเกี่ยวกับโปรเจ็กต์ปัจจุบันและโปรเจ็กต์ที่ผ่านมาในหัวข้อที่เกี่ยวข้องได้ที่ https://www.researchgate.net/project/Fraud-detection-5 และหน้าโปรเจ็กต์ DefeatFraud

การอ้างอิง:

Andrea Dal Pozzolo, Olivier Caelen, Reid A. Johnson และ Gianluca Bontempi การปรับเทียบความน่าจะเป็นด้วยการสุ่มตัวอย่างน้อยเกินไปสำหรับการแยกประเภทที่ไม่สมดุล In Symposium on Computational Intelligence and Data Mining (CIDM), IEEE, 2015

Dal Pozzolo, Andrea; Caelen, Olivier; Le Borgne, Yann-Ael; Waterschoot, Serge; Bontempi, Gianluca. บทเรียนที่ได้จากการตรวจหาการประพฤติมิชอบด้วยบัตรเครดิตจากมุมมองของผู้ปฏิบัติงาน, Expert systems with applications,41,10,4915-4928,2014, Pergamon

Dal Pozzolo, Andrea; Boracchi, Giacomo; Caelen, Olivier; Alippi, Cesare; Bontempi, Gianluca. การตรวจหาการฉ้อโกงบัตรเครดิต: การสร้างโมเดลที่สมจริงและกลยุทธ์การเรียนรู้แบบใหม่,IEEE transactions on neural networks and learning systems,29,8,3784-3797,2018,IEEE

Dal Pozzolo, Andrea Adaptive Machine learning for credit card fraud detection ULB MLG PhD thesis (supervised by G. Bontempi)

Carcillo, Fabrizio; Dal Pozzolo, Andrea; Le Borgne, Yann-Aël; Caelen, Olivier; Mazzer, Yannis; Bontempi, Gianluca Scarff: a scalable framework for streaming credit card fraud detection with Spark, Information fusion,41, 182-194,2018,Elsevier

Carcillo, Fabrizio; Le Borgne, Yann-Aël; Caelen, Olivier; Bontempi, Gianluca. Streaming active learning strategies for real-life credit card fraud detection: assessment and visualization, International Journal of Data Science and Analytics, 5,4,285-300,2018,Springer International Publishing

Bertrand Lebichot, Yann-Aël Le Borgne, Liyun He, Frederic Oblé, Gianluca Bontempi Deep-Learning Domain Adaptation Techniques for Credit Cards Fraud Detection, INNSBDDL 2019: Recent Advances in Big Data and Deep Learning, pp 78-88, 2019

Fabrizio Carcillo, Yann-Aël Le Borgne, Olivier Caelen, Frederic Oblé, Gianluca Bontempi Combining Unsupervised and Supervised Learning in Credit Card Fraud Detection Information Sciences, 2019

3. ตั้งค่าสภาพแวดล้อม

คุณจะต้องมีโปรเจ็กต์ Google Cloud Platform ที่เปิดใช้การเรียกเก็บเงินเพื่อเรียกใช้ Codelab นี้ หากต้องการสร้างโปรเจ็กต์ ให้ทำตามวิธีการที่นี่

  1. เปิดใช้ BigQuery API

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

4. เข้ามาดูข้อมูล

ขั้นตอนที่ 1: ไปที่ BigQuery

มองหา BigQuery ใน https://cloud.google.com/console

ขั้นตอนที่ 2: สำรวจข้อมูลโดยใช้การค้นหา

ในเอดิเตอร์ ให้พิมพ์คำค้นหา SQL ด้านล่างเพื่อตรวจสอบข้อมูลในชุดข้อมูลสาธารณะ

SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` LIMIT 5

ขั้นตอนที่ 3: ดำเนินการ

กดคำสั่งเรียกใช้ด้านบนเพื่อเรียกใช้การค้นหา

c670e136ecd58236.png

ผลลัพธ์

ควรอยู่ในแผงผลการค้นหาของคำค้นหาและมีลักษณะดังนี้ ข้อมูลอาจแตกต่างกันไป

be082fb135879158.png

สำรวจคอลัมน์ที่เกี่ยวข้องและเอาต์พุต

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

SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=0;
SELECT count(*) FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` 
where Class=1;

5. สร้างชุดข้อมูลเอาต์พุต

ขั้นตอนที่ 1: สร้างชุดข้อมูลสำหรับการสร้างโมเดล

  1. ในแผง Explorer ทางด้านซ้าย ให้เลือกโปรเจ็กต์ที่คุณกำลังทำงานอยู่ แล้วคลิกจุด 3 จุดข้างโปรเจ็กต์นั้น

7618699754e066bd.png

  1. คลิกสร้างชุดข้อมูลที่ด้านขวาบน

17851cc9db05dc1.png

  1. ป้อนรายละเอียดสำหรับชื่อชุดข้อมูล การเก็บรักษา สถานที่ตั้ง ฯลฯ ใช้การตั้งค่าต่อไปนี้

b8b6731408f61d57.png

6. สร้างโมเดลการถดถอยโลจิสติก

ขั้นตอนที่ 1: สร้างใบแจ้งหนี้

ในหน้าต่างคำค้นหา ให้พิมพ์คำค้นหาด้านล่างเพื่อสร้างโมเดล ทำความเข้าใจตัวเลือกคีย์ด้วยคำสั่งนี้ อธิบายไว้ใน ลิงก์นี้

INPUT_LABEL_COLS ระบุป้ายกำกับการคาดการณ์

AUTO_CLASS_WEIGHTS ใช้สําหรับชุดข้อมูลที่ไม่สมดุล

MODEL_TYPE จะระบุอัลกอริทึมที่ใช้ในกรณีนี้คือการถดถอยลอจิสติก

DATA_SPLIT_METHOD ระบุการแยกข้อมูลการฝึกและการทดสอบ

CREATE OR REPLACE MODEL advdata.ulb_fraud_detection 
TRANSFORM(
    * EXCEPT(Amount),
    SAFE.LOG(Amount) AS log_amount
)
OPTIONS(
    INPUT_LABEL_COLS=['class'],
    AUTO_CLASS_WEIGHTS = TRUE,
    DATA_SPLIT_METHOD='seq',
    DATA_SPLIT_COL='Time',
    MODEL_TYPE='logistic_reg'
) AS

SELECT 
 *
FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection`

ขั้นตอนที่ 2: ดำเนินการ

เรียกใช้คำสั่งด้านบน การดำเนินการนี้จะใช้เวลาเพียง 2-3 นาที

สังเกตสิ่งสำคัญหลังจากที่การวิ่งเสร็จสิ้น

3385a54d3907443e.png

  1. แผง Explorer จะมีโมเดลที่สร้างขึ้น
  2. แผงผลการค้นหาจะมีระยะเวลาที่ใช้ในการประมวลผล ML SQL คล้ายกับคำสั่ง SQL อื่นๆ
  3. แผงผลการค้นหาจะมีลิงก์ไปยังโมเดลเพื่อให้คุณสำรวจด้วย

ขั้นตอนที่ 3: สำรวจ

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

b350f1b94835f2d1.png

เราจะพูดถึงเรื่องนี้เพิ่มเติมในส่วนถัดไป

ดูข้อมูลเพิ่มเติมเกี่ยวกับการถดถอยโลจิสติกได้ที่นี่

7. สำรวจเมตริกการประเมินโมเดล

ในขั้นตอนนี้ เราจะดูประสิทธิภาพของโมเดล

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

 SELECT * FROM ML.EVALUATE(MODEL advdata.ulb_fraud_detection)

ผลลัพธ์จะมีลักษณะดังนี้ โดยทั่วไปแล้ว roc_auc จะมีความสําคัญมากกว่าในชุดข้อมูลที่ไม่สมดุล

c3c80286082dc336.png

หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับผลลัพธ์ ดูเอกสารประกอบ ML.Evaluate ที่นี่

ความแม่นยำและการเรียกคืน

เส้นโค้ง ROC และ AUC

8. คาดการณ์ชั้นเรียนสำหรับเวลาที่กำหนด

กดเขียนคำค้นหาใหม่และเรียกใช้ SQL ด้านล่าง เวลาที่ระบุที่นี่มีจำนวนเงินที่เป็นการประพฤติมิชอบ เราพยายามประเมินว่าการคาดการณ์ใช้งานได้

SELECT Amount, predicted_class_probs, Class
FROM ML.PREDICT( MODEL advdata.ulb_fraud_detection,
 (SELECT * FROM `bigquery-public-data.ml_datasets.ulb_fraud_detection` WHERE Time = 85285.0)
)

เอาต์พุตควรมีลักษณะดังนี้ (ตัวเลขอาจแตกต่างกัน)

676fc8accdab2f6c.png

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ML.PREDICT ดูที่นี่

9. ล้างข้อมูล

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

e7d18fadd2b781be.png

คลิกลบชุดข้อมูลที่มุมขวาบน

b47bc819869bed6c.png

ป้อนชื่อชุดข้อมูลอีกครั้งเพื่อยืนยันรายละเอียด ในกรณีของเราจะเป็น advdata

10. ขอแสดงความยินดี

ยินดีด้วย คุณสร้างโมเดลแรก ประเมิน และคาดการณ์โดยใช้แมชชีนเลิร์นนิงที่มีการควบคุมดูแลได้สำเร็จแล้ว

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

สิ่งต่อไปที่ควรทำ

ดูวิธีอื่นๆ ที่ใช้ในการคาดการณ์

เอกสารอ้างอิง