หลังจากตรวจสอบข้อมูลผ่านเทคนิคทางสถิติและการแสดงภาพแล้ว คุณควรเปลี่ยนรูปแบบข้อมูลในลักษณะที่จะช่วยให้โมเดลได้รับการฝึกอย่างมีประสิทธิภาพมากขึ้น เป้าหมายของการทำให้เป็นมาตรฐานคือการเปลี่ยนรูปแบบฟีเจอร์ให้ทำงานได้ในระดับเดียวกัน ตัวอย่างเช่น ลองพิจารณาฟีเจอร์ 2 อย่างต่อไปนี้
- ฟีเจอร์
X
อยู่ในช่วง 154 ถึง 24,917,482 - ฟีเจอร์
Y
อยู่ในช่วง 5 ถึง 22
ฟีเจอร์ทั้ง 2 อย่างนี้มีช่วงที่แตกต่างกันมาก การปรับมาตรฐานอาจปรับเปลี่ยน X
และ Y
เพื่อให้ครอบคลุมช่วงที่คล้ายกัน ซึ่งอาจจะเป็น 0 ถึง 1
การแปลงค่าให้เป็นมาตรฐานมีประโยชน์ดังนี้
- ช่วยให้โมเดลเข้าใกล้ค่าที่ถูกต้องได้เร็วขึ้นระหว่างการฝึก เมื่อจุดสนใจต่างๆ มีช่วงต่างกัน การไล่ระดับสีจะ "ตีกลับ" และบรรจบกันช้าๆ อย่างไรก็ตาม เครื่องมือเพิ่มประสิทธิภาพขั้นสูงอย่าง Adagrad และ Adam จะป้องกันปัญหานี้ด้วยการเปลี่ยนอัตราการเรียนรู้ที่มีประสิทธิภาพเมื่อเวลาผ่านไป
- ช่วยให้โมเดลคาดการณ์ได้ดีขึ้น เมื่อฟีเจอร์ต่างๆ มีช่วงต่างกัน โมเดลที่ได้อาจทําการคาดการณ์ที่มีประโยชน์น้อยลง
- ช่วยหลีกเลี่ยง "กับดัก NaN" เมื่อค่าของฟีเจอร์สูงมาก
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 เท่า - การฝึกอบรมจะใช้เวลานานกว่าที่ควรจะเป็น
- รูปแบบที่ได้อาจไม่ดีพอ
ความเสียหายโดยรวมที่เกิดจากการไม่ปรับให้เป็นมาตรฐานจะมีขนาดค่อนข้างเล็ก แต่เรายังคงแนะนำให้ปรับฟีเจอร์ A และฟีเจอร์ B ให้เป็นมาตรฐานเดียวกัน โดยอาจเป็น -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 คือจํานวนค่าเบี่ยงเบนมาตรฐานของค่าหนึ่งๆ จากค่าเฉลี่ย เช่น ค่าที่เบี่ยงเบนมาตรฐาน 2 ค่ามากกว่าค่าเฉลี่ยมีคะแนน Z เป็น +2.0 ค่าที่น้อยกว่าค่ามัธยฐาน 1.5 ส่วนเบี่ยงเบนมาตรฐานมีค่า Z-Score เป็น -1.5
การนําเสนอองค์ประกอบด้วยการปรับขนาด Z-Score หมายถึงการจัดเก็บ Z-Score ขององค์ประกอบนั้นในเวกเตอร์องค์ประกอบ เช่น รูปภาพต่อไปนี้แสดงฮิสโตแกรม 2 รายการ
- ทางด้านซ้าย เป็นการกระจายปกติแบบคลาสสิก
- ทางด้านขวา การกระจายเดียวกันทำให้เป็นมาตรฐานด้วยการปรับสเกลคะแนน Z
การปรับขนาดคะแนน z ยังเป็นตัวเลือกที่ดีสําหรับข้อมูลอย่างเช่นที่แสดงในรูปภาพต่อไปนี้ ซึ่งมีเพียงการแจกแจงแบบปกติเพียงเล็กน้อย
ค่า z เป็นตัวเลือกที่ดีเมื่อข้อมูลเป็นไปตามการแจกแจงแบบปกติหรือการแจกแจงที่คล้ายกับการแจกแจงแบบปกติ
โปรดทราบว่าการแจกแจงบางรายการอาจเป็นไปตามปกติในช่วงส่วนใหญ่ แต่ยังคงมีค่าที่ผิดปกติอย่างมาก ตัวอย่างเช่น จุดเกือบทั้งหมดในฟีเจอร์ net_worth
อาจพอดีกับค่าเบี่ยงเบนมาตรฐาน 3 อย่างพอดี แต่บางตัวอย่างของฟีเจอร์นี้อาจเป็นค่าเบี่ยงเบนมาตรฐานหลายร้อยที่นอกเหนือจากค่าเฉลี่ย ในกรณีเหล่านี้ คุณสามารถรวมการปรับสเกลคะแนนมาตรฐาน (Z-Score) เข้ากับอีกรูปแบบหนึ่งของการปรับให้เป็นมาตรฐาน (โดยปกติคือการตัดเนื้อหา) เพื่อจัดการกับสถานการณ์นี้ได้
แบบฝึกหัด: ทดสอบความเข้าใจ
สมมติว่าโมเดลของคุณฝึกกับฟีเจอร์ชื่อheight
ที่มีข้อมูลความสูงของผู้หญิงวัยผู้ใหญ่ 10 ล้านคน การปรับสเกล Z-Score เป็นเทคนิคการปรับให้เป็นมาตรฐานที่ดีสำหรับ height
ไหม เพราะเหตุใด
การปรับขนาดบันทึก
การแปลงข้อมูลเป็นลําดับเลขฐาน 10 จะคํานวณลอการิทึมของค่าดิบ ในทางทฤษฎี ลอการิทึมอาจเป็นฐานใดก็ได้ ในทางปฏิบัติแล้ว การปรับขนาดลอการิทึมจะคำนวณลอการิทึมธรรมชาติ (LN)
การกําหนดขนาดข้อมูลแบบลอจิกมีประโยชน์เมื่อข้อมูลเป็นไปตามการแจกแจงแบบกฎกำลัง กล่าวง่ายๆ ก็คือ การกระจายของกฎหมายอำนาจจะมีลักษณะดังต่อไปนี้
- ค่าต่ำของ
X
มีค่าY
สูงมาก - เมื่อค่าของ
X
เพิ่มขึ้น ค่าของY
จะลดลงอย่างรวดเร็ว ดังนั้นX
ที่มีค่าสูงจึงมีY
ที่มีค่าต่ำมาก
การจัดประเภทภาพยนตร์เป็นตัวอย่างที่ดีของการแจกแจงเชิงกำลัง ในรูปภาพต่อไปนี้ ให้สังเกตสิ่งต่อไปนี้
- ภาพยนตร์บางเรื่องมีคะแนนจากผู้ใช้จำนวนมาก (ค่าต่ำของ
X
มีค่าY
สูง) - ภาพยนตร์ส่วนใหญ่มีการให้คะแนนของผู้ใช้น้อยมาก (ค่า
X
ที่สูงมีค่าY
ที่ต่ำ)
การปรับขนาดข้อมูลบันทึกจะเปลี่ยนการแจกแจง ซึ่งช่วยฝึกโมเดลที่จะทําการคาดการณ์ได้ดีขึ้น
ตัวอย่างที่ 2 คือ ยอดขายหนังสือเป็นไปตามการแจกแจงแบบกำลังเนื่องจาก
- หนังสือที่ตีพิมพ์ส่วนใหญ่ขายแค่ 1-200 เล่มเท่านั้น
- หนังสือบางเล่มขายได้จำนวนพอสมควร ประมาณหลายพันเล่ม
- มีเพียงหนังสือขายดีไม่กี่เล่มเท่านั้นที่จะขายได้มากกว่า 1 ล้านเล่ม
สมมติว่าคุณกําลังฝึกโมเดลเชิงเส้นเพื่อหาความสัมพันธ์ของสิ่งต่างๆ เช่น ปกหนังสือกับยอดขายหนังสือ การฝึกโมเดลเชิงเส้นเกี่ยวกับมูลค่าดิบจะต้องหาข้อมูลเกี่ยวกับปกหนังสือในหนังสือที่ขายได้ 1 ล้านเล่ม ซึ่งมีประสิทธิภาพมากกว่าปกหนังสือที่ขายได้เพียง 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) อย่างไรก็ตาม ฟีเจอร์นี้มีข้อผิดพลาดบางประการ ซึ่งบางรายการก็รุนแรง
คุณลดอิทธิพลของค่าผิดปกติสุดขั้วเหล่านั้นได้อย่างไร ฮิสโตแกรมไม่ใช่การแจกแจงแบบสม่ำเสมอ การแจกแจงแบบปกติ หรือการแจกแจงแบบกฎกำลัง จะเกิดอะไรขึ้นหากคุณกำหนดขีดจำกัดหรือตัดค่าสูงสุดของ roomsPerPerson
ที่ค่าที่กำหนดเอง เช่น 4.0
การตัดค่าฟีเจอร์ไว้ที่ 4.0 ไม่ได้หมายความว่าโมเดลของคุณจะไม่สนใจค่าทั้งหมดที่มากกว่า 4.0 แต่หมายความว่าค่าทั้งหมดที่มากกว่า 4.0 จะกลายเป็น 4.0 ซึ่งอธิบายถึงเนินแปลกๆ ที่ 4.0 อย่างไรก็ตาม ตอนนี้ชุดฟีเจอร์ที่ปรับขนาดแล้วมีประโยชน์มากกว่าข้อมูลเดิม
เดี๋ยวก่อน คุณลดค่าที่ผิดปกติทุกค่าให้อยู่ต่ำกว่าเกณฑ์บนที่กำหนดเองได้ไหม ใช่ เมื่อฝึกโมเดล
นอกจากนี้ คุณยังตัดค่าหลังจากใช้การแปลงค่ารูปแบบอื่นๆ ได้ด้วย เช่น สมมติว่าคุณใช้การปรับขนาดคะแนน Z แต่ค่าที่ผิดปกติบางค่ามีค่าสัมบูรณ์มากกว่า 3 มาก ในกรณีนี้ คุณจะทำสิ่งต่อไปนี้ได้
- ตัดคะแนน Z ที่มากกว่า 3 ให้เหลือ 3
- ตัด Z-score ที่น้อยกว่า -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 ครั้งต่อปีในวันที่อากาศร้อนจัด ระบบบันทึกค่า 2-3 ค่าระหว่าง 31 ถึง 45 ใน
temperature
- ทุกๆ 1,000 จุดใน
temperature
มีการตั้งค่าเป็น 1,000 แทนที่จะเป็นอุณหภูมิจริง
เทคนิคการปรับมาตรฐานที่สมเหตุสมผลสําหรับ temperature
คืออะไร
ค่า 1,000 เป็นข้อผิดพลาด และควรลบแทนการตัดทอน
ค่าระหว่าง 31 ถึง 45 คือจุดข้อมูลที่ถูกต้อง การจำกัดค่าเหล่านี้อาจเป็นความคิดที่ดี ในกรณีที่ชุดข้อมูลไม่มีตัวอย่างมากพอในช่วงอุณหภูมินี้เพื่อฝึกโมเดลให้ทำการคาดการณ์ที่ดี อย่างไรก็ตาม ในระหว่างการอนุมาน โปรดทราบว่าโมเดลที่ตัดข้อมูลออกจะคาดการณ์อุณหภูมิ 45 องศาเซลเซียสเหมือนกับอุณหภูมิ 35 องศาเซลเซียส