Tracks
Clustering คือเทคนิคของแมชชีนเลิร์นนิงแบบไม่ต้องมีผู้สอน (unsupervised) ที่มีการประยุกต์ใช้อย่างกว้างขวาง ทั้งในการรู้จำรูปแบบ การวิเคราะห์ภาพ การวิเคราะห์ลูกค้า การแบ่งส่วนตลาด การวิเคราะห์โซเชียลเน็ตเวิร์ก และอื่นๆ อีกมากมาย อุตสาหกรรมหลากหลายตั้งแต่สายการบินไปจนถึงสาธารณสุขต่างก็ใช้การจัดกลุ่มกันทั้งนั้น
นี่เป็นรูปแบบของการเรียนรู้แบบไม่ต้องมีผู้สอน หมายความว่าอัลกอริทึมการจัดกลุ่มไม่ต้องใช้ข้อมูลที่มีฉลากกำกับ ซึ่งเป็นข้อได้เปรียบสำคัญเมื่อเทียบกับการเรียนรู้แบบมีผู้สอน (supervised learning) อย่างเช่นการจำแนกประเภท ในบทความนี้จะอธิบายว่า Clustering คืออะไร มีประโยชน์ในกรณีธุรกิจใดบ้าง และแนะนำอัลกอริทึมสำคัญ 5 แบบดังนี้:
สรุปสั้นๆ
- Clustering เป็นแมชชีนเลิร์นนิงแบบไม่ต้องมีผู้สอน: ไม่ต้องใช้ข้อมูลที่มีฉลาก
- K-Means ใช้แพร่หลายที่สุด; DBSCAN จัดการสัญญาณรบกวนและรูปทรงคลัสเตอร์ที่ไม่สม่ำเสมอได้ดี; แบบลำดับชั้นเหมาะกับการวิเคราะห์เชิงสำรวจ
- ไม่มีอัลกอริทึมที่ดีที่สุดแบบครอบจักรวาล เลือกตามรูปทรงข้อมูล จำนวนคลัสเตอร์ที่คาดหวัง และระดับสัญญาณรบกวน
- คุณภาพของคลัสเตอร์วัดแบบโมเดลมีผู้สอนไม่ได้ ใช้ค่า Silhouette Score หรือ Davies-Bouldin Index เป็นแนวทาง ไม่ใช่คำตัดสินสุดท้าย
- scikit-learn มีอิมพลีเมนต์ทั้ง 5 อัลกอริทึมที่กล่าวถึงที่นี่ และมากกว่านั้นอีก 5 แบบ
Clustering คืออะไร?
Clustering คือกระบวนการจัดเรียงวัตถุให้วัตถุที่อยู่ในกลุ่มเดียวกัน (เรียกว่า “คลัสเตอร์”) มีความคล้ายคลึงกันมากกว่าวัตถุในกลุ่มอื่นๆ ผู้เชี่ยวชาญด้านข้อมูลมักใช้การจัดกลุ่มในช่วงการวิเคราะห์ข้อมูลเชิงสำรวจ (EDA) เพื่อค้นหาข้อมูลและรูปแบบใหม่ๆ ในข้อมูล และเนื่องจากเป็นการเรียนรู้แบบไม่ต้องมีผู้สอน จึงไม่ต้องใช้ชุดข้อมูลที่มีฉลากกำกับด้วย
การจัดกลุ่มไม่ใช่อัลกอริทึมตัวเดียว แต่เป็นภารกิจทั่วไปที่ต้องแก้ให้ได้ ซึ่งทำได้ด้วยอัลกอริทึมหลากหลายที่แตกต่างกันมาก ทั้งในความหมายของ “คลัสเตอร์” และวิธีค้นหาให้ได้อย่างมีประสิทธิภาพ
สร้างสัญชาตญาณต่อการจัดกลุ่ม
ก่อนเจาะลึกรายละเอียดเชิงอัลกอริทึม มาลองปูสัญชาตญาณด้วยตัวอย่างง่ายๆ ของชุดข้อมูลรูปผลไม้ สมมติว่ามีชุดภาพจำนวนมากที่มีผลไม้สามชนิด: (i) สตรอว์เบอร์รี (ii) ลูกแพร์ และ (iii) แอปเปิล
ภาพทั้งหมดในชุดข้อมูลถูกผสมปนกัน และโจทย์คือจัดกลุ่มผลไม้ที่คล้ายกันเข้าด้วยกัน กล่าวคือสร้าง 3 กลุ่ม โดยแต่ละกลุ่มมีผลไม้ชนิดเดียว นี่แหละคือสิ่งที่อัลกอริทึมการจัดกลุ่มจะทำให้

