Vertex AI: การสร้างโมเดลการตรวจจับการฉ้อโกงด้วย AutoML

1. ภาพรวม

ในห้องทดลองนี้ คุณจะใช้ Vertex AI เพื่อฝึกและแสดงโมเดลด้วยข้อมูลแบบตาราง นี่เป็นข้อเสนอผลิตภัณฑ์ AI ใหม่ล่าสุดใน Google Cloud และอยู่ในระหว่างเวอร์ชันตัวอย่าง

สิ่งที่ได้เรียนรู้

โดยคุณจะได้เรียนรู้วิธีต่อไปนี้

  • อัปโหลดชุดข้อมูลที่มีการจัดการไปยัง Vertex AI
  • ฝึกโมเดลด้วย AutoML
  • ทำให้โมเดล AutoML ที่ฝึกแล้วใช้งานได้ที่ปลายทาง แล้วใช้ปลายทางนั้นเพื่อรับการคาดการณ์

ค่าใช้จ่ายรวมในการเรียกใช้ห้องทดลองนี้บน Google Cloud อยู่ที่ประมาณ $22

2. ข้อมูลเบื้องต้นเกี่ยวกับ Vertex AI

ห้องทดลองนี้ใช้ข้อเสนอผลิตภัณฑ์ AI ใหม่ล่าสุดที่มีให้บริการใน Google Cloud Vertex AI ผสานรวมข้อเสนอ ML ใน Google Cloud เข้ากับประสบการณ์การพัฒนาที่ราบรื่น ก่อนหน้านี้โมเดลที่ฝึกด้วย AutoML และโมเดลที่กำหนดเองจะเข้าถึงได้ผ่านบริการแยกต่างหาก ข้อเสนอใหม่จะรวมทั้ง 2 อย่างไว้ใน API เดียว รวมทั้งผลิตภัณฑ์ใหม่อื่นๆ นอกจากนี้ คุณยังย้ายข้อมูลโปรเจ็กต์ที่มีอยู่ไปยัง Vertex AI ได้ด้วย หากมีความคิดเห็น โปรดดูหน้าการสนับสนุน

Vertex AI มีผลิตภัณฑ์ต่างๆ มากมายเพื่อรองรับเวิร์กโฟลว์ ML แบบครบวงจร ห้องทดลองนี้จะมุ่งเน้นที่ผลิตภัณฑ์ที่ไฮไลต์ด้านล่าง ได้แก่ AutoML สำหรับข้อมูลแบบตาราง การคาดการณ์ และ Workbench

ภาพรวมผลิตภัณฑ์ Vertex

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

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

ขั้นตอนที่ 1: เปิดใช้ Compute Engine API

ไปที่ Compute Engine แล้วเลือกเปิดใช้ หากยังไม่ได้เปิดใช้ ซึ่งคุณจะต้องใช้ในการสร้างอินสแตนซ์สมุดบันทึก

ขั้นตอนที่ 2: เปิดใช้ Vertex AI API

ไปที่ส่วน Vertex AI ของ Cloud Console แล้วคลิกเปิดใช้ Vertex AI API

แดชบอร์ด Vertex

ขั้นตอนที่ 3: สร้างอินสแตนซ์ Vertex AI Workbench

จากส่วน Vertex AI ของ Cloud Console ให้คลิก Workbench ดังนี้

เมนู Vertex AI

จากภายในสมุดบันทึกที่จัดการโดยผู้ใช้ ให้คลิกสมุดบันทึกใหม่

สร้างสมุดบันทึกใหม่

จากนั้นเลือกประเภทอินสแตนซ์ TensorFlow Enterprise (ที่มี LTS) เวอร์ชันล่าสุดที่ไม่มี GPU

อินสแตนซ์ TFE

ใช้ตัวเลือกเริ่มต้นแล้วคลิกสร้าง

ขั้นตอนที่ 5: เปิดสมุดบันทึก

เมื่อสร้างอินสแตนซ์แล้ว ให้เลือก Open JupyterLab:

เปิดสมุดบันทึก

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

4. สร้างชุดข้อมูลที่มีการจัดการ

