บทความนี้จะพามาดูเกี่ยวกับ การจัดกลุ่ม (Clustering) ซึ่งเป็นการเรียนรู้แบบไม่มีผู้สอนหรือที่เรียกกันว่า Unsupervised Learning หมายถึง การเรียนรู้จากข้อมูลตัวอย่างที่ไม่มีการกำหนดค่าเป้าหมาย (Target) หรือฉลาก (Label) ของคลาส (Class) ไว้ ในบทความนี้จะกล่าวเน้นถึงการจัดกลุ่มด้วยขั้นตอนวิธี Fuzzy C-Means ซึ่งเป็นขั้นตอนวิธีที่ได้รับความนิยมอย่างสูงในการจัดกลุ่ม
ขั้นตอนวิธี Fuzzy C-Means
ขั้นตอนวิธีนี้มีความคล้ายคลึงกับขั้นตอนวิธี K-Means แต่แตกต่างกันที่ตัวอย่างแต่ละตัวอย่างจะไม่ถูกตัดสินให้อยู่ในกลุ่มใดกลุ่มหนึ่ง โดยจะกำหนดฟังก์ชันความเป็นสมาชิก (Membership Function) ขึ้น เพื่อระบุความเป็นสมาชิกของแต่ละกลุ่ม
หลักการของ Fuzzy Logic
สามารถนำมาใช้ในการแบ่งกลุ่มข้อมูลหลายมิติได้ โดยข้อมูลแต่ละจุดจะมีระดับความเป็นสมาชิก (Membership) ในแต่ละกลุ่ม (Cluster) ตั้งแต่ 0% ถึง 100% ซึ่งแตกต่างจากการแบ่งกลุ่มแบบเดิมที่ข้อมูลแต่ละจุดจะถูกจัดอยู่ในกลุ่มเดียวอย่างชัดเจน FCM จะวัดระยะห่างระหว่างจุดข้อมูลกับศูนย์กลางของแต่ละกลุ่ม เพื่อคำนวณค่าความเป็นสมาชิก ยิ่งข้อมูลอยู่ใกล้ศูนย์กลางมากเท่าไหร่ ค่าความเป็นสมาชิกก็จะยิ่งสูงมากขึ้น และผลรวมของค่าความเป็นสมาชิกของแต่ละจุดข้อมูลจะต้องรวมกันได้เท่ากับ 1
ขั้นตอนการทำงานของ Fuzzy C-Means
1.กำหนดจำนวนกลุ่ม k
2.สุ่มค่าเริ่มต้นศูนย์กลางกลุ่ม (Centroid)
3.คำนวณค่าความเป็นสมาชิกของแต่ละจุดข้อมูลต่อแต่ละกลุ่ม
4.ปรับศูนย์กลางกลุ่มใหม่จากค่าความเป็นสมาชิก
5.ทำซ้ำข้อ 3-4 จนกว่าจะเข้าเงื่อนไขหยุด (ค่าการเปลี่ยนแปลงต่ำมาก หรือครบจำนวนรอบที่กำหนด)
ข้อดีของ FCM
- เหมาะกับข้อมูลที่กลุ่มซ้อนกัน
- จุดข้อมูลสามารถเป็นสมาชิกของหลายกลุ่ม
ข้อเสียของ FCM
- ต้องกำหนดจำนวนกลุ่มล่วงหน้า
- ค่าพารามิเตอร์ m ส่งผลต่อผลลัพธ์
- ใช้ Euclidean Distance อาจมีผลต่อข้อมูลที่มีหลายสเกล
- ขึ้นอยู่กับการเลือกจุดเริ่มต้น
การนำ FCM มาใช้งาน
ขั้นตอนที่ 1 ติดตั้ง Library
โดยใช้ library ที่ชื่อว่า scikit-fuzzy สำหรับทำ Fuzzy Clustering ด้วย Python
ขั้นตอนที่ 2 Import Library
เราจะใช้ cmeans จาก library skfuzzy ทำ Fuzzy C-Means Clustering
ขั้นตอนที่ 3 เตรียมข้อมูล (Sample Documents)
สร้าง list ที่ชื่อ documents แล้วเก็บข้อความที่จะเอามา Clustering และแปลงข้อความเป็นตัวเลข
ขั้นตอนที่ 4 ทำ Clustering ด้วย Fuzzy C-Means
เพื่อหาว่า Document แต่ละอันอยู่ใน cluster ไหนและมี cluster กี่อัน
ซึ่งหมายถึงมี cluster 0 อยู่ 1 จุด และ cluster 1 อยู่ 2 จุด
ขั้นตอนที่ 5 แสดงผลด้วยกราฟ scatter plot
โดยที่ import matplotlib.pyplot as plt ใช้สำหรับวาดกราฟ
plt.scatter ใช้แสดงจุดข้อมูลที่อยู่ใน cluster0 ด้วยสีแดง และ cluster1 ด้วยสีเขียว
plt.legend() แสดงคำอธิบายของแต่ละสีในกราฟ
จากการจัดกลุ่ม (Clustering) โดยใช้วิธี Fuzzy C-Means ในการแบ่งกลุ่มข้อมูลทำให้เราได้ทั้งหมด 2 cluster โดยที่ cluster 0 (สีแดง) มีข้อมูลอยู่ในกลุ่มนี้ 1 จุด และ cluster 1 (สีเขียว) มีข้อมูลอยู่ในกลุ่มนี้ 2 จุด
ตัวอย่างเพิ่มเติม
เราจะลองมาหา cluster ของสายพันธุ์แมว ด้วยวิธี Fuzzy C-Means ซึ่งได้ทำการเพิ่ม cluster เป็น 3 โดยกำหนดให้ cluster 1 เป็นสีแดง,cluster 2 เป็นสีเขียว และ cluster 3 เป็นสีน้ำเงิน
โดยมีขั้นตอนดังนี้
1.ติดตั้ง Library
2.Import Library
3.เตรียมข้อมูล
4.ทำ Clustering
5.แสดงผลด้วยกราฟ scatter plot
รูปกราฟที่ได้จะเป็นดังนี้
สรุปผล
เราได้ทำการ Clustering ด้วยวิธี Fuzzy C-Means โดยใช้ข้อมูล 2 ซึ่งข้อมูลชุดแรกเกี่ยวกับสาขาย่อยของปัญญาประดิษฐ์และชุดข้อมูลที่สองเป็นสายพันธุ์แมวต่างๆ นอกจากนี้ยังสามารถนำ Fuzzy C-Means ไปปรับใช้ในชุดข้อมูลอื่นได้ด้วย เพื่อช่วยให้สามารถระบุความเป็นสมาชิกของแต่ละกลุ่ม
Reference
ปริญญา สงวนสัตย์, Artificial Intelligence with Machine Learning, AI สร้างได้ด้วยแมชชีนเลิร์นนิ่ง.-- นนทบุรี : ไอดีซี พรีเมียร์, 2562. หน้า 292.

Top comments (0)