เกณฑ์ความสำเร็จสำคัญของการวิเคราะห์การจัดกลุ่ม
แตกต่างจากกรณีการเรียนรู้แบบมีผู้สอนอย่างการจำแนกหรือรีเกรสชัน การจัดกลุ่มไม่สามารถทำแบบอัตโนมัติตั้งแต่ต้นจนจบได้ เป็นกระบวนการค้นพบข้อมูลแบบวนซ้ำที่ต้องอาศัยความรู้เชิงโดเมนและวิจารณญาณของมนุษย์ เพื่อปรับข้อมูลและพารามิเตอร์ของโมเดลให้ได้ผลลัพธ์ที่ต้องการ
ที่สำคัญที่สุด เพราะเป็นการเรียนรู้แบบไม่ต้องมีผู้สอนและไม่ใช้ข้อมูลที่มีฉลาก เราจึงไม่สามารถคำนวณตัวชี้วัดอย่าง accuracy, AUC, RMSE ฯลฯ เพื่อเปรียบเทียบอัลกอริทึมหรือเทคนิคการเตรียมข้อมูลต่างๆ ได้ ผลคือการประเมินประสิทธิภาพของโมเดลจัดกลุ่มจึงท้าทายและขึ้นอยู่กับมุมมองมาก
เกณฑ์ความสำเร็จหลักๆ ของโมเดลจัดกลุ่มได้แก่:
- ตีความได้หรือไม่
- ผลลัพธ์ของการจัดกลุ่มมีประโยชน์ต่อธุรกิจหรือไม่
- ได้เรียนรู้ข้อมูลใหม่หรือค้นพบรูปแบบใหม่ในข้อมูลที่ไม่เคยทราบมาก่อนการจัดกลุ่มหรือไม่
การวัดคุณภาพของการจัดกลุ่ม
เมื่อไม่มีข้อมูลที่มีฉลาก จะคำนวณ accuracy หรือ AUC ไม่ได้ สองเมตริกต่อไปนี้ช่วยบ่งชี้ว่าคลัสเตอร์แยกจากกันดีเพียงใด เมตริกที่ใช้บ่อย:
- Silhouette Score วัดว่าจุดข้อมูลมีความคล้ายกับคลัสเตอร์ของตนเองเมื่อเทียบกับคลัสเตอร์ที่ใกล้ที่สุดเพียงใด มีค่าระหว่าง -1 ถึง 1; มากกว่า 0.5 มักบ่งชี้ว่าคลัสเตอร์แยกกันได้ดี
- Davies-Bouldin Index วัดค่าเฉลี่ยความคล้ายกันระหว่างแต่ละคลัสเตอร์กับคลัสเตอร์ที่คล้ายที่สุด — ยิ่งต่ำยิ่งดี
ทั้งสองเมตริกมีให้ใช้ใน scikit-learn: sklearn.metrics.silhouette_score(X, labels) และ sklearn.metrics.davies_bouldin_score(X, labels).
1. K-Means
K-Means เป็นอัลกอริทึมที่ใช้กันแพร่หลายที่สุดสำหรับงานจัดกลุ่ม ส่วนหนึ่งเพราะขั้นตอนเข้าใจง่ายและใช้งานผ่าน scikit-learn ได้สะดวก เป็นอัลกอริทึมแบบเซนทรอยด์ที่ผู้ใช้ต้องกำหนดจำนวนคลัสเตอร์ที่ต้องการสร้าง
มักอ้างอิงจากกรณีใช้งานทางธุรกิจ หรือทดลองค่าจำนวนคลัสเตอร์หลายๆ ค่าแล้วประเมินผลลัพธ์
K-Means เป็นอัลกอริทึมแบบวนซ้ำที่สร้างคลัสเตอร์ไม่ทับซ้อนกัน หมายความว่าอินสแตนซ์แต่ละรายการในชุดข้อมูลจะอยู่ได้เพียงคลัสเตอร์เดียว วิธีเข้าใจ K-Means ที่ง่ายที่สุดคือดูขั้นตอนพร้อมแผนภาพตัวอย่างด้านล่าง และอ่านคำอธิบายละเอียดในบทความ K-Means Clustering in Python และ K-Means Clustering in R
- ผู้ใช้กำหนดจำนวนคลัสเตอร์
- สุ่มเริ่มต้นเซนทรอยด์ตามจำนวนคลัสเตอร์ ในแผนภาพด้านล่าง ที่ Iteration 1 จะเห็นว่าเซนทรอยด์สามจุดถูกสุ่มเริ่มในสีน้ำเงิน แดง และเขียว
- คำนวณระยะห่างระหว่างจุดข้อมูลกับแต่ละเซนทรอยด์ และกำหนดจุดข้อมูลให้กับเซนทรอยด์ที่ใกล้ที่สุด
- คำนวณค่าเฉลี่ยใหม่ของเซนทรอยด์จากจุดข้อมูลที่ถูกกำหนดทั้งหมด ตำแหน่งของเซนทรอยด์จึงเปลี่ยนไปตามที่เห็นใน Iteration 2 - 9 จนกระทั่งคงตัว
- ทำซ้ำต่อไปจนกว่าค่าเฉลี่ยของเซนทรอยด์จะไม่เปลี่ยน หรือถึงพารามิเตอร์ max_iter ซึ่งเป็นจำนวนรอบสูงสุดที่ผู้ใช้กำหนด ใน scikit-learn ค่าเริ่มต้นของ max_iter คือ 300

