← Back to list

Data Cleaning 101 ทำไมข้อมูลต้องสะอาดก่อนวิเคราะห์

ในยุคที่ใครๆ ต่างก็พูดว่า “Data is the new oil” หรือข้อมูลคือขุมทรัพย์ใหม่ แต่เคยสงสัยไหมครับว่าถ้า “น้ำมัน” ที่เราได้มามันไม่บริสุทธิ์…

Nattawut Chayauam · 2025-06-10 10:58 · 0 claps · 4.9 min read
#data-cleaning #feature-engineering #data-science
Open on Medium ↗
Wiki topics: ML · Machine Learning 🔬 · Science · General

Data Cleaning 101 ทำไมข้อมูลต้องสะอาดก่อนวิเคราะห์

ในยุคที่ใครๆ ต่างก็พูดว่า “Data is the new oil” หรือข้อมูลคือขุมทรัพย์ใหม่ แต่เคยสงสัยไหมครับว่าถ้า “น้ำมัน” ที่เราได้มามันไม่บริสุทธิ์ เราก็คงเอามันไปใช้ประโยชน์อะไรไม่ค่อยได้ ข้อมูลก็เช่นกันครับ ถ้าข้อมูลที่เรามีมัน “สกปรก” (Dirty Data) หรือไม่มีคุณภาพ การนำไปใช้วิเคราะห์เพื่อตัดสินใจก็อาจจะผิดพลาดจนสร้างความเสียหายได้เลย วันนี้เราจะมาเจาะลึกกันว่าข้อมูลมันสกปรกได้อย่างไร แล้วเราจะจัดการกับมันยังไงบ้างครับ

1. ทำไมข้อมูลถึงสกปรก

ลองนึกภาพตามนะครับ ข้อมูลที่เราเห็นในระบบต่างๆ ไม่ได้สมบูรณ์แบบเสมอไป มันมีสาเหตุหลายอย่างที่ทำให้ข้อมูลเหล่านั้นกลายเป็นข้อมูลที่ไม่มีคุณภาพ หรือที่เรียกว่า “Dirty Data” ได้ สาเหตุหลักๆ ก็มาจากเรื่องเหล่านี้นั่นเองครับ

  • ข้อมูลที่ป้อนเข้ามาไม่ได้ถูกตรวจสอบ (Data input are not validated) : จินตนาการถึงการกรอกฟอร์มที่อนุญาตให้เราใส่เบอร์โทรศัพท์เป็นตัวอักษรได้ นี่คือตัวอย่างคลาสสิกเลยครับ 5555 + คือไม่มีการดักจับข้อมูลที่ผิดพลาดตั้งแต่แรก
  • ซอฟต์แวร์คำนวณผิดพลาด (Software make wrong calculations) : บางครั้งบั๊ก (bug) ในโปรแกรมก็อาจทำให้การคำนวณเพี้ยนไปได้ เช่น การคำนวณส่วนลดหรือภาษีที่ผิดเพี้ยนออกไป
  • การคำนวณที่ไม่สมบูรณ์ (Incomplete calculations) : กระบวนการบางอย่างอาจหยุดทำงานกลางคัน ทำให้ข้อมูลที่ควรจะถูกคำนวณหรืออัปเดตยังอยู่ในสถานะที่ไม่สมบูรณ์
  • การแก้ไขฐานข้อมูลโดยตรง (Direct database manipulation) : การเข้าไปแก้ข้อมูลในฐานข้อมูลโดยตรงแบบไม่ผ่านกระบวนการที่ถูกต้อง อาจสร้างความไม่สอดคล้องกันของข้อมูลได้
  • การออกแบบระบบที่ไม่ดี (Bad design) : การออกแบบโครงสร้างการเก็บข้อมูลที่ไม่มีประสิทธิภาพหรือไม่ครอบคลุม ก็เป็นต้นเหตุของปัญหาข้อมูลในระยะยาวได้เหมือนกันกัน

2. Data Quality Problem

เมื่อรู้สาเหตุแล้ว มาดูกันว่าปัญหาคุณภาพข้อมูลมันมีหน้าตาแบบไหนบ้าง โดยเราสามารถแบ่งปัญหาออกเป็น 2 กลุ่มใหญ่ๆ คือปัญหาจากแหล่งข้อมูลเดียว และปัญหาจากหลายแหล่งข้อมูล

