หลังจากตรวจสอบข้อมูลผ่านเทคนิคทางสถิติและการแสดงภาพแล้ว คุณควรเปลี่ยนรูปแบบข้อมูลในลักษณะที่จะช่วยให้โมเดลฝึกได้มีประสิทธิภาพมากขึ้น เป้าหมายของการปรับให้เป็นมาตรฐานคือการเปลี่ยนรูปแบบฟีเจอร์ให้มีขนาดใกล้เคียงกัน ตัวอย่างเช่น ลองพิจารณาฟีเจอร์ 2 อย่างต่อไปนี้
- ฟีเจอร์
X
ครอบคลุมช่วง 154 ถึง 24,917,482 - ฟีเจอร์
Y
ครอบคลุมช่วง 5 ถึง 22
ฟีเจอร์ทั้ง 2 นี้ครอบคลุมช่วงที่แตกต่างกันมาก การปรับให้เป็นมาตรฐานอาจจัดการกับ
X
และ Y
เพื่อให้ครอบคลุมช่วงที่คล้ายกัน เช่น 0 ถึง 1
การแปลงเป็นรูปแบบมาตรฐานมีประโยชน์ดังนี้
- ช่วยให้โมเดลบรรจบกันได้เร็วขึ้นระหว่างการฝึก เมื่อฟีเจอร์ต่างๆ มีช่วงที่แตกต่างกัน การไล่ระดับการไล่ระดับอาจ "ดีด" และทำให้การบรรจบช้าลง อย่างไรก็ตาม ตัวเพิ่มประสิทธิภาพขั้นสูงกว่า เช่น Adagrad และ Adam จะป้องกันปัญหานี้โดย เปลี่ยนอัตราการเรียนรู้ที่มีประสิทธิภาพเมื่อเวลาผ่านไป
- ช่วยให้โมเดลอนุมานการคาดการณ์ได้ดียิ่งขึ้น เมื่อฟีเจอร์ต่างๆ มีช่วงที่แตกต่างกัน โมเดลที่ได้อาจทําให้การคาดการณ์มีประโยชน์น้อยลง
- ช่วยหลีกเลี่ยง "NaN Trap" เมื่อค่าฟีเจอร์สูงมาก
NaN เป็นตัวย่อของ
ไม่ใช่ตัวเลข เมื่อค่าในโมเดลเกินขีดจำกัดความแม่นยำของจุดลอย ระบบจะตั้งค่าเป็น
NaN
แทนที่จะเป็นตัวเลข เมื่อตัวเลข 1 ตัวในโมเดลกลายเป็น NaN ตัวเลขอื่นๆ ในโมเดลก็จะกลายเป็น NaN ในที่สุด - ช่วยให้โมเดลเรียนรู้น้ำหนักที่เหมาะสมสำหรับแต่ละฟีเจอร์ หากไม่มีการปรับขนาดฟีเจอร์ โมเดลจะให้ความสนใจกับฟีเจอร์ที่มีช่วงกว้างมากเกินไป และให้ความสนใจกับฟีเจอร์ที่มีช่วงแคบไม่เพียงพอ
เราขอแนะนำให้ปรับฟีเจอร์ที่เป็นตัวเลขซึ่งครอบคลุมช่วงที่แตกต่างกันอย่างชัดเจน (เช่น อายุและรายได้) ให้เป็นมาตรฐาน
นอกจากนี้ เราขอแนะนำให้ปรับฟีเจอร์ตัวเลขเดียวที่ครอบคลุมช่วงกว้าง เช่น city population.
ลองพิจารณาฟีเจอร์ 2 อย่างต่อไปนี้
- ค่าต่ำสุดของฟีเจอร์
A
คือ -0.5 และค่าสูงสุดคือ +0.5 - ค่าต่ำสุดของฟีเจอร์
B
คือ -5.0 และค่าสูงสุดคือ +5.0
ฟีเจอร์ A
และฟีเจอร์ B
มีช่วงที่ค่อนข้างแคบ อย่างไรก็ตาม ช่วงของฟีเจอร์ B
กว้างกว่าช่วงของฟีเจอร์ A
10 เท่า ดังนั้น
- เมื่อเริ่มการฝึก โมเดลจะถือว่าฟีเจอร์
B
"สำคัญ" กว่าฟีเจอร์A
10 เท่า - การฝึกจะใช้เวลานานกว่าที่ควร
- โมเดลที่ได้อาจไม่ดีเท่าที่ควร
ความเสียหายโดยรวมที่เกิดจากการไม่ปรับให้เป็นมาตรฐานจะค่อนข้างน้อย อย่างไรก็ตาม เรายังคงแนะนําให้ปรับฟีเจอร์ ก. และฟีเจอร์ ข. ให้เป็นมาตรฐานในระดับเดียวกัน อาจเป็น -1.0 ถึง +1.0
ตอนนี้ลองพิจารณาฟีเจอร์ 2 รายการที่มีช่วงแตกต่างกันมากขึ้น
- ค่าต่ำสุดของฟีเจอร์
C
คือ -1 และค่าสูงสุดคือ +1 - ค่าต่ำสุดของฟีเจอร์
D
คือ +5000 และค่าสูงสุดคือ +1,000,000,000
หากไม่ได้ทำให้ฟีเจอร์ C
และฟีเจอร์ D
เป็นมาตรฐาน โมเดลของคุณอาจทำงานได้ไม่ดีเท่าที่ควร
นอกจากนี้ การฝึกยังใช้เวลานานกว่ามากในการ
รวมกัน หรืออาจรวมกันไม่สำเร็จเลยก็ได้
ส่วนนี้จะครอบคลุมวิธีการปรับให้เป็นมาตรฐาน 3 วิธีที่นิยมใช้กัน
- การปรับขนาดเชิงเส้น
- การปรับขนาดคะแนนมาตรฐาน (Z-Score)
- การปรับขนาดบันทึก
นอกจากนี้ ส่วนนี้ยังครอบคลุมถึงการตัด แม้ว่าการตัดค่าจะไม่ใช่เทคนิคการปรับให้เป็นมาตรฐานที่แท้จริง แต่ก็ช่วยให้ฟีเจอร์ตัวเลขที่ควบคุมยากอยู่ในช่วงที่สร้างโมเดลได้ดีขึ้น
การปรับสเกลเชิงเส้น
การปรับสเกลเชิงเส้น (โดยทั่วไปมักย่อเป็นการปรับสเกล) หมายถึงการแปลงค่าทศนิยมจากช่วงปกติเป็นช่วงมาตรฐาน ซึ่งมักจะเป็น 0 ถึง 1 หรือ -1 ถึง +1
การปรับขนาดเชิงเส้นเป็นตัวเลือกที่ดีเมื่อเป็นไปตามเงื่อนไขต่อไปนี้ทั้งหมด
- ขอบเขตล่างและขอบเขตบนของข้อมูลไม่เปลี่ยนแปลงมากนักเมื่อเวลาผ่านไป
- ฟีเจอร์มีค่าผิดปกติเพียงเล็กน้อยหรือไม่มีเลย และค่าผิดปกติเหล่านั้นไม่ รุนแรง
- ฟีเจอร์นี้มีการกระจายอย่างสม่ำเสมอโดยประมาณในขอบเขตของฟีเจอร์ กล่าวคือ ฮิสโตแกรมจะแสดงแท่งข้อมูลที่เกือบเท่ากันสำหรับค่าส่วนใหญ่
สมมติว่าage
ของมนุษย์เป็นฟีเจอร์ การปรับขนาดเชิงเส้นเป็นเทคนิคการทําให้เป็นมาตรฐานที่ดีสําหรับ age
เนื่องจาก
- ขอบเขตล่างและบนโดยประมาณคือ 0 ถึง 100
age
มีค่าผิดปกติในสัดส่วนที่ค่อนข้างน้อย มีประชากรเพียงประมาณ 0.3% เท่านั้นที่มีอายุมากกว่า 100 ปี- แม้ว่าอายุบางช่วงจะได้รับการแสดงอย่างเหมาะสมมากกว่าช่วงอื่นๆ แต่ชุดข้อมูลขนาดใหญ่ควรมีตัวอย่างของทุกช่วงอายุอย่างเพียงพอ
แบบฝึกหัด: ทดสอบความเข้าใจ
สมมติว่าโมเดลของคุณมีฟีเจอร์ชื่อnet_worth
ซึ่งมีมูลค่าสุทธิของบุคคลต่างๆ การปรับขนาดเชิงเส้นเป็นเทคนิคการทำให้เป็นปกติที่ดีสำหรับ net_worth
ไหม เพราะเหตุใด
การปรับขนาดคะแนนมาตรฐาน (Z-Score)
คะแนน Z คือจำนวนค่าเบี่ยงเบนมาตรฐานที่ค่าหนึ่งๆ อยู่ห่างจากค่าเฉลี่ย เช่น ค่าที่มากกว่าค่าเฉลี่ย 2 ส่วนเบี่ยงเบนมาตรฐาน จะมีคะแนน Z เท่ากับ +2.0 ค่าที่น้อยกว่าค่าเฉลี่ย 1.5 ส่วนเบี่ยงเบนมาตรฐานจะมีคะแนน Z เท่ากับ -1.5
การแสดงฟีเจอร์ด้วยการปรับขนาด Z-score หมายถึงการจัดเก็บ Z-score ของฟีเจอร์นั้นในเวกเตอร์ฟีเจอร์ ตัวอย่างเช่น รูปที่ต่อไปนี้แสดงฮิสโทแกรม 2 รายการ
- ทางด้านซ้ายคือการกระจายปกติแบบคลาสสิก
- ทางด้านขวาคือการกระจายเดียวกันที่ปรับให้เป็นมาตรฐานโดยการปรับขนาด Z-score