ที่มาภาพ: Learnbymarketing.com
2. MeanShift
ต่างจาก K-Means อัลกอริทึม MeanShift ไม่ต้องระบุจำนวนคลัสเตอร์ล่วงหน้า อัลกอริทึมจะกำหนดจำนวนคลัสเตอร์ให้อัตโนมัติ ซึ่งเป็นข้อได้เปรียบเมื่อไม่ทราบว่าข้อมูลมีคลัสเตอร์กี่กลุ่ม
MeanShift ก็เป็นวิธีแบบเซนทรอยด์และจัดสรรจุดข้อมูลเข้าคลัสเตอร์แบบวนซ้ำ กรณีใช้งานที่พบบ่อยคือการแยกส่วนภาพ (image segmentation)
MeanShift อาศัยการประมาณความหนาแน่นแบบเคอร์เนล คล้ายกับ K-Means ที่จะเลื่อนแต่ละจุดข้อมูลไปยังเซนทรอยด์ที่ใกล้ที่สุดซึ่งเริ่มต้นแบบสุ่ม และเลื่อนตำแหน่งจุดแบบวนซ้ำไปยังบริเวณที่มีจุดหนาแน่นที่สุด หรือก็คือ “โหมด” (โหมดคือบริเวณที่มีความหนาแน่นของจุดสูงสุดในบริบทของ MeanShift)
ด้วยเหตุนี้ MeanShift จึงถูกเรียกว่าอัลกอริทึมค้นหาโหมด ขั้นตอนมีดังนี้:
- เลือกจุดแบบสุ่มหนึ่งจุด และสร้างหน้าต่างรอบจุดนั้น
- คำนวณค่าเฉลี่ยของทุกจุดภายในหน้าต่าง
- เลื่อนหน้าต่างตามทิศทางของโหมด
- ทำซ้ำขั้นตอนจนกว่าจะคงตัว