data qua

data qua

2.1 ปัญหาจากแหล่งข้อมูลเดียว (Single-Source Problem)

2.1.1 Schema Level Problems : ปัญหากลุ่มนี้เปรียบเสมือนการ ออกแบบโครงสร้างที่ไม่ดี คือตัวโครงสร้างที่ใช้เก็บข้อมูลเปิดช่องให้เกิดข้อมูลที่ผิดพลาดได้ง่ายๆ

  • Uniqueness

ตัวอย่างเช่น : สมมติว่าในระบบฐานข้อมูลลูกค้า เราควรจะกำหนดว่าเลขบัตรประชาชนหรือรหัสลูกค้าของแต่ละคนต้องไม่ซ้ำกัน แต่ถ้าตอนออกแบบระบบ เราไม่ได้ตั้งกฎว่าห้ามซ้ำ (Uniqueness constraint) นี้ไว้ ก็อาจจะทำให้พนักงานสามารถสร้างข้อมูลของ user ซ้ำกัน 2 ครั้ง ด้วยเลขบัตรประชาชนเดียวกันได้ พอจะนับจำนวนลูกค้าก็จะนับผิด หรือส่งของให้ผิดคนได้นั่นเอง

  • Referential integrity

ตัวอย่างเช่น : หากเรามีตารางรายการสั่งซื้อกับตารางสินค้า โดยในตารางสั่งซื้อจะมีการอ้างอิง รหัสสินค้า ที่มีอยู่จริงในตารางสินค้า แต่ถ้าระบบออกแบบมาไม่ดี เราอาจจะ ลบสินค้าชิ้นนั้นออกจากตารางสินค้า ได้ ทั้งๆ ที่ยังมีรายการสั่งซื้อค้างอยู่ ผลก็คือ เราจะมี รายการสั่งซื้อผี ที่อ้างอิงไปยังรหัสสินค้าที่ไม่มีอยู่จริงในระบบแล้ว

2.1.2 Instance Level Problems : ปัญหากลุ่มนี้ไม่ใช่เรื่องของโครงสร้างแล้ว แต่เป็น ความผิดพลาดตอนกรอกข้อมูล ลงไปในแบบฟอร์มที่เราออกแบบไว้นั่นเองครับ ซึ่งเป็นปัญหาที่เจอกันบ่อยมาก

  • Misspelling (การสะกดผิด)

ตัวอย่างเช่น : ในคอลัมน์จังหวัด พนักงานคนหนึ่งอาจกรอกว่ากรุงเทพ, อีกคนกรอก กรุงเทพฯ, อีกคนกรอกกทม หรือแม้กระทั่ง BKK สำหรับคอมพิวเตอร์แล้ว ทั้ง 4 คำนี้คือคนละที่กันเลย เวลาจะนับจำนวนลูกค้าในกรุงเทพฯ ก็จะนับได้ไม่ครบนั่นเองครับ

  • Duplication (ข้อมูลซ้ำซ้อน)

ตัวอย่างเช่น : คุณสมศรีสมัครสมาชิกผ่านหน้าเว็บ เลยมีข้อมูลในระบบแล้ว 1 รายการ ต่อมาคุณสมศรีไปซื้อของที่หน้าร้าน พนักงานสร้างข้อมูลลูกค้าใหม่อีก 1 รายการ ทำให้ตอนนี้มีข้อมูลคุณสมศรี 2 คนในระบบ ทำให้การสะสมแต้มหรือดูประวัติการซื้อขายของลูกค้าคนนี้ไม่สมบูรณ์

  • Contradictory values (ข้อมูลที่ขัดแย้งกัน)

ตัวอย่างเช่น : ในข้อมูลลูกค้าคนเดียวกันคอลัมน์วันเกิด ระบุว่าเป็นปี 1990 (อายุ 35 ปี) แต่ในคอลัมน์อายุ กลับกรอกไว้ว่า 25 ปี หรือในคอลัมน์รหัสไปรษณีย์ เป็นของกรุงเทพฯ แต่คอลัมน์จังหวัดกลับเป็นเชียงใหม่ ซึ่งข้อมูลนั้นมีความขัดแย้งด้วยกันเอง

