Data Cleansing หรือการทำความสะอาดข้อมูล ที่เรียกได้ว่าเป็นส่วนที่น่าเบื่อและใช้เวลานานเกินครึ่งของงานด้าน Data Science สำหรับคนส่วนใหญ่ แต่กลับเป็นกระบวนการที่มีความสำคัญอย่างมากในการนำไปใช้งานต่อ เพราะถ้าหากเราขาดข้อมูลที่มีคุณภาพแล้ว การวิเคราะห์ข้อมูลซึ่งเป็นสิ่งที่เราต้องการก็ดูเหมือนจะไม่เกิดประโยชน์และอาจจะเสียเวลาไปซะอย่างงั้น
ในบทความนี้เราลองมาดูกันค่ะ ว่า Data Cleasing คืออะไร ทำไมถึงต้องทำ มีขั้นตอนอย่างไรบ้าง ประกอบกับตัวอย่างในตอนท้าย
Data Cleansing คืออะไร
Data Cleasing เรียกอีกอย่างว่า Data cleaning, Data wrangling, Data remediation หรือ Data munging คือกระบวนการเปลี่ยนข้อมูลดิบให้อยู่ในรูปแบบที่ง่ายต่อการใช้งาน สามารถทำได้หลายวิธีโดยขึ้นอยู่กับลักษณะข้อมูล และเป้าหมายในการใช้งาน
ข้อมูลดิบ (Raw data, Dirty data) คือข้อมูลที่ไม่ได้ผ่านขั้นตอนก่อนกระบวนการ (pre-processing) มาจากแหล่งข้อมูลได้หลายรูปแบบ ตั้งแต่เป็นไฟล์ JSON, XML, CSV, EXCEL หรือ PDF มีปัญหาด้านคุณภาพของข้อมูล (Data quality) เช่น การมีข้อมูลไม่สอดคล้องกัน ข้อมูลซ้ำ ข้อมูลขาดหาย หรือข้อมูลผิดปกติ ทำให้ยากต่อการวิเคราะห์ หาข้อมูลเชิงลึก และสร้างโมเดลได้
ดังนั้นก่อนที่เราจะนำข้อมูลไปใช้งาน เราจึงต้องทำการคลีนข้อมูล เพื่อที่ข้อมูลจะอยู่ในรูปแบบที่เหมาะสม เข้าใจง่าย และสามารถนำไปใช้ให้เกิดประโยชน์มากที่สุด
ทำไมต้องมีการ Data Cleansing
การที่ข้อมูลดิบนั้นมักจะขาดๆเกินๆ ไม่ครบถ้วน และขาดความถูกต้องทำให้เรามีความจำเป็นในการทำ Data Cleansing เพื่อที่จะทำให้คุณภาพของข้อมูลนั้นดีขึ้น เราสามารถวัดคุณภาพข้อมูลโดยสังเกตุจากลักษณะหลักๆ ตามด้านล่างนี้เลย
คุณภาพของข้อมูล (Data quality)
การตรวจสอบคุณภาพของข้อมูล สามารถทำได้โดยดูจากคุณลักษณะดังต่อไปนี้
- ความถูกต้อง (Accuracy) คือการที่ข้อมูลไม่ผิดพลาด ตรงตามความเป็นจริง เช่นการที่ความสูงของคนอยู่ที่ 160 cm แล้วข้อมูลที่เก็บไว้ตรงกับความเป็นจริงมากน้อยแค่ไหน
- ความสมบูรณ์ (Completeness) คือการที่ข้อมูลมีความครบถ้วน ไม่ขาดหายไป เช่นการที่ข้อมูลชุดหนึ่งมีแค่ค่าของตัวแปรของคนกลุ่มๆเดียว โดยที่ขาดกลุ่มอื่นๆไป
- ความตรงตามกาล (Timeliness) คือการที่ข้อมูลมีความถูกต้องตามช่วงเวลา เช่นอัตราการแลกเปลี่ยนของเงินมีความแตกต่างกันตามเวลา
- ความเที่ยง (Consistency) คือการที่ข้อมูลไม่ขัดแย้งกัน เช่นการที่คนหนึ่งมีเบอร์โทรศัพท์หรือที่อยู่ที่เหมือนกัน ในข้อมูลต่างชุดกัน
- ความแม่นตรง (Validity) คือการที่ข้อมูลมีค่าอยู่ภายในกรอบที่กำหนดและอยู่บนพื้นฐานของความเป็นจริง เช่นการที่วันที่ หรืออีเมลล์อยู่ในรูปแบบเดียวกัน
ลักษณะสำหรับการตรวจสอบคุณภาพของข้อมูลด้านบนนั้นเป็นลักษณะหลักๆที่มักจะใช้กัน แต่ก็สามารถเปลี่ยนแปลง เพิ่มเติม ไปตามวิธีการจัดเก็บข้อมูล และชุดข้อมูลได้
เมื่อทุกคนรู้แล้วว่าคุณภาพของข้อมูลสามารถวัดได้จากหลายลักษณะ เราก็ลองมาดูกันว่าข้อมูลแต่ละชนิดที่เราอาจจะพบเจอระหว่างการตรวจสอบข้อมูลนั้นมีอะไรบ้าง
ชนิดของข้อมูล
ชนิดของข้อมูลที่เราเจอได้นั้นมีอยู่หลายประเภท โดยปกติแล้วข้อมูลจากหลายแหล่งมักจะมาในหลายรูปแบบ ซึ่งส่วนมากก็ไม่สามารถนำมาวิเคราะห์ได้ทันทีเลย
เราจะเล่าให้ฟังว่าชนิดของข้อมูลที่คุณจะออกไปเจอมีแบบไหนบ้าง คร่าวๆดังต่อไปนี้
ข้อมูลเชิงกราฟและเครือข่าย (Graph and network data) เป็นรูปแบบที่มีจุดหลายจุดเรียกว่า Node หรือ Vertex พร้อมกับเส้นที่ลากออกไปเชื่อมกันระหว่างจุด เรียกว่า Edge ยกตัวอย่างเช่น ข้อมูลจากโซเชียลเน็ตเวิร์คอย่าง เฟสบุ๊ค ทวิตเตอร์ หรือ โครงสร้างโมเลกุล
ข้อมูลอนุกรมเวลา (Times series data) เป็นรูปแบบที่เป็นลำดับเวลา แต่ละจุดข้อมูลถูกเก็บตามช่วงเวลา ยกตัวอย่างเช่น อัตราการแลกเปลี่ยนระหว่างค่าเงินของออสเตรเลีย (AUD) และค่าเงินของไทย (THB) ในช่วงสิบห้าปีที่ผ่านมา
ข้อมูลที่มีลำดับ (Sequential data) เป็นรูปแบบที่เป็นลำดับของปัจจัยสำคัญ หรือเหตุการณ์ ยกตัวอย่างเช่น การหาแบบในลำดับดีเอ็นเอเพื่อที่จะวินิจฉัยโรคต่างๆ
ข้อมูลเชิงพื้นที่ รูป และมัลติมีเดีย (Spatial, image and multimedia data) เป็นรูปแบบที่เราสามารถเจอได้ทั้ง แผนที่ รูปภาพ วิดีโอ และเสียง การที่เราจะวิเคราะห์รูปแบบด้านบนนี้จะแอดวานซ์มาก ยกตัวอย่างเช่น การประมวลผลภาพ (image processing)
ข้อมูลตัวอักษร (Text data) เป็นข้อมูลที่ประกอบไปด้วยคำศัพท์และตัวอักษรจำนวนมาก เช่นจากบทความ ข่าว ทวิต หรือ สิทธิบัตร การที่เราจะทำให้เครื่องเข้าใจภาษามนุษย์แบบถูกหลักไวยากรณ์และตรงตามความหมายนั้น เป็นปัญหาที่ท้าทายมากในโลกของข้อมูล
เมื่อเรารู้กันแล้วว่ามีโอกาสเจอข้อมูลแนวไหนได้บ้าง ก็ลองมาดูกันต่อว่าปัญหาของข้อมูลที่เรามักจะเจอมาในแบบไหนกัน
ปัญหาคุณภาพของข้อมูล
ปัญหาคุณภาพข้อมูลที่เราพบเจอได้โดยปกติ ในระหว่างทำการคลีนข้อมูล
- การแปลความหมาย (Interpretability): การทำความเข้าใจข้อมูลโดยไม่มีเอกสารประกอบเลยเป็นเรื่องที่ยากมาก โดยเฉพาะข้อมูลในเรื่องที่เราไม่คุ้นเคย เราอาจจะเดาจากการสังเกตุชื่อของแต่ละตัวแปร หรือรูปแบบข้อมูลได้ แต่ถ้ามีพจนานุกรมข้อมูล (data dictionary) ก็จะดีและเข้าใจได้ง่ายสำหรับทุกคน
- รูปแบบข้อมูล (Data format): ข้อมูลจากหลายที่มีการเก็บ หรือสร้างมาไว้ให้อยู่ในรูปแบบที่แตกต่างกัน เราจึงต้องรวบรวมและจัดการข้อมูลให้อยู่ในรูปแบบเดียวกัน
- ไม่สอดคล้อง และไม่ถูกต้อง (Inconsistent and faulty): การมีข้อมูลที่ไม่สอด เกิดได้จากการพิมพ์ผิด การใส่ข้อมูลโดยที่ไม่มีรูปแบบที่แน่นอน การที่ใส่บ้างไม่ใส่บ้าง การใส่ข้อมูลที่ไม่เกี่ยวข้อง
- คลุมเครือ (Ambiguous): การมีข้อมูลที่ไม่ชัดเจน อาจมาจากการใช้ตัวอักษรย่อ หรือการใส่คำไม่ครบ เช่น MS และ Microsoft
- ขาดและไม่ครบถ้วน (Missing and incomplete): การมีข้อมูลไม่ครบเกิดได้จากหลายสาเหตุ และอาจจะหายากในบางกรณีเพราะสามารถจะซ้อนอยู่ในรูปแบบ 0 ซึ่งไม่ใช่ทางเลือกที่ดีในการนำมาใช้ ทั้งนี้ก็ขึ้นอยู่กับช่วงของข้อมูลที่ควรจะเป็น
- ค่าผิดปกติ (Anomalies and outliers): จุดข้อมูลที่มีค่าแตกต่างจากข้อมูลส่วนใหญ่ในชุดเดียวกันมากๆ เช่นการที่สโนว์ไวท์ มีความสูงที่โดดออกมาจากกลุ่มคนแคระ ดังนั้นเราต้องมาดูว่าจุดข้อมูลนี้เป็นค่าผิดปกติหรือไม่ โดยที่สามารถตรวจสอบได้จากวิธีการทางสถิติ เราควรจะเข้าใจการมีอยู่และผลกระทบของค่าผิดปกติด้วย
- ค่าซ้ำ (Duplicates): การมีข้อมูลที่เหมือนกันในชุดเดียวกัน เช่นข้อมูลของลูกค้าสองจุดที่แถวหนึ่งมีเบอร์โทรศัพท์ อีกแถวมีวันเดือนปีเกิด ในการระบุตัวตน การรวมกับข้อมูลชุดอื่นจะทำให้เกิดจุดข้อมูลที่ซ้ำๆกันได้
ถึงตรงนี้ทุกคนก็น่าจะพอเข้าใจการคลีนข้อมูลขึ้นมาบ้างแล้ว ขั้นตอนการทำเป็นอย่างไรไปดูกันเลย
ขั้นตอนในการ Data Cleansing
Data Scientist, Data Analyst หรือ Data Wrangler แต่ละคนอาจจะมีความคิดเห็น และมุมมองที่แตกต่างกันในการแก้ปัญหาในการคลีนข้อมูล โดยขั้นตอนที่เราจะนำเสนอมีดังนี้
- การเก็บข้อมูล (Data acquisition): การรวบรวมข้อมูลจากหลายๆแหล่งที่มา ตั้งแต่ เว็บไซท์ เซ็นเซอร์ ดาต้าเบสโดยผ่าน API และ web scraping ซึ่งเป็นการดึงข้อมูลมาจากอินเตอร์เน็ต ทำได้จากหลายเครื่องมือ เช่น python แพคเกจ pandas และ R เป็นต้น
- การดึงข้อมูล และถ่ายโอนข้อมูล (Data loading & extracting หรือ ETL): การโหลด และแจกแจงข้อมูลมาเก็บไว้ในหลายรูปแบบ ตั้งแต่ XML, JSON, CSV หรือ text ทำได้โดยใช้เครื่องมือเช่น Beautiful Soup (หนึ่งในแพคเกจที่สามารถแจกแจง จัดการดึงข้อมูลจาก XML/HTML ได้), NLTK (หนึ่งในแพคเกจที่ใช้ในการประมวลผลภาษาธรรมชาติ หรือ natural language processing ) และ regular expressions (เรียกสั้นๆว่า Regex หนึ่งในแพคเกจที่ไว้ค้นหาข้อความตามรูปแบบที่กำหนด)
- การทำความสะอาดข้อมูล (Data cleaning): การตรวจสอบและจัดการปัญหาคุณภาพของข้อมูลที่เกิดขึ้นตามที่เราคุยกันไปข้างต้น ตั้งแต่การจัดการข้อมูลที่ขาด การทำให้ข้อมูลอยู่ในรูปแบบเดียวกัน
- การรวมกันของข้อมูล (Data integration): การรวมข้อมูลทั้งหมดให้มาอยู่ในชุดเดียวกัน เพื่อที่จะสร้างชุดข้อมูลที่สมบูรณ์ ซึ่งในขั้นตอนนี้เราอาจจะเจอปัญหาเรื่องข้อมูลซ้ำ การจับคู่ข้อมูล
- การศึกษาข้อมูล (Data profiling): การใช้สถิติ และกราฟเข้ามาช่วยในการตรวจสอบเพื่อเพิ่มคุณภาพของข้อมูล ในขั้นตอนนี้เราอาจจะเจอปัญหาคุณภาพข้อมูลเพิ่มเข้ามาอีก ทำให้ต้องย้อนขึ้นไปทำ Data cleaning และ Data integration ใหม่
- การทำให้ข้อมูลสมบูรณ์ (Data enrichment): การสรรค์สร้างข้อมูลที่มีอยู่ โดยการสร้าง feature การเปลี่ยนแปลงข้อมูล (data transformation), การลดมิติของข้อมูล (data reduction) เราต้องคิดว่าข้อมูลแบบไหนที่เราต้องการซึ่งสามารถดึงออกมาจากข้อมูลที่มีอยู่แล้วได้
- การเก็บข้อมูล (Data storing): การเก็บข้อมูลที่คลีนแล้ว สามารถเก็บไว้ได้ในหลายรูปแบบที่ง่ายต่อการนำไปวิเคราะห์ต่อในเครื่องมือที่เราถนัด
- การประมวลผลเอกสาร (Documenting the process): การทำเอกสาร นอกจากการคลีนข้อมูลแล้ว เราควรจะบันทึกสิ่งที่ทำไปในเอกสาร และอธิบายความหมายของตัวแปรต่างๆ
ตัวอย่างในการทำ Data Cleansing
เมื่อเราเข้าใจภาพรวมในการทำ Data Cleansing แล้ว ถ้าเพื่อนๆอยากลองทำกัน ก็เข้าไปลองทำได้โดยคลิกตามรูปข้างล่าง โดยเราได้เลือกตัวอย่างการคลีนข้อมูล Titanic ซึ่งเป็นข้อมูลชุดที่เป็นที่นิยมมากไว้ทางด้านซ้าย และแบบเรียนรู้การคลีนข้อมูลฟรีจาก Kaggle ไว้ทางด้านขวา มาให้เพื่อนๆ
สรุป Data Cleansing
จากที่เราคุยกันมาทั้งหมด เราก็ได้รู้ว่า Data Cleansing นั้นคืออะไร มีไว้ทำไม ข้อมูลคุณภาพมีหน้าตาเป็นอย่างไร โดยเราสามารถวิเคราะห์ได้จากอะไรบ้าง ปัญหาของข้อมูลที่เราอาจเจอ ชนิดของข้อมูล และขั้นตอนในกระบวนการ Data Cleansing รวมถึงมีตัวอย่างในการลงมือทำให้เพื่อนๆไปลองกันด้วย
สำหรับใครที่สงสัยว่าการเดินทางของข้อมูลตั้งแต่ต้นจนจบเป็นอย่างไร มีข้อมูลแล้ว คลีนแล้ว ไปเก็บไว้ที่ไหน เปิดดูบทความ Data Pipeline ของเราได้ด้านล่างนี้เลย
ถ้าเพื่อนๆคิดว่าบทความนี้มีประโยชน์ อยากฝากให้ช่วยแชร์ให้เพื่อน ๆ หน่อยนะคะ และถ้าอยากติดตามบทความดี ๆ ด้าน Data กันบน Facebook หรืออยากมาพูดคุย ติชมกัน เชิญได้ที่ Facebook Page: DataTH – Data Science ชิลชิล เลยนะค้าา
แล้วพบกันใหม่บทความหน้าค่ะ
ขอบคุณรูปภาพจาก Unsplash, Kaseya, และ Work illustrations by Storyset