การตรวจสอบความถูกต้องของข้อมูล TensorFlow: การตรวจสอบและวิเคราะห์ข้อมูลของคุณ

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

มีเหตุผลมากมายในการวิเคราะห์และแปลงข้อมูลของคุณ:

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

เครื่องมือ TFX สามารถช่วยค้นหาจุดบกพร่องของข้อมูล และช่วยในด้านวิศวกรรมคุณลักษณะ

การตรวจสอบข้อมูล TensorFlow

ภาพรวม

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

  1. ดำเนินการตรวจสอบความถูกต้องโดยการเปรียบเทียบสถิติข้อมูลกับสคีมาที่ประมวลความคาดหวังของผู้ใช้
  2. ตรวจจับการเบี่ยงเบนของการฝึกอบรมโดยการเปรียบเทียบตัวอย่างในข้อมูลการฝึกอบรมและการให้บริการ
  3. ตรวจจับการเบี่ยงเบนของข้อมูลโดยดูจากชุดข้อมูล

เราจัดทำเอกสารแต่ละฟังก์ชันเหล่านี้แยกกัน:

การตรวจสอบตัวอย่างตามสคีมา

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

โดยทั่วไปแล้ว การตรวจสอบความถูกต้องของข้อมูล Tensorflow จะถูกเรียกใช้หลายครั้งภายในบริบทของไปป์ไลน์ TFX: (i) สำหรับทุกการแยกที่ได้รับจาก ExampleGen, (ii) สำหรับข้อมูลที่แปลงล่วงหน้าทั้งหมดที่ใช้โดย Transform และ (iii) สำหรับข้อมูลหลังการแปลงทั้งหมดที่สร้างโดย แปลง. เมื่อเรียกใช้ในบริบทของ Transform (ii-iii) ตัวเลือกสถิติและข้อจำกัดตามสคีมาสามารถตั้งค่าได้โดยการกำหนด stats_options_updater_fn สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อตรวจสอบความถูกต้องของข้อมูลที่ไม่มีโครงสร้าง (เช่น คุณลักษณะข้อความ) ดู รหัสผู้ใช้ สำหรับตัวอย่าง

คุณสมบัติสคีมาขั้นสูง

ส่วนนี้ครอบคลุมการกำหนดค่าสคีมาขั้นสูงที่สามารถช่วยตั้งค่าพิเศษได้

คุณสมบัติกระจัดกระจาย

การเข้ารหัสคุณลักษณะแบบกระจายในตัวอย่างมักจะแนะนำคุณลักษณะหลายอย่างที่คาดว่าจะมีความจุเท่ากันสำหรับตัวอย่างทั้งหมด ตัวอย่างเช่น คุณลักษณะแบบกระจาย:


WeightedCategories = [('CategoryA', 0.3), ('CategoryX', 0.7)]
จะถูกเข้ารหัสโดยใช้คุณลักษณะแยกต่างหากสำหรับดัชนีและค่า:

WeightedCategoriesIndex = ['CategoryA', 'CategoryX']
WeightedCategoriesValue = [0.3, 0.7]
โดยมีข้อจำกัดว่าความจุของคุณลักษณะดัชนีและค่าควรตรงกันสำหรับตัวอย่างทั้งหมด ข้อจำกัดนี้ทำให้ชัดเจนในสคีมาโดยกำหนด sparse_feature:

sparse_feature {
  name: 'WeightedCategories'
  index_feature { name: 'WeightedCategoriesIndex' }
  value_feature { name: 'WeightedCategoriesValue' }
}

ข้อกำหนดคุณลักษณะแบบกระจายต้องมีดัชนีอย่างน้อยหนึ่งรายการและคุณลักษณะค่าหนึ่งรายการซึ่งอ้างถึงคุณลักษณะที่มีอยู่ในสคีมา การกำหนดคุณสมบัติกระจัดกระจายอย่างชัดเจนช่วยให้ TFDV ตรวจสอบว่าความจุของคุณสมบัติที่อ้างอิงทั้งหมดตรงกัน

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