ที่มาภาพ: ResearchGate
หากต้องการดูตัวอย่างการใช้งานแบบทีละขั้นตอน โปรดดู บทเรียน Mean Shift Clustering
3. DBSCAN
DBSCAN หรือ Density-Based Spatial Clustering of Applications with Noise เป็นอัลกอริทึมการจัดกลุ่มแบบไม่ต้องมีผู้สอนที่ตั้งอยู่บนแนวคิดว่าคลัสเตอร์คือบริเวณที่หนาแน่น แยกจากกันด้วยบริเวณที่มีความหนาแน่นต่ำกว่า
ข้อได้เปรียบใหญ่เหนือ K-Means และ MeanShift คือทนทานต่อ outlier กล่าวคือจะไม่รวมจุดข้อมูลที่เป็น outlier เข้าในคลัสเตอร์ใดๆ
DBSCAN ต้องการพารามิเตอร์เพียงสองตัวจากผู้ใช้:
-
รัศมีของวงกลมรอบจุดข้อมูลแต่ละจุด หรือที่เรียกว่า
epsilon -
minPointsซึ่งกำหนดจำนวนจุดขั้นต่ำภายในวงกลมนั้น เพื่อให้จุดดังกล่าวถูกจัดเป็นจุดแกน (Core point)
แต่ละจุดข้อมูลจะถูกล้อมด้วยวงกลมรัศมี epsilon และ DBSCAN จะจัดประเภทว่าเป็น Core point, Border point หรือ Noise point จุดจะเป็น Core point หากมีจำนวนจุดภายในวงกลมไม่น้อยกว่าค่าที่กำหนดโดย minPoints
หากมีจำนวนน้อยกว่าขั้นต่ำจะถือเป็น Border Point และจะถือเป็น Noise หากไม่มีจุดอื่นๆ อยู่ในระยะ epsilon ของจุดใดเลย จุดที่เป็น Noise จะไม่ถูกจัดให้อยู่ในคลัสเตอร์ใด (เป็น outlier)
กรณีใช้งานที่พบบ่อยของ DBSCAN ได้แก่:
- แยกคลัสเตอร์ที่หนาแน่นสูงและต่ำได้ดี;
- ทำงานได้ดีบนชุดข้อมูลที่ไม่เป็นเชิงเส้น และ
- ใช้สำหรับตรวจจับความผิดปกติ เพราะจะแยกจุดที่เป็นสัญญาณรบกวนออกและไม่จัดให้เป็นคลัสเตอร์ใด
DBSCAN เทียบกับ K-Means
ความแตกต่างที่พบบ่อยระหว่าง DBSCAN กับ K-Means ได้แก่:
- K-Means จะจัดกลุ่มอินสแตนซ์ทั้งหมดในชุดข้อมูล ขณะที่ DBSCAN จะไม่จัดจุดที่เป็นสัญญาณรบกวน (outlier) เข้าในคลัสเตอร์ที่ถูกต้อง
- K-Means มีปัญหากับคลัสเตอร์ที่ไม่เป็นสากล (non-global) ขณะที่ DBSCAN จัดการได้ราบรื่น
- K-Means สมมติว่าจุดข้อมูลทั้งหมดมาจากการกระจายแบบเกาส์เซียน ขณะที่ DBSCAN ไม่ตั้งสมมติฐานเกี่ยวกับข้อมูล
เรียนรู้เพิ่มเติมได้ในคู่มืออัลกอริทึม DBSCAN ที่ครอบคลุมการปรับพารามิเตอร์และตัวอย่างการทำงาน