2.2 ปัญหาจากหลายแหล่งข้อมูล (Multi-Source Problem)

  • ระดับโครงสร้าง (Schema Level) : จะเกิดขึ้นเมื่อเรารวมข้อมูลจากหลายระบบที่มีโครงสร้างต่างกัน เช่น ชื่อคอลัมน์ไม่เหมือนกัน (Naming conflicts) หรือโครงสร้างตารางต่างกัน (Structural conflicts)
  • ระดับข้อมูล (Instance Level) : เป็นปัญหาคลาสสิกของการรวมข้อมูลเลยครับ คือมีข้อมูลที่ทับซ้อนหรือขัดแย้งกัน (Overlapping, contradicting data) หรือการรวมข้อมูลที่มาจากช่วงเวลาที่ต่างกัน (Inconsistent timing)

3. Data Quality

หัวใจของการใช้ข้อมูลให้เกิดประโยชน์สูงสุด ไม่ใช่แค่การเก็บเยอะๆ เท่านั้นครับ แต่ต้องมั่นใจว่าข้อมูลที่เราใช้นั้นมีคุณภาพ ซึ่งคุณภาพข้อมูลสามารถพิจารณาได้จากหลายมิติเช่น

  • ความถูกต้อง (Accuracy) : ข้อมูลต้องตรงกับความเป็นจริง
  • ความสมเหตุสมผล (Validity) : ข้อมูลต้องอยู่ในรูปแบบและขอบเขตที่กำหนดไว้
  • ความน่าเชื่อถือ (Reliability) : ข้อมูลต้องมีความสม่ำเสมอและเชื่อถือได้
  • ความทันสมัย (Timeliness) : ข้อมูลต้องเป็นปัจจุบันพอที่จะนำไปใช้ประโยชน์ได้
  • ความเกี่ยวข้อง (Relevance) : ข้อมูลต้องเกี่ยวข้องกับสิ่งที่กำลังจะนำไปใช้
  • ความสมบูรณ์ (Completeness) : ไม่มีข้อมูลส่วนสำคัญที่หายไป
  • การปฏิบัติตามข้อกำหนด (Compliance): ข้อมูลต้องสอดคล้องกับกฎระเบียบหรือมาตรฐานต่างๆครับ

Data Quality source : https://www.ovaledge.com/blog/data-quality-metrics

Data Quality source : https://www.ovaledge.com/blog/data-quality-metrics

หลังจากที่เราได้เรียนรู้ถึงสาเหตุของปัญหาเกี่ยวกับคุณภาพข้อมูล (Data Quality Problem) ไปแล้ว ในขั้นตอนถัดไปคือการทำความเข้าใจลักษณะของข้อมูลที่ดี ซึ่งสามารถนำไปใช้งานได้อย่างมีประสิทธิภาพ ต่อไปนี้คือ ลักษณะปัญหาที่พบบ่อยในการล้างข้อมูล (Data Cleansing) ซึ่งเป็นขั้นตอนสำคัญในการยกระดับคุณภาพข้อมูลให้ พร้อมใช้งาน อย่างแท้จริง

4 . Common topics in data cleansing

1. ข้อมูลที่หายไป (Missing Data)

เป็นหนึ่งในปัญหาที่พบได้บ่อยที่สุด หมายถึงกรณีที่ข้อมูลบางช่องซึ่งควรจะมีค่ายังไม่ได้รับการกรอก หรือมีข้อมูลไม่ครบถ้วนตัวอย่างเช่น

  • ข้อมูลลูกค้าที่ไม่มีการกรอกเบอร์โทรศัพท์ หรือ อีเมล
  • ข้อมูลการสั่งซื้อที่ไม่มีวันที่จัดส่งสินค้า
  • ตารางพนักงานที่ไม่มีระบุ แผนก เป็นต้น

2. ข้อมูลที่ผิดอย่างชัดเจน (Outright Wrong Data)

หมายถึงข้อมูลที่มีการบันทึกค่าไว้แต่ค่าดังกล่าวผิดเพี้ยนจากความเป็นจริงอย่างเห็นได้ชัด หรือเป็นไปไม่ได้ในเชิงตรรกะ ตัวอย่างเช่น

  • อายุของลูกค้าแสดงเป็น 250 ปี
  • เพศของพนักงานกรอกเป็นคำว่า รถยนต์
  • วันที่สั่งซื้อระบุเป็นปี 2030 (ในขณะที่ปัจจุบันคือปี 2025)
  • คะแนนความพึงพอใจ (เต็ม 5) แต่มีค่าระบุเป็น 100 เป็นต้น