การปรับขนาด Z-score ยังเป็นตัวเลือกที่ดีสำหรับข้อมูลเช่นที่แสดงใน รูปต่อไปนี้ ซึ่งมีการกระจายแบบปกติเพียงเล็กน้อย

คะแนน Z เป็นตัวเลือกที่ดีเมื่อข้อมูลมีการกระจายตามปกติหรือ การกระจายที่คล้ายกับการกระจายตามปกติ
โปรดทราบว่าการกระจายบางอย่างอาจเป็นเรื่องปกติภายในช่วงส่วนใหญ่ แต่ก็ยังคงมีค่าผิดปกติที่มากเกินไป ตัวอย่างเช่น จุดเกือบทั้งหมดในnet_worth
ฟีเจอร์อาจอยู่ในช่วงการเบี่ยงเบนมาตรฐาน 3 รายการ
แต่ตัวอย่างบางส่วนของฟีเจอร์นี้อาจอยู่ห่างจากค่าเฉลี่ยหลายร้อยการเบี่ยงเบนมาตรฐาน
ในกรณีเหล่านี้ คุณสามารถใช้การปรับขนาดคะแนนมาตรฐานร่วมกับ
การปรับค่าปกติรูปแบบอื่น (โดยปกติคือการตัด) เพื่อจัดการกับสถานการณ์นี้
แบบฝึกหัด: ทดสอบความเข้าใจ
สมมติว่าโมเดลของคุณฝึกกับฟีเจอร์ชื่อheight
ซึ่งมีส่วนสูงของผู้หญิงที่เป็นผู้ใหญ่ 10 ล้านคน
การปรับขนาดคะแนนมาตรฐาน (Z-Score) เป็นเทคนิคการทําให้เป็นปกติที่ดีสําหรับ height
ไหม เพราะเหตุใด
การปรับขนาดบันทึก
การปรับขนาดแบบลอการิทึมจะคำนวณลอการิทึมของค่าดิบ ในทางทฤษฎี ลอการิทึมอาจมีฐานใดก็ได้ แต่ในทางปฏิบัติ การปรับขนาดบันทึกมักจะคำนวณ ลอการิทึมธรรมชาติ (ln)
การปรับขนาดแบบลอการิทึมมีประโยชน์เมื่อข้อมูลเป็นไปตามการกระจายกฎกำลัง การแจกแจงกฎกำลังอย่างคร่าวๆ มีลักษณะดังนี้
- ค่า
X
ต่ำจะมีค่าY
สูงมาก - เมื่อค่าของ
X
เพิ่มขึ้น ค่าของY
จะลดลงอย่างรวดเร็ว ดังนั้น ค่าX
ที่สูงจึงมีค่าY
ต่ำมาก
การจัดประเภทภาพยนตร์เป็นตัวอย่างที่ดีของการกระจายแบบกฎกำลัง ในรูปภาพต่อไปนี้ ให้สังเกตสิ่งต่อไปนี้
- ภาพยนตร์บางเรื่องมีคะแนนจากผู้ใช้จำนวนมาก (ค่า
X
ต่ำจะมีค่าY
สูง) - ภาพยนตร์ส่วนใหญ่มีคะแนนจากผู้ใช้น้อยมาก (ค่า
X
สูงจะมีค่าY
ต่ำ)
การปรับขนาดบันทึกจะเปลี่ยนการกระจาย ซึ่งช่วยฝึกโมเดลที่จะ ทำการคาดการณ์ได้ดีขึ้น
ตัวอย่างที่ 2 ยอดขายหนังสือเป็นไปตามการกระจายแบบกฎกำลังเนื่องจาก
- หนังสือที่ตีพิมพ์ส่วนใหญ่ขายได้เพียงไม่กี่เล่ม อาจจะ 100 หรือ 200 เล่ม
- หนังสือบางเล่มขายได้ในระดับปานกลาง ซึ่งก็คือหลักพัน
- มีเพียงหนังสือขายดีไม่กี่เล่มเท่านั้นที่จะขายได้มากกว่า 1 ล้านเล่ม
สมมติว่าคุณกำลังฝึกโมเดลเชิงเส้นเพื่อหาความสัมพันธ์ ของปกหนังสือกับการขายหนังสือ การฝึกโมเดลเชิงเส้นบนค่าดิบจะต้องค้นหาบางอย่างเกี่ยวกับปกหนังสือที่ขายได้ 1 ล้านเล่ม ซึ่งมีประสิทธิภาพมากกว่าปกหนังสือที่ขายได้เพียง 100 เล่มถึง 10,000 เท่า อย่างไรก็ตาม การปรับขนาดบันทึกตัวเลขยอดขายทั้งหมดจะทำให้งานนี้เป็นไปได้มากขึ้น ตัวอย่างเช่น ล็อกของ 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) อย่างไรก็ตาม ฟีเจอร์นี้มี
ค่าผิดปกติอยู่บ้าง ซึ่งบางค่าก็เป็นค่าผิดปกติที่รุนแรง

