หลังจากตรวจสอบข้อมูลด้วยเทคนิค ทางสถิติและการแสดงข้อมูลผ่านภาพ คุณควรแปลงข้อมูลในรูปแบบที่จะช่วยให้โมเดลของคุณฝึกได้มากขึ้น อย่างมีประสิทธิภาพ เป้าหมายของ การทำให้เป็นมาตรฐาน คือการแปลง ฟีเจอร์ให้อยู่ในระดับที่ใกล้เคียงกัน ตัวอย่างเช่น ลองพิจารณา 2 ข้อต่อไปนี้ ได้แก่
- ฟีเจอร์
X
ครอบคลุมช่วง 154 ถึง 24,917,482 - ฟีเจอร์
Y
ครอบคลุมช่วง 5 ถึง 22
ฟีเจอร์ทั้งสองนี้ครอบคลุมช่วงที่ต่างกันอย่างมาก การปรับให้เป็นมาตรฐานอาจปรับเปลี่ยน
X
และ Y
เพื่อให้ครอบคลุมช่วงที่คล้ายกัน อาจเป็น 0 ถึง 1
การปรับให้เป็นมาตรฐานมีประโยชน์ดังนี้
- ช่วยให้โมเดลประมวลผลได้เร็วขึ้นในระหว่างการฝึก เมื่อจุดสนใจต่างๆ มีช่วงต่างกัน การไล่ระดับสีจะ "ตีกลับ" และการบรรจบกันอย่างช้าๆ แต่เครื่องมือเพิ่มประสิทธิภาพขั้นสูงอื่นๆ เช่น อาดากราด และ Adam ป้องกันปัญหานี้ด้วยการ เปลี่ยนแปลงอัตราการเรียนรู้ที่มีประสิทธิภาพเมื่อเวลาผ่านไป
- ช่วยให้โมเดลอนุมานการคาดการณ์ได้ดีขึ้น เมื่อแต่ละคุณลักษณะมีช่วงต่างกัน ผลลัพธ์ที่ได้ อาจทำให้การคาดคะเน มีประโยชน์น้อยลง
- ช่วยหลีกเลี่ยง "กับดัก NaN" เมื่อค่าของฟีเจอร์สูงมาก
NaN เป็นตัวย่อของ
ไม่ใช่ตัวเลข เมื่อค่าในโมเดลเกินค่า
ขีดจำกัดความแม่นยำของจุดลอยตัว ระบบจะกำหนดค่าเป็น
NaN
แทน จำนวนหนึ่ง เมื่อตัวเลขหนึ่งในโมเดลกลายเป็น NaN ตัวเลขอื่นๆ ใน โมเดลดังกล่าวจะกลายเป็น NaN ในที่สุด - ช่วยให้โมเดลเรียนรู้น้ำหนักที่เหมาะสมสำหรับแต่ละฟีเจอร์ หากไม่มีการปรับขนาดฟีเจอร์ โมเดลจะให้ความสำคัญกับโมเดลมากเกินไป ให้กับสถานที่ที่มีขอบเขตกว้าง และไม่น่าสนใจมากพอกับสถานที่ที่มี ในช่วงที่แคบลง
เราขอแนะนำให้ปรับคุณลักษณะที่เป็นตัวเลขให้เป็นมาตรฐานซึ่งครอบคลุมอย่างชัดเจน
ช่วงต่างๆ (เช่น อายุและรายได้)
นอกจากนี้ เราขอแนะนำให้ปรับคุณลักษณะตัวเลขเดียวที่ครอบคลุมช่วงกว้าง
เช่น city population.
ลองพิจารณาฟีเจอร์ 2 อย่างต่อไปนี้
- ค่าต่ำสุดของฟีเจอร์
A
คือ -0.5 และสูงสุดคือ +0.5 - ค่าต่ำสุดของฟีเจอร์
B
คือ -5.0 และสูงสุดคือ +5.0
ฟีเจอร์ A
และฟีเจอร์ B
มีระยะเวลาที่ค่อนข้างแคบ อย่างไรก็ตาม ฟีเจอร์ B
มีช่วงเวลากว้างกว่าช่วงของฟีเจอร์ A
ถึง 10 เท่า ดังนั้น
- ในช่วงเริ่มต้นการฝึก โมเดลจะถือว่าฟีเจอร์
A
มีค่าเป็น 10 เท่า "สำคัญ" มากกว่า มากกว่าฟีเจอร์B
- การฝึกจะใช้เวลานานกว่าที่ควร
- รูปแบบที่ได้อาจไม่ดีพอ
ความเสียหายโดยรวมที่เกิดจากการไม่ทำให้เป็นมาตรฐานจะมีขนาดเล็ก อย่างไรก็ตาม เรายังคงแนะนำให้ปรับฟีเจอร์ A และฟีเจอร์ B ให้เป็นมาตรฐานเดียวกัน อาจเป็น -1.0 ถึง +1.0
คราวนี้ให้พิจารณาฟีเจอร์ 2 อย่างที่มีช่วงแตกต่างกันมากกว่ากัน:
- ค่าต่ำสุดของฟีเจอร์ "C" คือ -1 และสูงสุดคือ +1
- ค่าต่ำสุดของฟีเจอร์
D
คือ +5,000 และสูงสุดคือ +1,000,000,000
หากคุณไม่ทำให้ฟีเจอร์ C
และฟีเจอร์ D
เป็นมาตรฐาน โมเดลของคุณมีแนวโน้มที่จะ
ด้อยประสิทธิภาพ นอกจากนี้ การฝึกจะใช้เวลานานขึ้นมาก
บรรจบกันหรือแม้แต่ล้มเหลวในการบรรจบกันทั้งหมด!
ส่วนนี้กล่าวถึงวิธีการทำให้ข้อมูลอยู่ในรูปแบบมาตรฐานที่นิยมใช้กัน 3 วิธี ดังนี้
- การปรับสเกลเชิงเส้น
- การปรับขนาดคะแนนมาตรฐาน
- การปรับขนาดบันทึก
ส่วนนี้ยังครอบคลุมถึง การตัดเนื้อหา แม้ว่าจะไม่ เป็นจริง เทคนิคการแปลงข้อมูลเป็นมาตรฐาน การตัดข้อมูลจะสามารถทำให้คุณลักษณะทางตัวเลขที่ไม่ถูกต้อง ซึ่งทำให้โมเดลดีขึ้นได้
การปรับสเกลเชิงเส้น
การปรับขนาดเชิงเส้น (โดยทั่วไปแล้ว ถูกตัดเหลือเพียงการปรับขนาด) หมายถึงการแปลงค่าจุดลอยตัวจาก ช่วงธรรมชาติของช่วงมาตรฐานในช่วงมาตรฐาน โดยทั่วไปคือ 0 ถึง 1 หรือ -1 ถึง +1
การปรับขนาดเชิงเส้นเป็นตัวเลือกที่ดีเมื่อเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้
- ขอบเขตล่างและบนของข้อมูลจะไม่มีการเปลี่ยนแปลงมากนักเมื่อเวลาผ่านไป
- ฟีเจอร์มีค่าผิดปกติน้อยหรือไม่มีเลย และค่าผิดปกติเหล่านั้นไม่ใช่ สูงสุด
- ฟีเจอร์จะกระจายอย่างเท่าเทียมกันโดยประมาณในทุกช่วง กล่าวคือ ฮิสโตแกรมจะแสดงแท่งขนาดเท่าๆ กันสำหรับกลุ่มอายุส่วนใหญ่
สมมติว่ามนุษย์ age
เป็นฟีเจอร์ การปรับสเกลเชิงเส้นเป็นการปรับให้สอดคล้องตามมาตรฐานที่ดี
เทคนิคสำหรับ age
เพราะ:
- ขอบเขตบนและล่างโดยประมาณคือ 0 ถึง 100
age
มีค่าผิดปกติค่อนข้างน้อย เพียงประมาณ 0.3% มีประชากรมากกว่า 100 คน- แม้ว่าบางกลุ่มอายุจะมีการนำเสนอได้ดีกว่า อายุอื่นๆ แต่ ควรมีตัวอย่างที่เพียงพอสำหรับทุกวัย
ตรวจสอบความเข้าใจ
สมมติว่าโมเดลของคุณมีฟีเจอร์ชื่อnet_worth
ที่มีเน็ต
ของผู้คนที่หลากหลาย การปรับสเกลเชิงเส้นเป็นการปรับมาตรฐานที่ดีไหม
เทคนิคสำหรับnet_worth
เพราะเหตุใด
การปรับขนาดคะแนนมาตรฐาน
คะแนน Z คือจำนวนค่าเบี่ยงเบนมาตรฐานที่ค่ามาจากค่าเฉลี่ย เช่น ค่าที่ส่วนเบี่ยงเบนมาตรฐาน 2 ค่ามากกว่าค่าเฉลี่ย มีคะแนน Z ที่ +2.0 ค่าที่ส่วนเบี่ยงเบนมาตรฐาน 1.5 น้อยกว่า ค่าเฉลี่ยมีคะแนน Z เท่ากับ -1.5
การแสดงฟีเจอร์ด้วยการกำหนดคะแนน Z หมายถึงการจัดเก็บสถานที่ คะแนน Z ในเวกเตอร์ของจุดสนใจ ตัวอย่างเช่น รูปต่อไปนี้แสดง ฮิสโตแกรม:
- ทางด้านซ้าย เป็นการกระจายปกติแบบคลาสสิก
- ทางด้านขวา การกระจายเดียวกันทำให้เป็นมาตรฐานด้วยการปรับสเกลคะแนน Z
![รูปที่ 4 ฮิสโตแกรม 2 ตัว: ทั้งคู่แสดงการแจกแจงแบบปกติที่มี
การกระจายที่เหมือนกัน ฮิสโตแกรมแรกซึ่งมีข้อมูลดิบ
มีค่าค่าเฉลี่ยอยู่ที่ 200 และส่วนเบี่ยงเบนมาตรฐานเท่ากับ 30 องค์ประกอบที่ 2
ฮิสโตแกรมที่มีเวอร์ชัน Z-score ของ
การกระจายมีค่าเฉลี่ยเป็น 0 และค่าเบี่ยงเบนมาตรฐานเป็น 1](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=7&hl=th)
การปรับขนาดคะแนนมาตรฐานยังเป็นทางเลือกที่ดีสำหรับข้อมูลเช่นนี้ที่แสดงใน รูปต่อไปนี้ ซึ่งมีการแจกแจงปกติที่คลุมเครือเท่านั้น
![รูปที่ 5 ฮิสโตแกรม 2 รูปที่มีรูปทรงเหมือนกัน แต่ละรูปแสดงด้วยวิธีสูงชัน
ขึ้นไปยังที่ราบสูงแล้วเดินลงอย่างรวดเร็วตามด้วย
ค่อยๆ ลดลง ฮิสโตแกรมหนึ่งแสดง
การกระจายข้อมูลดิบ ฮิสโตแกรมอีกตัวหนึ่งแสดงให้เห็น
การกระจายของข้อมูลดิบเมื่อทำให้เป็นมาตรฐานด้วยการปรับสเกลคะแนน Z
ค่าบนแกน X ของฮิสโตแกรมทั้งสองนั้นแตกต่างกันอย่างมาก
ฮิสโตแกรมข้อมูลดิบครอบคลุมโดเมน 0 ถึง 29,000 ขณะที่
ฮิสโตแกรมที่มีการปรับขนาดคะแนนมาตรฐานตั้งแต่ -1 ไปจนถึงประมาณ +4.8](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=7&hl=th)
คะแนนมาตรฐาน (Z-Score) เป็นตัวเลือกที่ดีเมื่อข้อมูลเป็นไปตามการกระจายปกติหรือ การกระจายที่ค่อนข้างเหมือนกับการกระจายปกติ
โปรดทราบว่าการกระจายบางรายการอาจเป็นเรื่องปกติในกลุ่มของ
แต่ยังมีค่าผิดปกติที่สูงมาก ตัวอย่างเช่น แทบทุกส่วน
คะแนนในฟีเจอร์ net_worth
อาจพอดีกับส่วนเบี่ยงเบนมาตรฐาน 3 ค่าพอดี
แต่ตัวอย่างเล็กๆ น้อยๆ ของฟีเจอร์นี้อาจเป็นค่าเบี่ยงเบนมาตรฐานหลายร้อยค่า
ออกห่างจากค่าเฉลี่ย ในกรณีเหล่านี้ คุณสามารถรวมการปรับสเกลคะแนนมาตรฐาน (Z-Score) กับ
อีกรูปแบบหนึ่งของการปรับให้เป็นมาตรฐาน (มักจะตัดออก) เพื่อจัดการสถานการณ์นี้
แบบฝึกหัด: ตรวจสอบความเข้าใจ
สมมติว่าโมเดลของคุณฝึกในฟีเจอร์ชื่อheight
ที่เก็บผู้ใหญ่
ของผู้หญิง 10 ล้านคน การปรับสเกลคะแนนมาตรฐาน (Z-Score) จะเป็นการปรับมาตรฐานที่ดีไหม
เทคนิคสำหรับheight
เพราะเหตุใด
การปรับขนาดบันทึก
การปรับขนาดบันทึกจะคำนวณลอการิทึมของค่าดิบ ในทางทฤษฎี ลอการิทึมจะเป็นฐานใดก็ได้ ในทางปฏิบัติ การปรับขนาดไฟล์บันทึกจะคำนวณ ลอการิทึมธรรมชาติ (LN)
การปรับขนาดบันทึกจะมีประโยชน์เมื่อข้อมูลสอดคล้องกับการกระจายกฎหมายพลังงาน กล่าวง่ายๆ ก็คือ การกระจายของกฎหมายอำนาจจะมีลักษณะดังต่อไปนี้
- ค่าต่ำสุดของ
X
มีค่าY
สูงมาก - เมื่อค่าของ
X
เพิ่มขึ้น ค่าของY
ก็ลดลงอย่างรวดเร็ว ดังนั้น ค่าของX
ที่สูงจึงมีค่าY
ต่ำมาก
การจัดประเภทภาพยนตร์เป็นตัวอย่างที่ดีของการเผยแพร่กฎอำนาจ ในรายการต่อไปนี้ รูป ข้อสังเกต
- ภาพยนตร์บางเรื่องมีการให้คะแนนจากผู้ใช้จำนวนมาก (ค่า
X
ที่ต่ำจะมีค่าสูงY
) - ภาพยนตร์ส่วนใหญ่มีการให้คะแนนของผู้ใช้น้อยมาก (ค่า
X
ที่สูงจะมีค่าต่ำY
)
การปรับขนาดบันทึกจะเปลี่ยนแปลงการกระจาย ซึ่งจะช่วยฝึกโมเดลที่จะ คาดการณ์ได้ดีขึ้น
ตัวอย่างที่ 2 การขายหนังสือสอดคล้องกับการจัดจำหน่ายตามกฎหมายอำนาจในกรณีต่อไปนี้
- หนังสือที่ตีพิมพ์ส่วนใหญ่ขายแค่ 1-200 เล่มเท่านั้น
- หนังสือบางเล่มขายได้จำนวนปานกลางในหลักพัน
- มีหนังสือขายดีเพียงไม่กี่เล่มเท่านั้นที่ขายได้มากกว่าล้านเล่ม
สมมติว่าคุณกำลังฝึกโมเดลเชิงเส้นเพื่อหาความสัมพันธ์ เช่น ปกหนังสือ เพื่อจองที่จะขาย การฝึกโมเดลเชิงเส้นกับค่าดิบ ต้องหาบางอย่างเกี่ยวกับปกหนังสือในหนังสือที่ขายได้เป็นล้านเล่ม ซึ่งมีประสิทธิภาพมากกว่าปกหนังสือที่ขายได้เพียง 100 เล่มเสียอีก แต่การบันทึกตัวเลขยอดขายทั้งหมดจะทำให้งานเป็นไปได้มากขึ้น เช่น บันทึกของ 100 คือ
~4.6 = ln(100)
ขณะที่บันทึกของ 1,000,000 รายการคือ
~13.8 = ln(1,000,000)
ดังนั้น บันทึกที่มีจำนวน 1,000,000 ข้อความจะใหญ่กว่าบันทึกของ 100 ประมาณ 3 เท่า คุณอาจน่าจะนึกภาพปกหนังสือหนังสือขายดีประมาณ 3 เท่า มีประสิทธิภาพมากขึ้น (ในทางใดทางหนึ่ง) มากกว่าปกหนังสือตัวจิ๋ว
เสียงขาดๆ หายๆ
การตัดคลิปเป็นเทคนิคในการ ลดผลกระทบจากค่าผิดปกติให้น้อยที่สุด โดยสรุปแล้ว การตัดทอนมักจะเป็นตัวพิมพ์ใหญ่ (ลด) ค่าของค่าผิดปกติเป็นค่าสูงสุดเฉพาะ ฟีเจอร์คลิปวิดีโอ แนวคิดแปลกๆ แต่ก็มีประสิทธิภาพอย่างมาก
ตัวอย่างเช่น สมมติว่าชุดข้อมูลมีฟีเจอร์ชื่อ roomsPerPerson
ซึ่งแสดงถึงจำนวนห้อง (ห้องทั้งหมดหารด้วย
ตามจำนวนคนอยู่) สำหรับบ้านหลายแห่ง แผนภูมิต่อไปนี้แสดงให้เห็นว่าในช่วง
99% ของค่าคุณลักษณะสอดคล้องกับการกระจายปกติ (โดยคร่าวๆ ค่าเฉลี่ยของ
1.8 และค่าเบี่ยงเบนมาตรฐานของ 0.7) อย่างไรก็ตาม ฟีเจอร์จะมี
ค่าผิดปกติ 2-3 อย่าง บางส่วนรุนแรง:
![รูปที่ 7 พล็อต roomPerPerson ที่ค่าเกือบทั้งหมด
มีการจับกลุ่มอยู่ระหว่าง 0 ถึง 4 แต่มีหางยาว
มีผู้เข้าร่วมได้ 17 ห้องต่อคน](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=7&hl=th)
คุณจะลดอิทธิพลของค่าผิดปกติต่างๆ ได้อย่างไร เอาล่ะ
ฮิสโตแกรมไม่ใช่การแจกแจงแบบสม่ำเสมอ การกระจายแบบปกติ หรือกฎกำลังไฟฟ้า
แล้วถ้าคุณเพียงแค่จำกัดหรือตัดค่าสูงสุดของ
roomsPerPerson
ในค่าที่กำหนดเอง เช่น 4.0 ใช่ไหม
![พล็อตห้องส่วนบุคคลซึ่งค่าทั้งหมดอยู่ระหว่าง 0 ถึง
4.0 แผนภูมินี้มีรูปทรงระฆัง แต่มีเนินเขาที่ผิดปกติที่ความสูง 4.0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=7&hl=th)
การตัดค่าคุณลักษณะที่ 4.0 ไม่ได้หมายความว่าโมเดลของคุณจะละเว้น สูงกว่า 4.0 แต่หมายความว่าค่าทั้งหมดที่มีค่ามากกว่า จาก 4.0 จะกลายเป็น 4.0 นี่คือภูเขาแปลกๆ ในเวอร์ชัน 4.0 แม้ว่า ในตอนนี้ ชุดคุณลักษณะที่ปรับขนาดมีประโยชน์มากกว่าข้อมูลเดิมแล้ว
โปรดรอสักครู่ ลดค่า Outlier ทั้งหมดให้เป็นค่าสูงสุดที่กำหนดเองได้ไหม หรือไม่ เมื่อฝึกโมเดล ใช่แล้ว
หรือจะตัดค่าออกหลังจากใช้การแปลงเป็นรูปแบบมาตรฐานอื่นๆ ก็ได้ ตัวอย่างเช่น สมมติว่าคุณใช้การปรับสเกลคะแนน Z แต่มีค่าผิดปกติเพียงเล็กน้อย ค่าสัมบูรณ์มากกว่า 3 ในกรณีนี้ คุณสามารถทำสิ่งต่อไปนี้
- คลิปคะแนน Z มากกว่า 3 จะกลายเป็น 3 พอดี
- คลิปคะแนน Z ต่ำกว่า -3 จะกลายเป็น -3 พอดี
การตัดจะป้องกันไม่ให้โมเดลจัดทำดัชนีข้อมูลที่ไม่สำคัญมากเกินไป อย่างไรก็ตาม ค่าผิดปกติบางอย่างมีความสำคัญจริงๆ ดังนั้นค่าคลิปควร พิจารณาอย่างรอบคอบ
สรุปเทคนิคการทำข้อมูลให้เป็นมาตรฐาน
เทคนิคการทำนอร์มัลไลซ์ | สูตร | กรณีที่ควรใช้ |
---|---|---|
การปรับสเกลเชิงเส้น | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | เมื่อสถานที่มีการเผยแพร่อย่างเท่าเทียมกัน เป็นช่วงคงที่ |
การปรับขนาดคะแนนมาตรฐาน | $$ x' = \frac{x - μ}{σ}$$ | เมื่อการกระจายฟีเจอร์ไม่มีค่าสุดโต่ง |
การปรับขนาดบันทึก | $$ x' = log(x)$$ | เมื่อฟีเจอร์เป็นไปตามกฎหมายกำลังไฟฟ้า |
เสียงขาดๆ หายๆ | หาก $x > max$, ตั้งค่า $x' = สูงสุด$ หาก $x < min$, ตั้งค่า $x' = นาที$ |
เมื่อฟีเจอร์มีค่าผิดปกติอย่างมาก |
แบบฝึกหัด: ทดสอบความรู้
สมมติว่าคุณกำลังพัฒนาโมเดลที่คาดการณ์ของศูนย์ข้อมูล
ประสิทธิภาพการทำงานโดยพิจารณาจากอุณหภูมิที่วัดภายในศูนย์ข้อมูล
ค่า temperature
เกือบทั้งหมดในชุดข้อมูลอยู่ในช่วง
ระหว่าง 15 และ 30 (เซลเซียส) โดยมีข้อยกเว้นดังนี้
- 1 หรือ 2 ครั้งต่อปีในวันที่อากาศร้อนจัด จะมีค่า 2-3 ค่าระหว่าง
ระบบจะบันทึก 31 และ 45 ใน
temperature
- ทุกๆ 1,000 จุดใน
temperature
ได้รับการตั้งค่าเป็น 1,000 แทนที่จะเป็นอุณหภูมิจริง
ซึ่งเป็นเทคนิคการปรับให้เป็นมาตรฐานที่สมเหตุสมผลสำหรับ
temperature
ใช่ไหม
ค่า 1,000 เป็นค่าที่ผิดพลาด และควรลบออกแทน ถูกตัด
ค่าระหว่าง 31 ถึง 45 เป็นจุดข้อมูลที่ถูกต้อง การตัดคลิปน่าจะเป็นความคิดที่ดีสำหรับค่าเหล่านี้ โดยสมมติว่า ชุดข้อมูลมีตัวอย่างในช่วงอุณหภูมินี้ไม่เพียงพอที่จะ ฝึกโมเดลเพื่อให้คาดการณ์ได้ดี แต่ในระหว่างการอนุมาน โปรดทราบว่า โมเดลที่ตัดทอนจะสร้างการคาดการณ์เดียวกันสำหรับ อุณหภูมิอยู่ที่ 45 เท่ากับอุณหภูมิที่ 35