3. ข้อมูลที่ไม่เป็นหนึ่งเดียวกัน (Fragmented or Inconsistent Data)

หมายถึงการที่ข้อมูลชุดเดียวกันถูกจัดเก็บอย่างกระจัดกระจาย หรือไม่อยู่ในรูปแบบมาตรฐานเดียวกัน ทำให้ยากต่อการรวมและใช้งานข้อมูลอย่างต่อเนื่องตัวอย่างเช่น

  • ลูกค้าคนเดียวกันมีข้อมูลกระจายอยู่ในหลายแหล่ง เช่น ชื่อกับที่อยู่ในแหล่งหนึ่ง และชื่อกับเบอร์โทรในอีกแหล่งหนึ่ง
  • การเก็บที่อยู่ที่ไม่มีรูปแบบมาตรฐาน เช่น บางรายการรวมไว้ในช่องเดียว บางรายการแยกเป็น บ้านเลขที่, ถนน, อำเภอ เป็นต้น

4. ข้อมูลที่เป็นค่าผิดปกติ (Outliers)

คือข้อมูลที่มีค่าหลุดหรือเบี่ยงเบนจากค่ากลางของชุดข้อมูลมากผิดปกติ ซึ่งอาจเป็นข้อมูลที่ผิด หรืออาจสะท้อนเหตุการณ์ที่เกิดขึ้นจริงแต่จำเป็นต้องได้รับการตรวจสอบเป็นพิเศษ ตัวอย่างเช่น

  • พนักงานส่วนใหญ่มีรายได้ระหว่าง 15,000–80,000 บาท แต่พบพนักงานบางราย (เช่น CEO) มีรายได้ 1,000,000 บาท
  • ยอดสั่งซื้อสินค้าออนไลน์โดยเฉลี่ยอยู่ที่ 500–2,000 บาท แต่พบรายการสั่งซื้อ 300,000 บาทในบางครั้ง

การตรวจสอบและจัดการกับปัญหาทั้ง 4 ประเภทนี้ คือกระบวนการพื้นฐานของการล้างข้อมูล (Data Cleansing) ที่ช่วยให้ได้ชุดข้อมูลที่มีคุณภาพ สะอาด น่าเชื่อถือ และพร้อมใช้งานในการวิเคราะห์ข้อมูลต่อไปครับ

5. data cleansing in practice

หลังจากที่เราได้เรียนรู้แนวคิดและวิธีการทำความสะอาดข้อมูล (Data Cleaning) ในภาพรวมกันไปแล้ว คราวนี้เราจะมาเจาะลึกลงไปในรูปแบบหนึ่งของการทำ Data Cleaning ที่พบได้บ่อยที่สุด นั่นก็คือ การจัดการกับข้อมูลที่หายไป (Missing Data)

5.1 Missing Data

ข้อมูลที่หายไปเป็นปัญหาที่พบบ่อยที่สุด และต้องจัดการอย่างระมัดระวัง เพราะอาจส่งผลกระทบต่อการวิเคราะห์ได้ การจัดการกับ Missing Data มีขั้นตอนหลักดังนี้

  • หาสาเหตุที่ทำให้ข้อมูลหาย เช่น เป็นค่าที่ไม่ได้ถูกบันทึก, การดึงข้อมูลล้มเหลว, หรือเป็นค่าที่ไม่เกี่ยวข้องกับเงื่อนไข
  • ตัดสินใจว่าจะแก้ไขอย่างไร เช่น ลบทิ้ง เติมค่ากลาง หรือใส่ค่าว่าง
  • ใช้โค้ดหรือเครื่องมือเพื่อจัดการตามที่กำหนดไว้

ขั้นตอนที่ 1 : โหลดและสำรวจข้อมูลเบื้องต้น

csv_filepath = os.path.join(path, 'nyc_flights.csv')
df_flight = pd.read_csv(csv_filepath)
df_flight.head()

เพื่ออ่านไฟล์ข้อมูลและแสดง 5 แถวแรกเพื่อตรวจสอบหน้าตาของข้อมูลเบื้องต้น โดยเราจะเห็นคอลัมน์สำคัญๆ เช่น year, month, day, dep_time, arr_time, และอื่นๆ

