จากการที่นักเรียนสำรวจข้อมูลคำตอบที่ตอบมามีหลายแบบโดยเราจะมากำหนดเป็นชนิดข้อมูลหลักๆ ดังนี้
ใช้เก็บข้อมูลในรูปแบบของข้อความชนิดต่างๆ ข้อมูล เช่น ชื่อ สกุล เลขประจำตัวประชาชน โดยข้อมูลประเภทนี้ไม่นำไปคำนวณทางคณิตศาสตร์
คือข้อมูลที่เราสามารถนำไปคำนวณได้ เช่น อายุ น้ำหนัก ส่วนสูง เงินเดือน นำไปคำนวณหาค่าต่างๆ ได้ เช่น เงินเดือน ไปคำนวณภาษี น้ำหนักส่วนสูง หา BMI
คือ ข้อมูลที่เป็นจุดสีต่าง ๆเมื่อนำมาเรียงต่อกันแล้วเกิดรูปภาพขึ้น
เช่น ภาพถ่าย ภาพลายเส้น เป็นต้น
https://aithaigen.in.th/learning-image-processing
โหมดสี RGB คือ
RGB ย่อมาจาก red, green และ blue คือระบบสีของแสง เกิดจากการหักเหของแสงกลายเป็นสีรุ้ง ด้วยกัน 7 สี ซึ่งเป็นช่วงแสงที่เราสามารถมองเห็นได้ แสงสีม่วงจะมีความถี่สูงสุดเรียกว่า อุนตร้าไวโอแรต และแสงสีแดงจะมีความถี่ต่ำสุด เรียกว่าอินฟาเรต คลื่นแสงที่มีความถี่สูงกว่าสีม่วง และต่ำ กว่าสีแดงนั้น สายตาของมนุษย์ไม่สามารถรับได้ แสงสีทั้งหมดเกิดจาก แสงสี 3 สี คือ สีแดง ( Red ) สีน้ำเงิน (Blue) และสีเขียว (Green) ทั้งสามสีถือเป็นแม่สีของแสง
แม่สีของแสงมีด้วยกัน 3 สี คือ สีแดง(R), สีเขียว(G), สีน้ำเงิน(B) และแต่ละแม่สีเมื่อรวมกันก็จะได้สีดังนี้
– สีแดง+สีเขียว = สีเหลือง Yellow
– สีเขียว+น้ำเงิน = สีฟ้า Cyan
– สีแดง+สีน้ำเงิน = สีแดงอมชมพู่ Magenta
เมื่อนำแม่สีของแสงทั้ง 3 มาผสมกัน ในปริมาณแสงสว่างเท่าๆกันก็จะได้เป็นแสงที่สีขาว แต่ถ้าผสมกันระหว่างแสงระดับความสว่างต่างกัน ก็จะได้ผลทีเป็นแสงสีๆ มากมายเป็นล้านสีทีเดียว
ข้อมูลภาพเคลื่อนไหว เช่น ภาพเคลื่อนไหว ภาพมิวสิกวีดีโอ ภาพยนตร์ คลิปวิดีโอ ข้อมูลประเภท รวมไปถึงเสียง
คือข้อมูลที่วัดคู่ออกมาเป็น "ตัวเลข" ที่นำไป บวก ลบ คูณ หาร หรือหาค่าเฉลี่ยได้จริง
Discrete Data (ข้อมูลแบบไม่ต่อเนื่อง): เป็นเลขจำนวนเต็มที่เกิดจากการนับ มีค่าเป็นจุดๆ ไม่สามารถแบ่งย่อยเป็นทศนิยมที่มีความหมายได้
ตัวอย่างในการสอน: จำนวนยอดขายสินค้า (ชิ้น), จำนวนนักเรียนในห้อง, จำนวนปุ่มกดบนหน้าเว็บ (Clicks)
คีย์เวิร์ดชวนคิด: "นับแล้วได้เท่าไหร่? มีครึ่งคน หรือครึ่งชิ้นได้ไหม?"
Continuous Data (ข้อมูลแบบต่อเนื่อง): เป็นข้อมูลจากการวัด สามารถมีจุดทศนิยมต่อเนื่องกันไปได้เรื่อยๆ ในช่วงหนึ่งๆ
ตัวอย่างในการสอน: รายได้ของบริษัท, อุณหภูมิห้อง, เวลาที่ผู้ใช้งานเปิดหน้าเว็บ (Session Duration)
คีย์เวิร์ดชวนคิด: "วัดแล้วได้เท่าไหร่? มีค่าละเอียดเป็นทศนิยมได้เรื่อยๆ"
คือข้อมูลที่อธิบายลักษณะ คุณสมบัติ หรือจัดเป็น "กลุ่ม" ไม่สามารถนำตัวเลขมาคำนวณตรงๆ ได้ (ต่อให้บันทึกเป็นตัวเลขก็เป็นแค่โค้ดแทนชื่อกลุ่ม)
Nominal Data (ข้อมูลกลุ่มไม่มีลำดับ): ข้อมูลที่จำแนกเป็นกลุ่มๆ แต่ละกลุ่มมีศักดิ์ศรีเท่ากัน ไม่มีใครมาก่อนมาหลัง หรือไม่มีอันดับความสำคัญ
ตัวอย่างในการสอน: เพศ, จังหวัดที่ลูกค้าอาศัยอยู่, ประเภทของสินค้า (Electronics, Fashion, Food)
ข้อควรระวังในการสอน: ต่อให้เราแปลง "ชาย = 1, หญิง = 2" เลข 2 ก็ไม่ได้แปลว่ามากกว่าเลข 1 มันเป็นแค่ชื่อเรียก
Ordinal Data (ข้อมูลกลุ่มมีลำดับ): ข้อมูลแบ่งกลุ่มที่มีเรื่องของ "อันดับ" หรือ "เลเวล" เข้ามาเกี่ยวข้อง สามารถเปรียบเทียบได้ว่าอะไรมากกว่าหรือสูงกว่า แต่บอกไม่ได้ว่าห่างกันเท่าไหร่เป๊ะๆ
ตัวอย่างในการสอน: ระดับความพึงพอใจ (น้อย, ปานกลาง, มาก), ขนาดเสื้อ (S, M, L, XL), ลำดับสมาชิก (Silver, Gold, Platinum)
ถ้าพูดถึงในมุมมองของ Computer Science และ Data Science การที่คอมพิวเตอร์เก็บข้อมูลมันจะมองมองลึกลงไปกว่าที่เราเห็นในตารางครับ คอมพิวเตอร์ไม่รู้จักคำว่า "ระดับความพึงพอใจ" หรือ "ยี่ห้อรถ" มันรู้จักแค่ บิตและไบต์ (0 กับ 1) และเลขฐาน
ดังนั้น เวลาเรานำข้อมูลแต่ละประเภท (Data Types) เข้าสู่คอมพิวเตอร์ มันจะมี "รูปแบบการจัดเก็บ (Storage Format)" ที่เปลี่ยนไป เพื่อให้ประมวลผลได้เร็วและประหยัดพื้นที่ที่สุดครับ
ผมสรุปภาพรวมการแปลงรูปแบบการเก็บข้อมูล จาก "แนวคิดทางสถิติ" ไปเป็น "สิ่งที่คอมพิวเตอร์บันทึกจริง" พร้อม เทคนิค (Data Encoding) ที่คนสาย Data ต้องเจอมาให้ครับ
ข้อมูลพวกนี้คอมพิวเตอร์ชอบที่สุด เพราะมันแปลงเป็นตัวเลขตรงๆ แต่อยู่ที่ว่าจะเลือกความละเอียดแบบไหน
ประเภทข้อมูล (สถิติ)
รูปแบบที่คอมพิวเตอร์เก็บ (Data Type ในคอม)
การเก็บในหน่วยความจำ / ตัวอย่าง
Discrete Data
(เลขจำนวนเต็ม/นับ)
Integer (int)
เช่น int32, int64
เก็บเป็นเลขฐานสองตรงๆ ไม่มีทศนิยม
• เลข 5 -> 00000101
• ใช้พื้นที่คงที่ (เช่น 4 ไบต์ สำหรับ int32)
Continuous Data
(เลขต่อเนื่อง/ทศนิยม)
Floating-Point (float)
เช่น float32, float64
เก็บในรูปแบบ Scientific Notation ($1.23 \times 10^4$) แต่เป็นฐานสอง (IEEE 754)
• แบ่งพื้นที่เป็น: เครื่องหมาย (+/-)
คอมพิวเตอร์ไม่สามารถเอาคำว่า "Male" หรือ "High" ไปคำนวณทางคณิตศาสตร์ได้ ตรงนี้แหละครับที่ Data Scientist ต้องทำการแปลงรูปแบบ (Encoding) เพื่อเปลี่ยนข้อความให้เป็นตัวเลขที่คอมพิวเตอร์เข้าใจ
ในการสอน คุณสามารถสตรีมไลน์เนื้อหาแบ่งตามเทคนิคหลักๆ 3 ตัวนี้ได้เลยครับ:
เหมาะสำหรับ: Ordinal Data (ข้อมูลกลุ่มที่มีลำดับชัดเจน)
หลักการแปลง: เปลี่ยนข้อความให้เป็นเลขจำนวนเต็ม (Integer) เรียงตามลำดับความสำคัญ
ตัวอย่างการจัดเก็บ:
"Low" $\rightarrow$ 0
"Medium" $\rightarrow$ 1
"High" $\rightarrow$ 2
สิ่งที่คอมพิวเตอร์เห็น: คอมพิวเตอร์จะมองข้อมูลนี้เป็นคอลัมน์เดียวที่เป็น int และรับรู้ว่า 2 > 1 > 0 ซึ่งตรงกับตรรกะของข้อมูลจริง
เหมาะสำหรับ: Nominal Data (ข้อมูลกลุ่มที่ไม่มีลำดับ)
หลักการแปลง: ถ้าเอา Nominal ไปทำ Label Encoding (เช่น แดง=0, เขียว=1, ฟ้า=2) คอมพิวเตอร์จะเข้าใจผิดว่า ฟ้า > เขียว > แดง วิธีแก้คือ "แตกคอลัมน์" ออกมาเป็นคอลัมน์ย่อยตามจำนวนกลุ่ม แล้วใช้เลข 1 (ใช่) กับ 0 (ไม่ใช่) แทน
ตัวอย่างการจัดเก็บ:
Suppose เรามีข้อมูลยี่ห้อรถ: Toyota, Honda, BMW
สิ่งที่คอมพิวเตอร์เห็น: กลายเป็นตารางที่มีแต่เลข 0 กับ 1 (Binary) หลายๆ คอลัมน์ ซึ่งโมเดล Machine Learning ส่วนใหญ่ต้องการข้อมูลรูปแบบนี้ครับ
เหมาะสำหรับ: ข้อมูลที่เป็นข้อความขนาดยาว หรือข้อมูลที่ยังไม่ได้เคลียร์ (Raw Data)
หลักการแปลง: คอมพิวเตอร์จะเก็บในรูปแบบ ASCII หรือ UTF-8 โดยมองตัวอักษรทุกตัวเป็นรหัสตัวเลขชุดหนึ่งมาต่อกัน
ตัวอย่างการจัดเก็บ: คำว่า "Data"
D = 68, a = 97, t = 116, a = 97
คอมพิวเตอร์เก็บ: 68 97 116 97 (ในรูปแบบฐานสอง)
ข้อจำกัดในการประมวลผล: กินพื้นที่หน่วยความจำสูงมาก และคอมพิวเตอร์ไม่สามารถนำมาหาความสัมพันธ์ทางสถิติได้โดยตรง ต้องผ่านการตัดคำ (Tokenization) หรือทำ Encoding ก่อนเสมอ
เวลาสอนเรื่องนี้ ลองเปิดรูปภาพนี้ (หรือวาดบนกระดาน) ให้นักเรียนดูพฤติกรรมของหน่วยความจำครับ:
"Memory Optimization (การประหยัดแรม)"
ใน Pandas (Python) ถ้าเราเก็บข้อมูลเพศเป็นข้อความ "Male", "Female" ซ้ำๆ กัน 1 ล้านแถว คอมพิวเตอร์จะใช้แรมมหาศาลเพราะต้องจำตัวอักษรทุกตัว
แต่ถ้าเราแปลงรูปแบบการเก็บให้เป็นประเภท category ในคอมพิวเตอร์ คอมพิวเตอร์จะแอบสร้างพจนานุกรมเล็กๆ ไว้เบื้องหลัง (0 = Female, 1 = Male) แล้วในตาราง 1 ล้านแถวนั้น มันจะเก็บแค่เลข 0 กับ 1 ซึ่งเป็นบิตเล็กๆ แทน ผลลัพธ์คือ ช่วยลดขนาดไฟล์และลดการใช้แรมลงได้มากกว่า 80-90% ทันที!
ในการเก็บข้อมูล นักเรียน ต้องจำแนกประเภท เพื่อการนำไปให้งาน และขนาดพื้นที่ในการเก็บงาน เนื่องจากข้อมูลแต่ละชนิดมีขนาดความจุไม่เท่ากัน
ถ้าใช้ประเภทไม่ถูกต้องอาจทำให้พืนที่ในการเก็บมากเกินจำเป็น
Primary key หรือ ค่าที่ระบุตัวตน ว่าถ้าค่านี้ต้องเป็นคนนี้ ค่านี้ต้องเป็นสิ่งนี้
primary key ต้องเก็บค่าที่ unique เท่านั้น ซ้ำกันไม่ได้
มีค่าเป็น NULL ไม่ได้
ในแต่ละตารางมี primary key ได้เพียงแต่เดียวเท่านั้น
เช่น รหัสประชาชน รหัสนักเรียน รหัสสินค้า ทะเบียนรถ