ที่มาภาพ: Medium
4. การจัดกลุ่มแบบลำดับชั้น (Hierarchical Clustering)
Hierarchical clustering เป็นวิธีการจัดกลุ่มที่สร้างลำดับชั้นของคลัสเตอร์ มีสองแบบคือ
- Agglomerative: แนวทางจากล่างขึ้นบน โดยเริ่มจากถือว่าแต่ละข้อมูลเป็นคลัสเตอร์ของตนเอง แล้วค่อยๆ จับคู่รวมกัน และจับคู่ของคู่ให้เป็นคลัสเตอร์ใหญ่ขึ้น
- Divisive: แนวทาง “จากบนลงล่าง” โดยเริ่มจากรวมข้อมูลทั้งหมดไว้ในคลัสเตอร์เดียว แล้วค่อยๆ แยกย่อยแบบวนซ้ำลงมา
ในการวิเคราะห์ข้อมูลจากโซเชียลเน็ตเวิร์ก วิธีลำดับชั้นเป็นวิธีที่นิยมมากที่สุด โหนด (กิ่งก้าน) ในกราฟจะถูกเปรียบเทียบกันตามระดับความคล้ายคลึง และเมื่อเชื่อมกลุ่มโหนดย่อยที่สัมพันธ์กัน ก็จะเกิดเป็นกลุ่มใหญ่ขึ้น
ข้อได้เปรียบสำคัญของวิธีนี้คือเข้าใจและใช้งานง่าย ผลลัพธ์มักแสดงเป็นภาพอย่างตัวอย่างด้านล่าง เรียกว่า Dendrogram
เรียนรู้เพิ่มเติมได้จากบทเรียนการจัดกลุ่มแบบลำดับชั้น ที่สอนการสร้างและอ่านเดนโตรแกรมใน Python

ที่มาภาพ: ResearchGate
5. BIRCH
BIRCH ย่อมาจาก Balanced Iterative Hierarchical Based Clustering ใช้กับชุดข้อมูลขนาดใหญ่มากที่ K-Means ขยายสเกลได้ยาก อัลกอริทึม BIRCH จะแบ่งข้อมูลขนาดใหญ่เป็นคลัสเตอร์ย่อยหลายๆ กลุ่ม พร้อมพยายามเก็บข้อมูลให้ได้มากที่สุด แล้วค่อยจัดกลุ่มย่อยเหล่านั้นอีกครั้งเพื่อให้ได้ผลลัพธ์สุดท้าย แทนที่จะจัดกลุ่มจากชุดใหญ่โดยตรง
BIRCH มักใช้ประกอบกับอัลกอริทึมอื่น โดยสร้างสรุปข้อมูลให้ผู้อื่นนำไปใช้ ผู้ใช้ต้องกำหนดจำนวนคลัสเตอร์สำหรับฝึก BIRCH คล้ายกับ K-Means
หนึ่งในข้อดีของ BIRCH คือสามารถจัดกลุ่มจุดข้อมูลหลายมิติได้แบบค่อยเป็นค่อยไปและไดนามิก เพื่อสร้างคลัสเตอร์คุณภาพสูงภายใต้ข้อจำกัดหน่วยความจำและเวลา ส่วนใหญ่แล้ว BIRCH เพียงกวาดฐานข้อมูลหนึ่งรอบ ทำให้ขยายสเกลได้ดี
กรณีใช้งานที่พบบ่อยคือใช้เป็นทางเลือกที่ประหยัดหน่วยความจำแทน K-Means สำหรับชุดข้อมูลขนาดใหญ่ที่ K-Means ไม่ไหวเพราะข้อจำกัดด้านเมมโมรีหรือคอมพิวต์
การประยุกต์ใช้ Clustering ทางธุรกิจ
Clustering มีการใช้งานกว้างขวางในหลายอุตสาหกรรม: สื่อ สาธารณสุข การผลิต ค้าปลีก และทุกที่ที่มีข้อมูลแบบไม่มีฉลากจำนวนมาก ต่อไปนี้คือตัวอย่างเชิงปฏิบัติ
การแบ่งกลุ่มลูกค้า
จัดประเภทลูกค้าตามพฤติกรรมการซื้อหรือความสนใจด้วยอัลกอริทึมการจัดกลุ่ม เพื่อพัฒนากลยุทธ์การตลาดแบบเจาะจง
ลองจินตนาการว่ามีลูกค้า 10 ล้านราย และต้องการทำแคมเปญการตลาดแบบเฉพาะราย ย่อมเป็นไปไม่ได้ที่จะทำแคมเปญ 10 ล้านแบบ เราจึงอาจใช้การจัดกลุ่มเพื่อแบ่งลูกค้า 10 ล้านรายออกเป็น 25 คลัสเตอร์ แล้วออกแบบแคมเปญ 25 แบบแทน