ขั้นตอนที่ 2 : ตรวจสอบจำนวนข้อมูลที่หายไปในแต่ละคอลัมน์

df_flight.isnull().sum()

เพื่อตรวจสอบว่าคอลัมน์ใดมีข้อมูลหายไป และหายไปมากน้อยแค่ไหน

ขั้นตอนที่ 3 : วิเคราะห์ข้อมูลที่มีปัญหา

df_flight[df_flight['dep_time'].isnull()]

เป็นการดูรายละเอียดของแถวที่มี dep_time หายไปว่ามีลักษณะอย่างไร ซึ่งพบว่าแถวที่ไม่มีข้อมูลเวลาออกเดินทาง (dep_time) ก็มักจะไม่มีข้อมูลในคอลัมน์ที่เกี่ยวข้องด้วย เช่น dep_delay และ arr_time ด้วยเช่นกัน แสดงว่าแถวเหล่านี้อาจเป็นเที่ยวบินที่ถูกยกเลิก หรือมีปัญหาในการบันทึกข้อมูล

ขั้นตอนที่ 4 : ลบแถวที่ข้อมูลสำคัญหายไป และตรวจสอบผล

df_flight = df_flight[~df_flight['dep_time'].isnull()]
df_flight.isnull().any()
  • ข้อมูลที่เหลือไม่มี dep_time ที่มีค่าว่างอีก
  • คำสั่ง .isnull().any() จะคืนค่า False หมายถึงไม่มีคอลัมน์ใดที่ยังมีค่าว่าง

ในชุดข้อมูลเที่ยวบิน พบว่า dep_time และ arr_time มีค่าหายไป เมื่อตรวจสอบพบว่าเที่ยวบินนั้นถูกยกเลิก (Cancelled) จึงไม่มีข้อมูลเวลา หากเราสนใจเฉพาะเที่ยวบินที่เกิดขึ้นจริง ก็สามารถลบแถวที่ถูกยกเลิกออกไปได้

การจัดการกับข้อมูลที่หายไปเป็นขั้นตอนสำคัญที่ไม่ควรมองข้าม เพราะหากดำเนินการอย่างไม่เหมาะสม อาจทำให้ผลวิเคราะห์คลาดเคลื่อนอย่างมีนัยสำคัญ ทั้งนี้ การทำความเข้าใจสาเหตุ การเลือกแนวทางที่เหมาะสม และการลงมือแก้ไขอย่างเป็นระบบ จะช่วยให้ข้อมูลมีคุณภาพสูงขึ้น และสร้างความน่าเชื่อถือในการวิเคราะห์ข้อมูลเชิงลึกในลำดับถัดไป

5.2 Outright Wrong Data

ข้อมูลที่ผิดแน่นอน เช่น อายุ 200 ปี หรือ เพศ = โตโยต้า มักเกิดจากความผิดพลาดในการป้อนข้อมูลหรือเชื่อมตารางผิด ต้องจัดการอย่างเป็นระบบดังนี้

  • วิเคราะห์การกระจายของข้อมูล โดยใช้กราฟ เช่น histogram หรือการนับ frequency เพื่อตรวจเจอค่าที่ผิดปกติ
  • วิเคราะห์สาเหตุ เช่น พิมพ์ผิด, ระบบรวน, เชื่อมตารางผิด
  • แก้ไข เช่น ลบทิ้ง เปลี่ยนเป็นค่าว่าง หรือแทนที่ด้วยค่าที่เหมาะสม

จากข้อมูล ATM พบว่าค่ายอดเงินติดลบและวันที่ไม่สมเหตุสมผล สามารถใช้ describe() ตรวจเจอได้ แล้วลบแถวที่ไม่สมเหตุสมผลเหล่านั้นออก

5.3 ข้อมูลที่กระจัดกระจาย (Fragmentation)

บางครั้งข้อมูลหมวดหมู่เดียวกันถูกบันทึกหลายแบบ ทำให้การวิเคราะห์ผิดพลาดหรือยุ่งยาก

  • โดยมองหาค่าที่แตกต่างกันแต่มีความหมายเหมือนกัน เช่น “Marketing” กับ “Marketing and Advertisement”
  • ใช้คำสั่งเช่น replace() เพื่อรวมค่าเหล่านี้ให้เป็นกลุ่มเดียวกัน

