เมื่อข้อมูลของคุณอยู่ในไปป์ไลน์ TFX คุณสามารถใช้ส่วนประกอบ TFX เพื่อวิเคราะห์และแปลงได้ คุณสามารถใช้เครื่องมือเหล่านี้ก่อนที่คุณจะฝึกโมเดล
มีเหตุผลมากมายในการวิเคราะห์และแปลงข้อมูลของคุณ:
- เพื่อค้นหาปัญหาในข้อมูลของคุณ ปัญหาทั่วไป ได้แก่ :
- ข้อมูลที่ขาดหายไป เช่น คุณลักษณะที่มีค่าว่าง
- ป้ายกำกับถือเป็นคุณสมบัติ เพื่อให้โมเดลของคุณมองเห็นคำตอบที่ถูกต้องระหว่างการฝึก
- คุณลักษณะที่มีค่านอกช่วงที่คุณคาดหวัง
- ความผิดปกติของข้อมูล
- แบบจำลองการโอนข้อมูลที่เรียนรู้มีการประมวลผลล่วงหน้าที่ไม่ตรงกับข้อมูลการฝึก
- เพื่อสร้างชุดคุณลักษณะที่มีประสิทธิภาพยิ่งขึ้น ตัวอย่างเช่น คุณสามารถระบุ:
- โดยเฉพาะอย่างยิ่งคุณสมบัติข้อมูล
- คุณสมบัติซ้ำซ้อน
- คุณลักษณะที่มีขนาดแตกต่างกันมากจนอาจเรียนรู้ได้ช้า
- คุณลักษณะที่มีข้อมูลการทำนายเฉพาะเพียงเล็กน้อยหรือไม่มีเลย
เครื่องมือ TFX สามารถช่วยค้นหาจุดบกพร่องของข้อมูล และช่วยในด้านวิศวกรรมคุณลักษณะ
การตรวจสอบข้อมูล TensorFlow
ภาพรวม
การตรวจสอบความถูกต้องของข้อมูล TensorFlow จะระบุความผิดปกติในการฝึกอบรมและการให้บริการข้อมูล และสามารถสร้างสคีมาโดยอัตโนมัติด้วยการตรวจสอบข้อมูล คอมโพเนนต์สามารถกำหนดค่าให้ตรวจจับคลาสต่างๆ ของความผิดปกติในข้อมูลได้ มันสามารถ
- ดำเนินการตรวจสอบความถูกต้องโดยการเปรียบเทียบสถิติข้อมูลกับสคีมาที่ประมวลความคาดหวังของผู้ใช้
- ตรวจจับการเบี่ยงเบนของการฝึกอบรมโดยการเปรียบเทียบตัวอย่างในข้อมูลการฝึกอบรมและการให้บริการ
- ตรวจจับการเบี่ยงเบนของข้อมูลโดยดูจากชุดข้อมูล
เราจัดทำเอกสารแต่ละฟังก์ชันเหล่านี้แยกกัน:
การตรวจสอบตัวอย่างตามสคีมา
การตรวจสอบความถูกต้องของข้อมูล 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" ค่าที่ไม่ซ้ำกันจะถูกกระจายอย่างสม่ำเสมอ
รวมดัชนีอย่าง "เลขแถว" เป็นคุณสมบัติ ที่นี่อีกครั้งคุณมีค่าที่ไม่ซ้ำกันมากมาย
ไม่มีข้อมูล
วิธีตรวจสอบว่าคุณสมบัติไม่มีค่าทั้งหมดหรือไม่:
- เลือก "จำนวนเงินที่ขาดหายไป/ศูนย์" จากเมนูแบบเลื่อนลง "จัดเรียงตาม"
- ทำเครื่องหมายที่ช่อง "Reverse order"
- ดูที่คอลัมน์ "หายไป" เพื่อดูเปอร์เซ็นต์ของอินสแตนซ์ที่มีค่าขาดหายไปสำหรับจุดสนใจ
ข้อบกพร่องของข้อมูลอาจทำให้ค่าคุณสมบัติไม่สมบูรณ์ ตัวอย่างเช่น คุณอาจคาดหวังว่ารายการค่าของคุณลักษณะจะมีองค์ประกอบสามอย่างเสมอ และพบว่าบางครั้งมีเพียงองค์ประกอบเดียว วิธีตรวจสอบค่าที่ไม่สมบูรณ์หรือกรณีอื่นๆ ที่รายการค่าคุณลักษณะไม่มีจำนวนองค์ประกอบที่คาดไว้:
เลือก "ความยาวของรายการค่า" จากเมนูแบบเลื่อนลง "แผนภูมิที่จะแสดง" ทางด้านขวา
ดูแผนภูมิทางด้านขวาของแถวคุณลักษณะแต่ละแถว แผนภูมิแสดงช่วงความยาวรายการค่าสำหรับคุณลักษณะ ตัวอย่างเช่น แถวที่ไฮไลต์ในภาพหน้าจอด้านล่างแสดงคุณลักษณะที่มีรายการค่าความยาวเป็นศูนย์บางรายการ:
ความแตกต่างขนาดใหญ่ในขนาดระหว่างคุณสมบัติ
หากคุณลักษณะของคุณมีขนาดแตกต่างกันมาก โมเดลอาจมีปัญหาในการเรียนรู้ ตัวอย่างเช่น หากคุณสมบัติบางอย่างแตกต่างกันไปตั้งแต่ 0 ถึง 1 และคุณสมบัติอื่นๆ แตกต่างกันไปตั้งแต่ 0 ถึง 1,000,000,000 คุณจะมีความแตกต่างอย่างมากในด้านขนาด เปรียบเทียบคอลัมน์ "สูงสุด" และ "ต่ำสุด" ในคุณลักษณะต่างๆ เพื่อค้นหามาตราส่วนที่แตกต่างกันอย่างมาก
พิจารณาการปรับค่าคุณลักษณะให้เป็นมาตรฐานเพื่อลดรูปแบบที่หลากหลายเหล่านี้
ฉลากที่มีป้ายกำกับไม่ถูกต้อง
เครื่องมือประมาณการของ TensorFlow มีข้อจำกัดเกี่ยวกับประเภทของข้อมูลที่ยอมรับเป็นป้ายกำกับ ตัวอย่างเช่น ตัวแยกประเภทไบนารีมักใช้งานได้กับป้ายกำกับ {0, 1} เท่านั้น
ตรวจสอบค่าป้ายกำกับในภาพรวมข้อมูลประกอบ และตรวจสอบว่าเป็นไปตาม ข้อกำหนดของผู้ประมาณการ