ที่มาภาพ: Medium
การจัดกลุ่มในค้าปลีก
ธุรกิจค้าปลีกมีโอกาสใช้การจัดกลุ่มหลายด้าน เช่น รวบรวมข้อมูลของแต่ละสาขาแล้วจัดกลุ่มในระดับสาขาเพื่อหาข้อสรุปว่าโลเคชันใดคล้ายกันจากตัวชี้วัดอย่างจำนวนคนเดินผ่าน ยอดขายเฉลี่ย จำนวน SKU เป็นต้น
อีกตัวอย่างคือการจัดกลุ่มในระดับหมวดหมู่สินค้า ในแผนภาพด้านล่างมี 8 สโตร์ สีต่างๆ แทนคลัสเตอร์ที่ต่างกัน มีทั้งหมด 4 คลัสเตอร์ในตัวอย่างนี้
สังเกตว่าหมวดผลิตภัณฑ์ระงับกลิ่นกายของสโตร์ 1 อยู่ในคลัสเตอร์สีแดง ขณะที่สโตร์ 2 อยู่ในคลัสเตอร์สีน้ำเงิน แสดงให้เห็นว่าเป้าหมายตลาดของทั้งสองสโตร์สำหรับหมวดนี้แตกต่างกันอย่างสิ้นเชิง

ที่มาภาพ: dotactiv.com
การจัดกลุ่มในการดูแลรักษาทางคลินิก / การจัดการโรค
ด้านสาธารณสุขและวิทยาศาสตร์คลินิกมีกรณีใช้การจัดกลุ่มที่เข้มแข็ง ตัวอย่างหนึ่งคือผลงานของ Komaru & Yoshida และคณะ ปี 2020 ที่รวบรวมข้อมูลประชากรและผลแล็บของผู้ป่วย 101 ราย แล้วแบ่งเป็น 3 คลัสเตอร์
แต่ละคลัสเตอร์แสดงสภาวะที่ต่างกัน เช่น คลัสเตอร์ 1 เป็นผู้ป่วยที่มี WBC และ CRP ต่ำ คลัสเตอร์ 2 มี BMP และ Serum สูง ส่วนคลัสเตอร์ 3 มี Serum ต่ำ แต่ละคลัสเตอร์สะท้อนเส้นทางการรอดชีวิตที่ต่างกันเมื่อพิจารณาอัตราการเสียชีวิตภายใน 1 ปีหลังฟอกไต

ที่มาภาพ: elsevierhealth.com
การแยกส่วนภาพ (Image Segmentation)
การแยกส่วนภาพคือการจัดประเภทส่วนต่างๆ ของภาพออกเป็นกลุ่ม มีงานวิจัยมากมายที่ใช้การจัดกลุ่มกับงานนี้ เหมาะเมื่ออยากแยกวัตถุในภาพเพื่อวิเคราะห์แยกแต่ละชิ้นว่าเป็นอะไร
ในตัวอย่างด้านล่าง ด้านซ้ายคือภาพต้นฉบับ ส่วนด้านขวาคือผลลัพธ์จากอัลกอริทึมจัดกลุ่ม จะเห็นได้ชัดว่ามี 4 คลัสเตอร์ ซึ่งตรงกับ 4 วัตถุในภาพที่จำแนกจากพิกเซล (เสือ หญ้า น้ำ และทราย)
เปรียบเทียบอัลกอริทึมการจัดกลุ่ม
มีอัลกอริทึมการจัดกลุ่มแบบไม่ต้องมีผู้สอน 10 แบบให้ใช้ในscikit-learn ไลบรารีแมชชีนเลิร์นนิงยอดนิยมของ Python แต่ละอัลกอริทึมมีความแตกต่างพื้นฐานในการกำหนดและจัดสรรคลัสเตอร์ในชุดข้อมูล
ความต่างในเชิงคณิตศาสตร์ของอัลกอริทึมเหล่านี้สรุปได้เป็น 4 มิติสำหรับการเปรียบเทียบ:
- พารามิเตอร์ที่โมเดลต้องการ
- ความสามารถในการขยายสเกล
- กรณีใช้งาน
- เรขาคณิต เช่น เมตริกที่ใช้คำนวณระยะทาง
ในแผนภาพด้านล่าง แต่ละคอลัมน์คือผลลัพธ์จากอัลกอริทึมต่างกัน เช่น K-Means, Affinity Propagation, MeanShift เป็นต้น รวมทั้งหมด 10 อัลกอริทึมที่ฝึกบนชุดข้อมูลเดียวกัน
บางอัลกอริทึมให้ผลลัพธ์เหมือนกัน สังเกตว่า Agglomerative Clustering, DBSCAN, OPTICS และ Spectral Clustering ให้คลัสเตอร์เหมือนกัน
ทว่าเมื่อเปรียบเทียบผลของ K-Means กับ MeanShift จะเห็นว่าต่างกัน โดย K-Means ได้สองกลุ่ม (น้ำเงินและส้ม) ขณะที่ MeanShift ได้สามกลุ่มคือ น้ำเงิน เขียว และส้ม

