เมื่อข้อมูลของคุณอยู่ในไปป์ไลน์ TFX คุณสามารถใช้ส่วนประกอบ TFX เพื่อวิเคราะห์และแปลงข้อมูลได้ คุณสามารถใช้เครื่องมือเหล่านี้ได้ก่อนที่คุณจะฝึกโมเดลด้วยซ้ำ
มีเหตุผลหลายประการในการวิเคราะห์และแปลงข้อมูลของคุณ:
- เพื่อค้นหาปัญหาในข้อมูลของคุณ ปัญหาที่พบบ่อยได้แก่:
- ข้อมูลหายไป เช่น คุณลักษณะที่มีค่าว่าง
- ป้ายกำกับถือเป็นคุณลักษณะ เพื่อให้โมเดลของคุณได้เห็นคำตอบที่ถูกต้องระหว่างการฝึก
- คุณลักษณะที่มีค่าอยู่นอกช่วงที่คุณคาดหวัง
- ความผิดปกติของข้อมูล
- โมเดล Transfer Learn มีการประมวลผลล่วงหน้าที่ไม่ตรงกับข้อมูลการฝึก
- เพื่อสร้างชุดคุณลักษณะที่มีประสิทธิภาพมากขึ้น ตัวอย่างเช่น คุณสามารถระบุ:
- คุณสมบัติการให้ข้อมูลโดยเฉพาะ
- คุณสมบัติที่ซ้ำซ้อน
- คุณลักษณะที่มีขนาดแตกต่างกันอย่างมากจนอาจทำให้การเรียนรู้ช้าลง
- คุณลักษณะที่มีข้อมูลการคาดการณ์เฉพาะเพียงเล็กน้อยหรือไม่มีเลย
เครื่องมือ 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' สำหรับการฝึก แต่คาดว่าจะหายไปจากการให้บริการ สิ่งนี้สามารถแสดงได้โดย:
- กำหนดสภาพแวดล้อมที่แตกต่างกันสองรายการในสคีมา: ["การให้บริการ", "การฝึกอบรม"] และเชื่อมโยง 'LABEL' กับสภาพแวดล้อม "การฝึกอบรม" เท่านั้น
- เชื่อมโยงข้อมูลการฝึกอบรมกับสภาพแวดล้อม "การฝึกอบรม" และข้อมูลการให้บริการกับสภาพแวดล้อม "การให้บริการ"
การสร้างสคีมา
สคีมาข้อมูลอินพุตถูกระบุเป็นอินสแตนซ์ของ สคีมา TensorFlow
แทนที่จะสร้างสคีมาด้วยตนเองตั้งแต่เริ่มต้น นักพัฒนาสามารถพึ่งพาการสร้างสคีมาอัตโนมัติของ TensorFlow Data Validation ได้ โดยเฉพาะอย่างยิ่ง TensorFlow Data Validation จะสร้างสคีมาเริ่มต้นโดยอัตโนมัติตามสถิติที่คำนวณจากข้อมูลการฝึกที่มีอยู่ในไปป์ไลน์ ผู้ใช้สามารถตรวจสอบสคีมาที่สร้างขึ้นอัตโนมัตินี้ แก้ไขได้ตามต้องการ ตรวจสอบในระบบควบคุมเวอร์ชัน และพุชเข้าไปในไปป์ไลน์อย่างชัดเจนเพื่อตรวจสอบเพิ่มเติม
TFDV รวม infer_schema()
เพื่อสร้างสคีมาโดยอัตโนมัติ ตัวอย่างเช่น:
schema = tfdv.infer_schema(statistics=train_stats)
tfdv.display_schema(schema=schema)
ซึ่งจะทริกเกอร์การสร้างสคีมาอัตโนมัติตามกฎต่อไปนี้:
หากสคีมาถูกสร้างขึ้นโดยอัตโนมัติแล้ว สคีมาก็จะถูกใช้เหมือนเดิม
มิฉะนั้น การตรวจสอบความถูกต้องของข้อมูล TensorFlow จะตรวจสอบสถิติข้อมูลที่มีอยู่และคำนวณสคีมาที่เหมาะสมสำหรับข้อมูล
หมายเหตุ: สคีมาที่สร้างขึ้นอัตโนมัติจะใช้ความพยายามอย่างดีที่สุด และพยายามอนุมานคุณสมบัติพื้นฐานของข้อมูลเท่านั้น คาดว่าผู้ใช้จะตรวจสอบและแก้ไขตามความจำเป็น
การตรวจจับการเอียงการให้บริการการฝึกอบรม
ภาพรวม
การตรวจสอบความถูกต้องของข้อมูล TensorFlow สามารถตรวจจับการบิดเบือนการกระจายระหว่างข้อมูลการฝึกและการให้บริการ การบิดเบือนการกระจายเกิดขึ้นเมื่อการกระจายค่าคุณลักษณะสำหรับข้อมูลการฝึกแตกต่างอย่างมากจากข้อมูลการแสดงผล สาเหตุสำคัญประการหนึ่งที่ทำให้การกระจายข้อมูลบิดเบือนคือการใช้คลังข้อมูลที่แตกต่างกันโดยสิ้นเชิงสำหรับการฝึกการสร้างข้อมูลเพื่อเอาชนะการขาดข้อมูลเริ่มต้นในคลังข้อมูลที่ต้องการ อีกเหตุผลหนึ่งคือกลไกการสุ่มตัวอย่างที่ผิดพลาดซึ่งเลือกเฉพาะตัวอย่างย่อยของข้อมูลการให้บริการที่จะฝึกเท่านั้น
สถานการณ์ตัวอย่าง
ดู คู่มือเริ่มต้นใช้งานการตรวจสอบความถูกต้องของข้อมูล TensorFlow สำหรับข้อมูลเกี่ยวกับการกำหนดค่าการตรวจจับการเอียงที่ให้บริการการฝึกอบรม
การตรวจจับดริฟท์
การตรวจจับการดริฟท์ได้รับการสนับสนุนระหว่างช่วงข้อมูลต่อเนื่องกัน (เช่น ระหว่างช่วง N และช่วง N+1) เช่น ระหว่างวันที่ต่างกันของข้อมูลการฝึก เราแสดงค่าดริฟท์ในแง่ของ ระยะทาง L-อนันต์ สำหรับคุณสมบัติที่เป็นหมวดหมู่ และ ค่าไดเวอร์เจนซ์ของเจนเซน-แชนนอน โดยประมาณสำหรับคุณสมบัติเชิงตัวเลข คุณสามารถกำหนดระยะทางเกณฑ์เพื่อให้คุณได้รับคำเตือนเมื่อค่าดริฟท์สูงกว่าที่ยอมรับได้ โดยทั่วไปการกำหนดระยะทางที่ถูกต้องนั้นเป็นกระบวนการที่ต้องทำซ้ำซึ่งต้องใช้ความรู้ด้านโดเมนและการทดลอง
ดู คู่มือเริ่มต้นใช้งานการตรวจสอบความถูกต้องของข้อมูล TensorFlow สำหรับข้อมูลเกี่ยวกับการกำหนดค่าการตรวจจับดริฟท์
การใช้การแสดงภาพเพื่อตรวจสอบข้อมูลของคุณ
การตรวจสอบความถูกต้องของข้อมูล TensorFlow มีเครื่องมือสำหรับการแสดงภาพการกระจายค่าคุณลักษณะ ด้วยการตรวจสอบการแจกแจงเหล่านี้ในสมุดบันทึก Jupyter โดยใช้ Facets คุณสามารถตรวจพบปัญหาทั่วไปเกี่ยวกับข้อมูลได้
การระบุการกระจายที่น่าสงสัย
คุณสามารถระบุจุดบกพร่องทั่วไปในข้อมูลของคุณได้โดยใช้การแสดงภาพรวม Facets เพื่อค้นหาการกระจายค่าคุณสมบัติที่น่าสงสัย
ข้อมูลไม่สมดุล
คุณลักษณะที่ไม่สมดุลคือคุณลักษณะที่มีค่ามากกว่าค่าหนึ่ง คุณสมบัติที่ไม่สมดุลสามารถเกิดขึ้นได้ตามธรรมชาติ แต่หากคุณสมบัตินั้นมีค่าเท่ากันเสมอ คุณอาจมีข้อบกพร่องของข้อมูล หากต้องการตรวจหาคุณลักษณะที่ไม่สมดุลในภาพรวม Facets ให้เลือก "ความไม่สม่ำเสมอ" จากเมนูแบบเลื่อนลง "จัดเรียงตาม"
คุณสมบัติที่ไม่สมดุลที่สุดจะแสดงอยู่ที่ด้านบนของรายการประเภทคุณสมบัติแต่ละรายการ เช่น ภาพหน้าจอต่อไปนี้แสดงฟีเจอร์หนึ่งที่เป็นศูนย์ทั้งหมด และฟีเจอร์วินาทีที่ไม่สมดุลอย่างมาก ที่ด้านบนของรายการ "ฟีเจอร์ตัวเลข"
ข้อมูลที่กระจายอย่างสม่ำเสมอ
คุณลักษณะที่มีการกระจายสม่ำเสมอคือคุณลักษณะหนึ่งที่ค่าที่เป็นไปได้ทั้งหมดปรากฏขึ้นโดยมีความถี่ใกล้เคียงกัน เช่นเดียวกับข้อมูลที่ไม่สมดุล การกระจายนี้สามารถเกิดขึ้นได้ตามธรรมชาติ แต่ก็สามารถเกิดขึ้นได้จากจุดบกพร่องของข้อมูลเช่นกัน
หากต้องการตรวจหาคุณลักษณะที่กระจายสม่ำเสมอในภาพรวม Facets ให้เลือก "ความไม่สม่ำเสมอ" จากเมนูแบบเลื่อนลง "จัดเรียงตาม" และทำเครื่องหมายที่ช่องทำเครื่องหมาย "ลำดับย้อนกลับ":
ข้อมูลสตริงจะแสดงโดยใช้แผนภูมิแท่งหากมีค่าที่ไม่ซ้ำกัน 20 ค่าหรือน้อยกว่า และเป็นกราฟการกระจายสะสมหากมีค่าที่ไม่ซ้ำกันมากกว่า 20 ค่า ดังนั้นสำหรับข้อมูลสตริง การแจกแจงแบบสม่ำเสมออาจปรากฏเป็นกราฟแท่งแบนเหมือนกราฟแท่งด้านบนหรือเส้นตรงเหมือนกราฟด้านล่าง:
จุดบกพร่องที่สามารถสร้างข้อมูลที่มีการกระจายอย่างสม่ำเสมอ
ต่อไปนี้เป็นข้อบกพร่องทั่วไปบางประการที่สามารถสร้างข้อมูลที่มีการกระจายสม่ำเสมอ:
การใช้สตริงเพื่อแสดงชนิดข้อมูลที่ไม่ใช่สตริง เช่น วันที่ ตัวอย่างเช่น คุณจะมีค่าที่ไม่ซ้ำกันจำนวนมากสำหรับคุณลักษณะวันที่และเวลาที่มีการแสดงเช่น "2017-03-01-11-45-03" ค่าที่ไม่ซ้ำจะถูกกระจายอย่างสม่ำเสมอ
รวมดัชนีเช่น "หมายเลขแถว" เป็นคุณลักษณะ คุณมีคุณค่าที่ไม่ซ้ำใครมากมายที่นี่อีกครั้ง
ข้อมูลหายไป
หากต้องการตรวจสอบว่าคุณลักษณะขาดหายไปโดยสิ้นเชิงหรือไม่ ให้ทำดังนี้
- เลือก "จำนวนขาดหายไป/ศูนย์" จากเมนูแบบเลื่อนลง "จัดเรียงตาม"
- ทำเครื่องหมายที่ช่อง "ลำดับย้อนกลับ"
- ดูคอลัมน์ "หายไป" เพื่อดูเปอร์เซ็นต์ของอินสแตนซ์ที่มีค่าที่ขาดหายไปสำหรับคุณลักษณะหนึ่งๆ
ข้อบกพร่องของข้อมูลอาจทำให้ค่าคุณลักษณะไม่สมบูรณ์ได้ ตัวอย่างเช่น คุณอาจคาดหวังว่ารายการค่าของคุณลักษณะจะมีสามองค์ประกอบเสมอ และพบว่าบางครั้งอาจมีเพียงองค์ประกอบเดียวเท่านั้น หากต้องการตรวจสอบค่าที่ไม่สมบูรณ์หรือกรณีอื่นๆ ที่รายการค่าฟีเจอร์ไม่มีองค์ประกอบตามจำนวนที่คาดหวัง ให้ทำดังนี้
เลือก "ความยาวรายการมูลค่า" จากเมนูแบบเลื่อนลง "แผนภูมิที่จะแสดง" ทางด้านขวา
ดูแผนภูมิทางด้านขวาของแถวคุณลักษณะแต่ละแถว แผนภูมิแสดงช่วงความยาวรายการค่าสำหรับคุณลักษณะนี้ ตัวอย่างเช่น แถวที่ไฮไลต์ในภาพหน้าจอด้านล่างแสดงคุณลักษณะที่มีรายการค่าที่มีความยาวเป็นศูนย์:
ความแตกต่างอย่างมากในมาตราส่วนระหว่างคุณสมบัติ
หากคุณลักษณะของคุณแตกต่างกันอย่างมากในขนาด โมเดลอาจมีปัญหาในการเรียนรู้ ตัวอย่างเช่น หากคุณลักษณะบางอย่างแตกต่างกันไปตั้งแต่ 0 ถึง 1 และคุณสมบัติอื่นๆ แตกต่างกันไปตั้งแต่ 0 ถึง 1,000,000,000 คุณจะมีขนาดที่แตกต่างกันมาก เปรียบเทียบคอลัมน์ "สูงสุด" และ "ต่ำสุด" ตามคุณลักษณะต่างๆ เพื่อค้นหาระดับที่แตกต่างกันอย่างมาก
พิจารณาการปรับค่าคุณลักษณะให้เป็นมาตรฐานเพื่อลดความผันแปรในวงกว้างเหล่านี้
ป้ายกำกับที่มีป้ายกำกับไม่ถูกต้อง
ตัวประมาณค่าของ TensorFlow มีข้อจำกัดเกี่ยวกับประเภทของข้อมูลที่ยอมรับเป็นป้ายกำกับ ตัวอย่างเช่น โดยทั่วไปตัวแยกประเภทไบนารีจะใช้งานได้กับป้ายกำกับ {0, 1} เท่านั้น
ตรวจสอบค่าป้ายกำกับในภาพรวมแง่มุม และตรวจสอบให้แน่ใจว่าค่าเหล่านี้เป็นไปตาม ข้อกำหนดของเครื่องมือประมาณค่า