ตัวอย่างเช่น : ใน HR Data ค่า “Microbiology” อาจถูกรวมเข้ากับ “Life Sciences” หรือ “Marketing and Advertisement” รวมกับ “Marketing” เพื่อให้การวิเคราะห์สอดคล้องมากยิ่งขึ้นขึ้น

5.4 ข้อมูลสุดโต่ง (Outliers)

ข้อมูลที่เบี่ยงเบนจากกลุ่มอย่างรุนแรง เช่น รายได้เดือนละ 1 ล้านบาทในกลุ่มพนักงานทั่วไป อาจทำให้โมเดลหรือกราฟเบี้ยว

  • ใช้ Box Plot, Distribution Plot หรือ Z-score เพื่อระบุ Outliers
  • กำหนดจุดตัด เช่น ค่า Percentile (p95, p99) เพื่อกำหนดขอบเขต
  • ใช้ฟังก์ชัน clip() เพื่อตัดค่าที่เกินให้อยู่ในขอบเขต

ตัวอย่างเช่น : ถ้ารายได้พนักงานตำแหน่ง Research Scientist ส่วนใหญ่ไม่เกิน 200,000 บาท แต่มีบางคนที่ข้อมูลแสดงว่าได้ 1,000,000 บาท เราอาจใช้ clip() จำกัดรายได้สูงสุดไว้ที่ p99 เพื่อป้องกันไม่ให้โมเดลเรียนรู้ผิดจากค่าผิดปกตินั้น

หลังจากที่ได้ดำเนินการทำความสะอาดข้อมูลเรียบร้อยแล้ว ขั้นตอนถัดไปคือกระบวนการที่เรียกว่า Feature Engineering ซึ่งมีบทบาทสำคัญอย่างยิ่งในโครงการด้านการวิเคราะห์ข้อมูลและการเรียนรู้ของเครื่อง (Machine Learning)

Feature Engineering คือการประยุกต์ใช้ ความรู้เชิงสถิติ ร่วมกับ ความเข้าใจบริบทของข้อมูล (Domain Knowledge) เพื่อ สร้าง ปรับเปลี่ยน หรือคัดเลือกตัวแปร (Features) ที่มีศักยภาพในการเพิ่มประสิทธิภาพของแบบจำลอง ทั้งในด้านความแม่นยำและความสามารถในการตีความผลลัพธ์

6. Feature Engineering

6.1 การสเกลข้อมูล (Feature Scaling)

อัลกอริธึมจำนวนมากใน Machine Learning โดยเฉพาะอัลกอริธึมที่พึ่งพาการคำนวณระยะทาง เช่น K-Means Clustering, K-Nearest Neighbors (KNN) หรือ Principal Component Analysis (PCA) นั้น มีความไวต่อขนาดของข้อมูลแต่ละตัวแปร หากไม่ปรับให้อยู่ในช่วงที่เหมาะสม ตัวแปรที่มีค่ามากจะมีอิทธิพลต่อแบบจำลองเกินควร

เทคนิคที่ใช้

  • Min-Max Scaling : ปรับค่าทุกตัวแปรให้อยู่ในช่วง [0, 1]
  • Robust Scaling : ใช้ค่า median และ Interquartile Range (IQR) แทนค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน จึงเหมาะกับข้อมูลที่มี Outlier
  • MaxAbs Scaling : เหมาะสำหรับข้อมูลที่มีทั้งค่าบวกและค่าลบ และต้องการรักษาทิศทางของข้อมูลไว้ โดยปรับให้อยู่ในช่วง [-1, 1]

Scaling : Standard, MinMax & Robust Methods source : https://www.linkedin.com/pulse/data-scientists-guide-scaling-standard-minmax-robust-methods-kharche-qm3df/

Scaling : Standard, MinMax & Robust Methods source : https://www.linkedin.com/pulse/data-scientists-guide-scaling-standard-minmax-robust-methods-kharche-qm3df/

6. 2 การเข้ารหัสตัวแปรเชิงหมวดหมู่ (Encoding Categorical Variables)

ตัวแปรที่มีลักษณะเป็นหมวดหมู่ (เช่น “อาชีพ”, “สถานภาพสมรส”) จำเป็นต้องแปลงให้อยู่ในรูปแบบเชิงตัวเลขก่อนจึงจะสามารถป้อนเข้าแบบจำลองได้ โดยรูปแบบการเข้ารหัสขึ้นอยู่กับประเภทของหมวดหมู่ ประเภทของการเข้ารหัสเช่น

  • Binary Encoding สำหรับตัวแปรที่มีเพียงสองค่าชัดเจน เช่น 'Yes'/'No' → แปลงเป็น 1/0