คุณสร้างชุดข้อมูลที่มีการจัดการสำหรับประเภทข้อมูลที่หลากหลายได้ใน Vertex AI จากนั้นคุณจะสร้างสถิติบนชุดข้อมูลเหล่านี้และนำไปใช้ในการฝึกโมเดลด้วย AutoML หรือโค้ดโมเดลที่กำหนดเองได้

ขั้นตอนที่ 1: สร้างชุดข้อมูล

ในเมนู Vertex ในคอนโซล ให้เลือกชุดข้อมูล ดังนี้

เลือกชุดข้อมูล

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

จากหน้าชุดข้อมูล ให้ตั้งชื่อชุดข้อมูล จากนั้นเลือกตาราง และการถดถอย/การจัดประเภท จากนั้นสร้างชุดข้อมูลโดยทำดังนี้

สร้างชุดข้อมูล

การนำเข้าข้อมูลไปยังชุดข้อมูลที่มีการจัดการใน Vertex ทำได้ 2-3 วิธีดังนี้

  • การอัปโหลดไฟล์ในเครื่องจากคอมพิวเตอร์
  • การเลือกไฟล์จาก Cloud Storage
  • การเลือกข้อมูลจาก BigQuery

ในที่นี้เราจะอัปโหลดข้อมูลจากตาราง BigQuery สาธารณะ

ขั้นตอนที่ 2: นำเข้าข้อมูลจาก BigQuery

เลือก "เลือกตารางหรือมุมมองจาก BigQuery" เป็นวิธีการนำเข้า จากนั้นคัดลอกข้อมูลต่อไปนี้ลงในช่องตาราง BigQuery bigquery-public-data.ml_datasets.ulb_fraud_detection จากนั้นเลือกต่อไป

นำเข้าข้อมูล BQ

คุณจะเห็นข้อมูลต่อไปนี้หลังจากนำเข้าชุดข้อมูล

ข้อมูลที่นำเข้า

คุณสามารถคลิกสร้างสถิติเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับชุดข้อมูลนี้ (ไม่จำเป็นต้องระบุ) ก่อนที่จะไปยังขั้นตอนถัดไป ชุดข้อมูลนี้มีธุรกรรมบัตรเครดิตจริง ชื่อคอลัมน์ส่วนใหญ่ถูกปิดบัง ทำให้เรียกว่า V1, V2 ฯลฯ

5. ฝึกโมเดลด้วย AutoML

เมื่ออัปโหลดชุดข้อมูลที่มีการจัดการแล้ว เราก็พร้อมที่จะฝึกโมเดลด้วยข้อมูลนี้ เราจะฝึกโมเดลการแยกประเภทเพื่อคาดการณ์ธุรกรรมที่เฉพาะเจาะจงว่าเป็นการฉ้อโกงหรือไม่ Vertex AI มี 2 ตัวเลือกในการฝึกโมเดล ได้แก่

  • AutoML: ฝึกโมเดลที่มีคุณภาพสูงอย่างง่ายดายโดยไม่ต้องมีความเชี่ยวชาญด้าน ML
  • การฝึกที่กำหนดเอง: เรียกใช้แอปพลิเคชันการฝึกที่กำหนดเองในระบบคลาวด์โดยใช้คอนเทนเนอร์สำเร็จรูปของ Google Cloud หรือใช้คอนเทนเนอร์ของคุณเอง

ในห้องทดลองนี้ เราจะใช้ AutoML สำหรับการฝึก

ขั้นตอนที่ 1: เริ่มต้นงานการฝึก

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

การฝึกโมเดลขั้นตอนที่ 1

ตั้งชื่อให้โมเดลของคุณ หรือใช้ค่าเริ่มต้น ในส่วนคอลัมน์เป้าหมาย ให้เลือกชั้นเรียน ค่านี้เป็นจำนวนเต็มที่ระบุว่าธุรกรรมหนึ่งๆ เป็นการฉ้อโกงหรือไม่ (0 สำหรับการฉ้อโกง ไม่ใช่ 1)