คุณจะลดอิทธิพลของค่าผิดปกติที่มากเกินไปเหล่านั้นได้อย่างไร ฮิสโทแกรมไม่ใช่การกระจายที่สม่ำเสมอ การกระจายปกติ หรือการกระจายกฎกำลัง
จะเกิดอะไรขึ้นหากคุณเพียงแค่จำกัดหรือตัดค่าสูงสุดของ
roomsPerPerson
ที่ค่าใดก็ได้ เช่น 4.0

การตัดค่าฟีเจอร์ที่ 4.0 ไม่ได้หมายความว่าโมเดลจะละเว้นค่าทั้งหมดที่มากกว่า 4.0 แต่หมายความว่าค่าทั้งหมดที่มากกว่า 4.0 จะกลายเป็น 4.0 ซึ่งอธิบายถึงเนินเขาที่แปลกประหลาดที่ 4.0 แม้ว่า จะมีอุปสรรค แต่ตอนนี้ชุดฟีเจอร์ที่ปรับขนาดแล้วก็มีประโยชน์มากกว่าข้อมูลเดิม
โปรดรอสักครู่ คุณลดค่าผิดปกติทุกค่าให้เป็นขีดจำกัดบนที่กำหนดเองได้จริงหรือ ใช่ เมื่อฝึกโมเดล
นอกจากนี้ คุณยังตัดค่าหลังจากใช้การปรับรูปแบบอื่นๆ ได้ด้วย ตัวอย่างเช่น สมมติว่าคุณใช้การปรับขนาดคะแนนมาตรฐาน แต่ค่าผิดปกติบางค่ามี ค่าสัมบูรณ์มากกว่า 3 มาก ในกรณีนี้ คุณสามารถทำสิ่งต่อไปนี้ได้
- คลิปที่มี Z-score มากกว่า 3 จะกลายเป็น 3
- คลิปคะแนน Z น้อยกว่า -3 จะกลายเป็น -3
การตัดค่าจะป้องกันไม่ให้โมเดลของคุณจัดทำดัชนีข้อมูลที่ไม่สำคัญมากเกินไป อย่างไรก็ตาม ค่าผิดปกติบางค่าอาจมีความสำคัญ ดังนั้นให้ตัดค่าอย่างระมัดระวัง
สรุปเทคนิคการปรับให้เป็นมาตรฐาน
เทคนิคการแปลงเป็นรูปแบบมาตรฐาน | สูตร | กรณีที่ควรใช้ |
---|---|---|
การปรับสเกลเชิงเส้น | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | เมื่อฟีเจอร์นี้กระจายอย่างสม่ำเสมอในขอบเขต แบน |
การปรับขนาดคะแนนมาตรฐาน (Z-Score) | $$ x' = \frac{x - μ}{σ}$$ | เมื่อฟีเจอร์มีการกระจายแบบปกติ (จุดสูงสุดอยู่ใกล้ค่าเฉลี่ย) รูปกระดิ่ง |
การปรับขนาดบันทึก | $$ x' = log(x)$$ | เมื่อการกระจายฟีเจอร์มีความเบ้สูงในด้านใดด้านหนึ่งของหาง หนักรูปหาง |
การตัด | หาก $x > max$ ให้ตั้งค่า $x' = max$ หาก $x < min$ ให้ตั้งค่า $x' = min$ |
เมื่อฟีเจอร์มีค่าผิดปกติที่มากเกินไป |
แบบฝึกหัด: ทดสอบความรู้
สมมติว่าคุณกำลังพัฒนาโมเดลที่คาดการณ์ประสิทธิภาพของศูนย์ข้อมูล
โดยอิงตามอุณหภูมิที่วัดได้ภายในศูนย์ข้อมูล
ค่า temperature
เกือบทั้งหมดในชุดข้อมูลอยู่ระหว่าง 15 ถึง 30 (องศาเซลเซียส) โดยมีข้อยกเว้นดังนี้
- ปีละ 1-2 ครั้ง ในวันที่อากาศร้อนจัด ระบบจะบันทึกค่าระหว่าง 31 ถึง 45 ใน
temperature
- ทุกๆ จุดที่ 1,000 ใน
temperature
จะตั้งค่าเป็น 1,000 แทนที่จะเป็นอุณหภูมิจริง
เทคนิคการทำให้เป็นมาตรฐานที่สมเหตุสมผลสำหรับ
temperature
คืออะไร
ค่า 1,000 เป็นค่าที่ไม่ถูกต้อง และควรลบออกแทนที่จะ ตัด
ค่าระหว่าง 31 ถึง 45 เป็นจุดข้อมูลที่ถูกต้อง การตัดค่าเหล่านี้อาจเป็นความคิดที่ดี สมมติว่าชุดข้อมูลมีตัวอย่างในช่วงอุณหภูมินี้ไม่เพียงพอที่จะฝึกโมเดลให้คาดการณ์ได้ดี อย่างไรก็ตาม ในระหว่างการอนุมาน โปรดทราบว่าโมเดลที่ตัดแล้วจะคาดการณ์อุณหภูมิ 45 เหมือนกับอุณหภูมิ 35