ก่อนทำ Binary Encoding

ก่อนทำ Binary Encoding

หลังทำ Binary Encoding

หลังทำ Binary Encoding

  • Ordinal Encoding สำหรับตัวแปรที่มีลำดับความสำคัญ เช่น 'primary' < 'secondary' < 'tertiary' → แปลงเป็น 1, 2, 3 ตามลำดับ

ก่อนทำ Ordinal Encoding

ก่อนทำ Ordinal Encoding

หลังทำ Ordinal Encoding

หลังทำ Ordinal Encoding

  • One-Hot Encoding (Nominal) สำหรับตัวแปรที่ไม่มีลำดับ เช่น 'job': ['admin.', 'technician', 'retired'] → สร้างคอลัมน์แยกสำหรับแต่ละค่า เช่น job_admin, job_technician, job_retiredเป็นต้น

ก่อนทำ One-Hot Encoding

ก่อนทำ One-Hot Encoding

หลังทำ One-Hot Encoding

หลังทำ One-Hot Encoding

6.3 การจัดการกับการกระจายตัวที่ไม่เป็นปกติ (Dealing with Skewed Distributions)

ในโลกของข้อมูลจริง ตัวแปรจำนวนมากมักไม่ได้มีการแจกแจงแบบปกติ (Normal Distribution) อย่างที่แบบจำลองทางสถิติจำนวนมากสมมติไว้ เช่น Linear Regression หรือ Logistic Regression ซึ่งตั้งอยู่บนสมมติฐานของความเป็นเส้นตรงและการกระจายแบบปกติของตัวแปรอิสระ (Independent Variables)

หนึ่งในปัญหาที่พบบ่อยคือการกระจายที่เบ้ขวา (Right-Skewed Distribution) ซึ่งมักเกิดขึ้นในตัวแปรเช่น

  • รายได้ต่อเดือน (Monthly Income)
  • ยอดขาย (Sales)
  • จำนวนธุรกรรม (Transactions)

ข้อมูลลักษณะนี้จะมีค่ามากส่วนใหญ่อยู่ใกล้ 0 แต่มีค่าบางจุดที่สูงมากผิดปกติ (Outliers) ซึ่งจะส่งผลต่อทั้งการเรียนรู้ของโมเดล และความแม่นยำของการพยากรณ์ซึ่งมีเทคนิคที่นิยมใช้ในการปรับการกระจายให้ดีขึ้น

Log Transformation

การแปลงข้อมูลโดยใช้ลอการิทึม (logarithmic transformation) เช่น np.log(x + 1) เป็นวิธีที่ง่ายและได้ผลดีในการลดความเบ้ของข้อมูล และทำให้การแจกแจงใกล้เคียงกับปกติมากขึ้นตัวอย่างเช่น

  • ในชุดข้อมูล HR Analytics คอลัมน์ MonthlyIncome มีค่ารายได้ตั้งแต่ไม่กี่พันบาทไปจนถึงหลักแสน
  • การใช้ Log Transformation จะช่วยปรับให้ค่ารายได้นั้นกระจายตัวสม่ำเสมอมากขึ้น

ผลลัพธ์ที่ได้จะช่วยให้แบบจำลองเชิงเส้นสามารถเรียนรู้ได้แม่นยำยิ่งขึ้น เพราะไม่ถูกดึงด้วย Outliers นั่นเองครับ

Box-Cox และ Yeo-Johnson Transformation

เทคนิคเหล่านี้เป็นการแปลงข้อมูลในลักษณะพิเศษที่พัฒนาโดยใช้แนวคิดทางคณิตศาสตร์มากขึ้น

  • Box-Cox ใช้ได้กับข้อมูลที่ไม่มีค่า 0 หรือลบ
  • Yeo-Johnson สามารถใช้กับข้อมูลที่มีค่าเป็นศูนย์หรือลบได้

ตัวอย่างการใช้ Log Transformation source : https://blog.dailydoseofds.com/p/a-common-misconception-about-log

ตัวอย่างการใช้ Log Transformation source : https://blog.dailydoseofds.com/p/a-common-misconception-about-log