จากนั้นเลือกต่อไป

การฝึกโมเดลขั้นตอนที่ 2

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

ตัวเลือกการฝึกอบรมขั้นสูง

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

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

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

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

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

ขั้นตอนที่ 1: ทำความเข้าใจเมทริกซ์ความสับสน

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

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

หากเลื่อนลงมาที่แท็บประเมิน คุณควรเห็นเมทริกซ์ความสับสนที่มีลักษณะเช่นนี้ (เปอร์เซ็นต์ที่แน่นอนอาจแตกต่างกันไป)

เมตริกความสับสน

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

ขั้นตอนที่ 2: พิจารณาความสำคัญของฟีเจอร์

คุณจะเห็นแผนภูมิความสำคัญของฟีเจอร์ที่ด้านล่างเมทริกซ์ความสับสน

ความสำคัญของฟีเจอร์

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

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

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

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

7. การทำให้โมเดลใช้งานได้ที่ปลายทาง

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

ขั้นตอนที่ 1: การสร้างปลายทาง

ในหน้าโมเดล ให้ไปที่แท็บทำให้ใช้งานได้และทดสอบ แล้วคลิกทำให้ใช้งานได้ที่ปลายทาง

ทำให้ใช้งานได้และทดสอบ

ตั้งชื่อปลายทาง เช่น fraud_v1 และปล่อยให้การตั้งค่าการเข้าถึงเป็นมาตรฐาน แล้วคลิกต่อไป

ปล่อยให้การแยกการเข้าชมและประเภทเครื่องเป็นการตั้งค่าเริ่มต้น จากนั้นคลิกเสร็จสิ้น แล้วคลิกต่อไป

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

ปลายทางที่ทำให้ใช้งานได้แล้ว

ใกล้เสร็จแล้ว ตอนนี้คุณพร้อมที่จะรับการคาดการณ์บนโมเดลที่ทำให้ใช้งานได้แล้ว

8. การรับการคาดการณ์ในโมเดลที่ทำให้ใช้งานได้ของเรา

ตัวเลือกในการรับการคาดการณ์โมเดลมี 2-3 ตัวเลือกดังนี้

  • UI ของ Vertex AI
  • Vertex AI API

เราจะแสดงทั้ง 2 อย่างที่นี่

ขั้นตอนที่ 1: รับการคาดการณ์โมเดลใน UI

ในหน้าโมเดลที่แสดงปลายทาง (ส่วนที่เราค้างไว้ในขั้นตอนสุดท้าย) ให้เลื่อนลงไปที่ส่วนทดสอบโมเดล ดังนี้

ทดสอบโมเดล

ในตัวอย่างนี้ Vertex AI ได้เลือกค่าแบบสุ่มสำหรับฟีเจอร์แต่ละรายการของโมเดลที่เราใช้เพื่อรับการคาดการณ์ทดสอบได้ คุณสามารถเปลี่ยนค่าเหล่านี้ได้ถ้าต้องการ เลื่อนลงไปที่ด้านล่างของหน้า แล้วเลือกคาดการณ์

ในส่วนผลการคาดการณ์ของหน้า คุณควรดูเปอร์เซ็นต์ที่คาดการณ์ของโมเดลสำหรับแต่ละคลาส ตัวอย่างเช่น คะแนนความเชื่อมั่น 0.99 สำหรับคลาส 0 หมายความว่าโมเดลของคุณคิดว่าตัวอย่างนี้มี 99% ที่ไม่เป็นการฉ้อโกง

ขั้นตอนที่ 2: รับการคาดการณ์โมเดลด้วย Vertex AI API

UI เป็นวิธีที่ยอดเยี่ยมในการตรวจสอบว่าปลายทางที่ทำให้ใช้งานได้แล้วของคุณทำงานตามที่คาดไว้ แต่ก็มีโอกาสที่คุณอาจอยากรับการคาดการณ์แบบไดนามิกผ่านการเรียก API ของ REST เราจะใช้อินสแตนซ์ Vertex Workbench ที่คุณสร้างในช่วงเริ่มต้นของห้องทดลองนี้เพื่อแสดงวิธีรับการคาดการณ์โมเดล