ที่มาภาพ: scikit-learn
สุดท้ายแล้ว (หรืออาจเรียกว่าดีด้วย) การจัดกลุ่มไม่มีคำตอบที่ “ถูก” หรือ “ผิด” หากบอกได้ง่ายๆ ว่า “อัลกอริทึม X ทำได้ดีที่สุดที่นี่” ก็คงจะดี
แต่นั่นเป็นไปไม่ได้ และด้วยเหตุนี้เองการจัดกลุ่มจึงเป็นงานที่ท้าทายมาก
ท้ายที่สุด อัลกอริทึมใดจะทำงานได้ดีกว่าไม่ได้ขึ้นกับเมตริกที่วัดได้ง่าย แต่ขึ้นกับการตีความและความเป็นประโยชน์ต่อกรณีใช้งานนั้นๆ
จะเลือกอัลกอริทึมจัดกลุ่มอย่างไร
แต่ละอัลกอริทึมเหมาะกับเงื่อนไขข้อมูลต่างกัน ใช้ตารางนี้เป็นจุดเริ่มต้น แล้วทดลองอย่างน้อยสองอัลกอริทึมกับข้อมูลจริงก่อนตัดสินใจ
| อัลกอริทึม | เมื่อควรใช้ | ข้อจำกัดหลัก | พารามิเตอร์ที่ต้องใช้ |
|---|---|---|---|
| K-Means | ชุดข้อมูลขนาดใหญ่ที่คลัสเตอร์มีรูปทรงใกล้ทรงกลม | ไวต่อ outlier; ต้องกำหนด k ล่วงหน้า |
จำนวนคลัสเตอร์ (k) |
| MeanShift | ไม่ทราบจำนวนคลัสเตอร์; การแยกส่วนภาพ | ช้าเมื่อข้อมูลใหญ่; การตั้งค่า bandwidth ทำได้ยาก | Bandwidth (สามารถประเมินอัตโนมัติได้) |
| DBSCAN | ข้อมูลมีสัญญาณรบกวน; รูปทรงคลัสเตอร์ไม่สม่ำเสมอ; ตรวจจับความผิดปกติ | ลำบากเมื่อคลัสเตอร์มีความหนาแน่นต่างกันมาก | epsilon, minPoints |
| Hierarchical | การวิเคราะห์เชิงสำรวจ; ข้อมูลโซเชียลเน็ตเวิร์ก; ชุดข้อมูลขนาดเล็ก | ใช้หน่วยความจำมาก; ไม่ขยายสเกลถึงระดับหลายล้านแถว | วิธี linkage (ward, complete, average) |
| BIRCH | ชุดข้อมูลใหญ่มากที่ K-Means ใช้หน่วยความจำไม่พอ | แม่นยำน้อยกว่า K-Means เมื่อข้อมูลขนาดเล็ก | Branching factor, threshold, จำนวนคลัสเตอร์ |
แนวทางเริ่มต้นเชิงปฏิบัติ: ลอง K-Means ก่อนเพราะเร็ว สลับไปใช้ DBSCAN หากข้อมูลมีรูปทรงไม่สม่ำเสมอหรือมี outlier และใช้การจัดกลุ่มแบบลำดับชั้นเมื่ออยากสำรวจโครงสร้างคลัสเตอร์ด้วยเดนโตรแกรมก่อนเลือกค่า k
ข้อคิดส่งท้าย
Clustering นำไปใช้ยากกว่าวิธีแบบมีผู้สอนอย่างการจำแนกประเภทและรีเกรสชันด้วยสองเหตุผลคือ ไม่สามารถวัดผลเทียบกับฉลากเป้าหมายได้ และพารามิเตอร์อย่างจำนวนคลัสเตอร์ต้องอาศัยวิจารณญาณเชิงโดเมนมากกว่าการคัดเลือกเชิงอัลกอริทึม
Clustering เป็นทักษะที่มีคุณค่าข้ามบทบาทงาน นักวิทยาศาสตร์ข้อมูล วิศวกร ML และนักวิเคราะห์ต่างก็เจอโจทย์ที่แก้ได้ด้วยการจัดกลุ่ม
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Clustering และแมชชีนเลิร์นนิงแบบไม่ต้องมีผู้สอน พร้อมการลงมือทำในภาษา Python และ R คอร์สด้านล่างจะช่วยให้ก้าวหน้าได้:
คำถามที่พบบ่อย (FAQs)
Clustering เป็นแมชชีนเลิร์นนิงแบบมีผู้สอนหรือไม่ต้องมีผู้สอน?
Clustering เป็นเทคนิคแมชชีนเลิร์นนิงแบบไม่ต้องมีผู้สอน ไม่ต้องใช้ข้อมูลที่มีฉลากในการฝึก
Clustering ต้องใช้ข้อมูลที่มีฉลากหรือไม่?
ไม่จำเป็น อัลกอริทึมการจัดกลุ่มไม่ต้องใช้ข้อมูลที่มีฉลาก หากมีข้อมูลที่มีฉลาก ควรใช้อัลกอริทึมการจำแนกแบบมีผู้สอน
ทำการจัดกลุ่มกับข้อมูลเชิงหมวดหมู่ได้ไหม?
ได้ เช่นเดียวกับแมชชีนเลิร์นนิงแบบมีผู้สอน หากข้อมูลมีตัวแปรประเภทเชิงหมวดหมู่ ต้องทำการเข้ารหัสด้วยเทคนิคอย่าง one-hot encoding อัลกอริทึมบางแบบเช่น K-Modes รองรับข้อมูลเชิงหมวดหมู่ได้โดยไม่ต้องเข้ารหัส
Clustering คือแมชชีนเลิร์นนิงหรือไม่?
ได้ Clustering คือแมชชีนเลิร์นนิง โดยเฉพาะแบบไม่ต้องมีผู้สอน
Clustering เป็นการวิเคราะห์เชิงพรรณนาหรือเชิงพยากรณ์?
Clustering ใช้ได้ทั้งงานวิเคราะห์เชิงพรรณนาและเชิงพยากรณ์ แต่มักพบมากในงานวิเคราะห์ข้อมูลเชิงสำรวจซึ่งเป็นเชิงพรรณนา
วัดประสิทธิภาพของอัลกอริทึมจัดกลุ่มได้หรือไม่?
ไม่มีวิธีวัดประสิทธิภาพที่แน่นอนแบบที่มีในแมชชีนเลิร์นนิงแบบมีผู้สอน (เช่น AUC, Accuracy, R2 ฯลฯ) คุณภาพโมเดลขึ้นกับการตีความผลลัพธ์และกรณีใช้งาน อย่างไรก็ดี มีเมตริกเลี่ยงทางบางอย่างเช่น Homogeneity Score, Silhouette Score เป็นต้น
ใช้การจัดกลุ่มเพื่อทำฟีเจอร์เอนจิเนียริงในแมชชีนเลิร์นนิงแบบมีผู้สอนได้หรือไม่?
ได้ อัลกอริทึมจัดกลุ่มจะกำหนดฉลากเป็นกลุ่มให้กับข้อมูล ท้ายที่สุดจะได้คอลัมน์เชิงหมวดหมู่ใหม่ในชุดข้อมูล ดังนั้นจึงมักใช้การจัดกลุ่มเพื่อทำฟีเจอร์เอนจิเนียริงในงานแบบมีผู้สอน