6.4 Trend Extraction in Time Series

สำหรับข้อมูลที่มีลักษณะเป็นอนุกรมเวลา (Time Series) เช่น

  • ข้อมูลการใช้งาน ATM รายวัน
  • ยอดขายสินค้าแต่ละเดือน
  • ความล่าช้าของเที่ยวบินรายชั่วโมง

แนวโน้ม (Trend) คือส่วนประกอบสำคัญที่สามารถสะท้อนพฤติกรรมระยะยาวของข้อมูล เช่น ขายดีขึ้นทุกเดือน หรือมีการใช้งานเพิ่มขึ้นในช่วงปลายปี ซึ่งการสร้าง feature ที่สะท้อนถึงแนวโน้มของข้อมูลเป็นสิ่งสำคัญโดยใช้เทคนิคดังนี้

Long-Term Trend

สามารถสร้างฟีเจอร์ที่สะท้อนแนวโน้มระยะยาวได้โดยการ ฟิตเส้นตรง (Linear Regression) บนข้อมูลย้อนหลังในช่วงเวลาหนึ่ง เช่น 30 วัน

  • ใช้ค่า slope ของเส้นตรงที่ได้เป็นค่าของ "แนวโน้ม"
  • ถ้าค่า slope เป็นบวก → แนวโน้มเพิ่มขึ้น
  • ถ้าค่า slope เป็นลบ → แนวโน้มลดลง

Short-Term Trend เป็นการใช้สูตรง่ายๆ ในการเปรียบเทียบค่าล่าสุดกับค่าที่ผ่านมาหลายช่วง เช่น

ตัวอย่างสูตร Short-Term Trend ในการหาค่า feature ในช่วงเวลานั้นๆ

ตัวอย่างสูตร Short-Term Trend ในการหาค่า feature ในช่วงเวลานั้นๆ

กล่าวโดยสรุปแล้วนั้น การทำความสะอาดข้อมูลและการสร้างคุณลักษณะ คือหัวใจสำคัญของการวิเคราะห์ข้อมูลเชิงลึกและการสร้างแบบจำลอง Machine Learning ที่มีประสิทธิภาพ แม้จะเป็นขั้นตอนที่มักถูกมองว่าใช้เวลามากและต้องอาศัยความเข้าใจที่ลึกซึ้ง แต่ผลลัพธ์ที่ได้คือ ชุดข้อมูลที่มีคุณภาพ พร้อมสำหรับการวิเคราะห์หรือคาดการณ์อย่างแม่นยำและเชื่อถือได้

การเลือกใช้เทคนิค Feature Engineering อย่างเหมาะสมสามารถ เพิ่มแปลงข้อมูลดิบธรรมดากลายเป็นข้อมูลที่มีความหมายได้ ซึ่งเป็นสิ่งจำเป็นในการนำข้อมูลไปใช้ตัดสินใจหรือแก้ปัญหาในบริบทจริงได้อย่างมีประสิทธิภาพอีกด้วยครับ

Source


메타데이터
post_id
5ff5ca85e25d
slug
data-cleaning-101-ทำไมข้อมูลต้องสะอาดก่อนวิเคราะห์-5ff5ca85e25d
url
https://medium.com/@4ommyx/data-cleaning-101-%E0%B8%97%E0%B8%B3%E0%B9%84%E0%B8%A1%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%AA%E0%B8%B0%E0%B8%AD%E0%B8%B2%E0%B8%94%E0%B8%81%E0%B9%88%E0%B8%AD%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B2%E0%B8%B0%E0%B8%AB%E0%B9%8C-5ff5ca85e25d
canonical_url
https://medium.com/@4ommyx/data-cleaning-101-%E0%B8%97%E0%B8%B3%E0%B9%84%E0%B8%A1%E0%B8%82%E0%B9%89%E0%B8%AD%E0%B8%A1%E0%B8%B9%E0%B8%A5%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%AA%E0%B8%B0%E0%B8%AD%E0%B8%B2%E0%B8%94%E0%B8%81%E0%B9%88%E0%B8%AD%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B9%80%E0%B8%84%E0%B8%A3%E0%B8%B2%E0%B8%B0%E0%B8%AB%E0%B9%8C-5ff5ca85e25d
author_url
https://medium.com/@4ommyx
status
ok
fetched_at
2026-06-13 07:35:29