จากนั้นให้เปิดอินสแตนซ์สมุดบันทึกที่คุณสร้าง และเปิดสมุดบันทึก Python 3 จาก Launcher โดยทำดังนี้

เปิดสมุดบันทึก

ในสมุดบันทึก ให้เรียกใช้คำสั่งต่อไปนี้ในเซลล์เพื่อติดตั้ง Vertex SDK

!pip3 install google-cloud-aiplatform --upgrade --user

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

from google.cloud import aiplatform

endpoint = aiplatform.Endpoint(
    endpoint_name="projects/YOUR-PROJECT-NUMBER/locations/us-central1/endpoints/YOUR-ENDPOINT-ID"
)

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

คุณสามารถดูรหัสปลายทางได้ในส่วนปลายทางของคอนโซลที่นี่

ค้นหารหัสปลายทาง

สุดท้าย ให้คาดการณ์ไปยังปลายทางของคุณโดยคัดลอกและเรียกใช้โค้ดด้านล่างในเซลล์ใหม่

test_instance={
    'Time': 80422,
    'Amount': 17.99,
    'V1': -0.24,
    'V2': -0.027,
    'V3': 0.064,
    'V4': -0.16,
    'V5': -0.152,
    'V6': -0.3,
    'V7': -0.03,
    'V8': -0.01,
    'V9': -0.13,
    'V10': -0.18,
    'V11': -0.16,
    'V12': 0.06,
    'V13': -0.11,
    'V14': 2.1,
    'V15': -0.07,
    'V16': -0.033,
    'V17': -0.14,
    'V18': -0.08,
    'V19': -0.062,
    'V20': -0.08,
    'V21': -0.06,
    'V22': -0.088,
    'V23': -0.03,
    'V24': 0.01,
    'V25': -0.04,
    'V26': -0.99,
    'V27': -0.13,
    'V28': 0.003
}

response = endpoint.predict([test_instance])

print('API response: ', response)

คุณควรเห็นการคาดการณ์ประมาณ .67 สำหรับคลาส 0 ซึ่งหมายความว่าโมเดลคิดว่ามีโอกาส 67% ที่ธุรกรรมนี้ไม่ใช่การฉ้อโกง

🎉 ยินดีด้วย 🎉

คุณได้เรียนรู้วิธีใช้ Vertex AI เพื่อทำสิ่งต่อไปนี้แล้ว

  • อัปโหลดชุดข้อมูลที่มีการจัดการ
  • ฝึกและประเมินโมเดลในข้อมูลแบบตารางโดยใช้ AutoML
  • ทำให้โมเดลใช้งานได้ที่ปลายทาง
  • รับการคาดการณ์บนปลายทางของโมเดลโดยใช้ SDK สำหรับ Vertex

ดูข้อมูลเพิ่มเติมเกี่ยวกับส่วนต่างๆ ของ Vertex AI ได้ในเอกสารประกอบ

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

หากต้องการใช้สมุดบันทึกที่คุณสร้างไว้ในห้องทดลองนี้ต่อไป ขอแนะนำให้คุณปิดสมุดบันทึกเมื่อไม่ได้ใช้งาน จาก Workbench UI ใน Cloud Console ให้เลือกสมุดบันทึก แล้วเลือกหยุด

หากคุณต้องการลบสมุดบันทึกทั้งหมด เพียงคลิกปุ่ม ลบ ที่ด้านบนขวา

หากต้องการลบปลายทางที่ทำให้ใช้งานได้ ให้ไปที่ส่วนปลายทางของคอนโซล Vertex AI และยกเลิกการทำให้โมเดลใช้งานได้จากปลายทางของคุณ

ลบปลายทาง

หากต้องการลบที่เก็บข้อมูลของพื้นที่เก็บข้อมูล โดยใช้เมนูการนำทางใน Cloud Console จากนั้นเรียกดูพื้นที่เก็บข้อมูล เลือกที่เก็บข้อมูล แล้วคลิกลบ:

ลบพื้นที่เก็บข้อมูล