สภาพแวดล้อมสคีมา

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

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

  • กำหนดสองสภาพแวดล้อมที่แตกต่างกันในสคีมา: ["SERVING", "TRAINING"] และเชื่อมโยง 'LABEL' กับสภาพแวดล้อม "TRAINING" เท่านั้น
  • เชื่อมโยงข้อมูลการฝึกอบรมกับสภาพแวดล้อม "การฝึกอบรม" และข้อมูลการให้บริการกับสภาพแวดล้อม "การให้บริการ"
Schema Generation

สคีมาข้อมูลอินพุตถูกระบุเป็นอินสแตนซ์ของ TensorFlow Schema

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

TFDV รวม infer_schema() เพื่อสร้างสคีมาโดยอัตโนมัติ ตัวอย่างเช่น:

schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)

สิ่งนี้จะทริกเกอร์การสร้างสคีมาโดยอัตโนมัติตามกฎต่อไปนี้:

  • หากสคีมาถูกสร้างขึ้นโดยอัตโนมัติแล้ว สคีมาจะถูกใช้ตามที่เป็นอยู่

  • มิฉะนั้น การตรวจสอบความถูกต้องของข้อมูล TensorFlow จะตรวจสอบสถิติข้อมูลที่มีอยู่และคำนวณสคีมาที่เหมาะสมสำหรับข้อมูล

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

การฝึกอบรม-ให้บริการการตรวจจับเอียง

ภาพรวม

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

ตัวอย่างสถานการณ์

ดู คู่มือเริ่มต้นการตรวจสอบความถูกต้องของข้อมูล TensorFlow สำหรับข้อมูลเกี่ยวกับการกำหนดค่าการตรวจจับความเอียงที่ให้บริการการฝึก

การตรวจจับการดริฟท์

รองรับการตรวจจับการดริฟท์ระหว่างช่วงข้อมูลที่ต่อเนื่องกัน (เช่น ระหว่างช่วง N และช่วง N+1) เช่น ระหว่างวันที่ข้อมูลการฝึกต่างกัน เราแสดงการเบี่ยงเบนในแง่ของ ระยะทาง L-infinity สำหรับคุณสมบัติที่เป็นหมวดหมู่และ ความแตกต่างของ Jensen-Shannon โดยประมาณสำหรับคุณสมบัติตัวเลข คุณสามารถกำหนดระยะทางเกณฑ์เพื่อให้คุณได้รับคำเตือนเมื่อดริฟท์สูงกว่าที่ยอมรับได้ การกำหนดระยะทางที่ถูกต้องมักจะเป็นกระบวนการที่ต้องทำซ้ำซึ่งต้องใช้ความรู้และการทดลองในโดเมน

ดู คู่มือเริ่มต้นการตรวจสอบความถูกต้องของข้อมูล TensorFlow สำหรับข้อมูลเกี่ยวกับการกำหนดค่าการตรวจจับการเลื่อน

การใช้การแสดงข้อมูลเพื่อตรวจสอบข้อมูลของคุณ

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

สถิติคุณสมบัติ

การระบุการกระจายที่น่าสงสัย

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

ข้อมูลไม่สมดุล

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

คุณลักษณะที่ไม่สมดุลที่สุดจะแสดงอยู่ที่ด้านบนสุดของรายการประเภทคุณลักษณะแต่ละรายการ ตัวอย่างเช่น ภาพหน้าจอต่อไปนี้แสดงหนึ่งคุณลักษณะที่เป็นศูนย์ทั้งหมด และส่วนที่สองที่ไม่สมดุลอย่างมาก ที่ด้านบนสุดของรายการ "คุณลักษณะที่เป็นตัวเลข":

การแสดงข้อมูลที่ไม่สมดุล

ข้อมูลที่กระจายอย่างสม่ำเสมอ

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

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

ฮิสโตแกรมของข้อมูลสม่ำเสมอ

ข้อมูลสตริงจะแสดงโดยใช้แผนภูมิแท่งหากมีค่าที่ไม่ซ้ำกัน 20 ค่าหรือน้อยกว่า และจะแสดงเป็นกราฟการกระจายสะสมหากมีค่าที่ไม่ซ้ำมากกว่า 20 ค่า ดังนั้นสำหรับข้อมูลสตริง การแจกแจงแบบสม่ำเสมอสามารถปรากฏเป็นกราฟแท่งแบบแบนเหมือนกับด้านบนหรือแบบเส้นตรงแบบด้านล่าง:

กราฟเส้น: การกระจายสะสมของข้อมูลสม่ำเสมอ

บั๊กที่สามารถสร้างข้อมูลแบบกระจายได้

ต่อไปนี้คือจุดบกพร่องทั่วไปที่สามารถสร้างข้อมูลที่มีการกระจายอย่างสม่ำเสมอ:

  • การใช้สตริงเพื่อแสดงประเภทข้อมูลที่ไม่ใช่สตริง เช่น วันที่ ตัวอย่างเช่น คุณจะมีค่าที่ไม่ซ้ำกันจำนวนมากสำหรับคุณลักษณะวันที่และเวลาที่มีการแสดงเช่น "2017-03-01-11-45-03" ค่าที่ไม่ซ้ำกันจะถูกกระจายอย่างสม่ำเสมอ

  • รวมดัชนีอย่าง "เลขแถว" เป็นคุณสมบัติ ที่นี่อีกครั้งคุณมีค่าที่ไม่ซ้ำกันมากมาย

ไม่มีข้อมูล

วิธีตรวจสอบว่าคุณสมบัติไม่มีค่าทั้งหมดหรือไม่:

  1. เลือก "จำนวนเงินที่ขาดหายไป/ศูนย์" จากเมนูแบบเลื่อนลง "จัดเรียงตาม"
  2. ทำเครื่องหมายที่ช่อง "Reverse order"
  3. ดูที่คอลัมน์ "หายไป" เพื่อดูเปอร์เซ็นต์ของอินสแตนซ์ที่มีค่าขาดหายไปสำหรับจุดสนใจ

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

  1. เลือก "ความยาวของรายการค่า" จากเมนูแบบเลื่อนลง "แผนภูมิที่จะแสดง" ทางด้านขวา

  2. ดูแผนภูมิทางด้านขวาของแถวคุณลักษณะแต่ละแถว แผนภูมิแสดงช่วงความยาวรายการค่าสำหรับคุณลักษณะ ตัวอย่างเช่น แถวที่ไฮไลต์ในภาพหน้าจอด้านล่างแสดงคุณลักษณะที่มีรายการค่าความยาวเป็นศูนย์บางรายการ:

ภาพรวม Facets แสดงพร้อมคุณสมบัติพร้อมรายการค่าคุณสมบัติความยาวเป็นศูนย์

ความแตกต่างขนาดใหญ่ในขนาดระหว่างคุณสมบัติ

หากคุณลักษณะของคุณมีขนาดแตกต่างกันมาก โมเดลอาจมีปัญหาในการเรียนรู้ ตัวอย่างเช่น หากคุณสมบัติบางอย่างแตกต่างกันไปตั้งแต่ 0 ถึง 1 และคุณสมบัติอื่นๆ แตกต่างกันไปตั้งแต่ 0 ถึง 1,000,000,000 คุณจะมีความแตกต่างอย่างมากในด้านขนาด เปรียบเทียบคอลัมน์ "สูงสุด" และ "ต่ำสุด" ในคุณลักษณะต่างๆ เพื่อค้นหามาตราส่วนที่แตกต่างกันอย่างมาก

พิจารณาการปรับค่าคุณลักษณะให้เป็นมาตรฐานเพื่อลดรูปแบบที่หลากหลายเหล่านี้

ฉลากที่มีป้ายกำกับไม่ถูกต้อง

เครื่องมือประมาณการของ TensorFlow มีข้อจำกัดเกี่ยวกับประเภทของข้อมูลที่ยอมรับเป็นป้ายกำกับ ตัวอย่างเช่น ตัวแยกประเภทไบนารีมักใช้งานได้กับป้ายกำกับ {0, 1} เท่านั้น

ตรวจสอบค่าป้ายกำกับในภาพรวมข้อมูลประกอบ และตรวจสอบว่าเป็นไปตาม ข้อกำหนดของผู้ประมาณการ