\(~~~~~~~~~~\)Unsupervised Learning\(~~~~~~~~~~\)
การเรียนรู้แบบไม่มีผู้สอน

อ.ดร. สมศักดิ์ จันทร์เอม

วิทยาลัยนานาชาตินวัตกรรมดิจิทัล มหาวิทยาลัยเชียงใหม่

14 พฤศจิกายน 2568

การเรียนรู้แบบไม่มีผู้สอน

การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Learning) เป็นหนึ่งในแนวทางของ การเรียนรู้ของเครื่อง (Machine Learning) ที่ใช้วิเคราะห์ข้อมูลโดย ไม่มีตัวแปรเป้าหมาย (ไม่มีฉลากกำกับ)

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

หลักการของการเรียนรู้แบบไม่มีผู้สอน

แทนที่จะเรียนรู้จากตัวอย่างที่มีคำตอบกำหนดไว้ล่วงหน้า (labels) เหมือนในกรณีของ Supervised Learning ในกรณีของ Unsupervised Learning แบบจำลองจะทำงานโดยการ:

  • วิเคราะห์โครงสร้างของข้อมูล

  • ค้นหารูปแบบหรือความสัมพันธ์ที่ซ่อนอยู่ในข้อมูล

  • จัดกลุ่มข้อมูลที่มีลักษณะคล้ายกันไว้ด้วยกัน

  • ลดมิติของข้อมูล (Dimensionality Reduction) เพื่อทำให้การวิเคราะห์ง่ายขึ้น

ประเภทหลักของการเรียนรู้แบบไม่มีผู้สอน

1. การจัดกลุ่มข้อมูล (Clustering)

  • การจัดกลุ่ม (Clustering) จะจัดกลุ่มข้อมูลโดยอัตโนมัติ ให้ข้อมูลภายในกลุ่มเดียวกันมีความ คล้ายคลึงกัน (similar) และมีความ แตกต่าง (different) จากข้อมูลในกลุ่มอื่น

  • ตัวอย่างอัลกอริทึมที่ใช้ได้แก่:

    • (k)-means clustering
    • Hierarchical clustering
    • DBSCAN (Density-Based Spatial Clustering)

2. การลดมิติของข้อมูล (Dimensionality Reduction)

  • ใช้เพื่อ ลดจำนวนตัวแปร (variables) ในข้อมูล โดยยังคงรักษาข้อมูลสำคัญให้ได้มากที่สุดเท่าที่เป็นไปได้

  • มีประโยชน์ในการแก้ปัญหา “คำสาปของมิติ (Curse of Dimensionality)” และช่วยให้แบบจำลองเรียนรู้ได้รวดเร็วขึ้น

  • ตัวอย่างอัลกอริทึมที่ใช้ได้แก่:

    • PCA (Principal Component Analysis)
    • t-SNE (t-Distributed Stochastic Neighbor Embedding)
    • UMAP (Uniform Manifold Approximation and Projection)

3. การตรวจจับค่าผิดปกติ (Anomaly Detection)

  • ใช้ในการระบุค่าที่ เบี่ยงเบนจากรูปแบบปกติของข้อมูล เช่น การตรวจจับการฉ้อโกง (fraud detection) หรือการตรวจหาความผิดพลาดของระบบ

  • ตัวอย่างอัลกอริทึมที่ใช้ได้แก่:

    • Isolation Forest
    • One-Class SVM
    • Autoencoders (ใน Deep Learning)

4. การเรียนรู้แบบกฎความสัมพันธ์ (Association Rule Learning)

  • ใช้เพื่อค้นหาความสัมพันธ์ระหว่างตัวแปรในชุดข้อมูล ตัวอย่างเช่น การวิเคราะห์ตะกร้าสินค้า (Market Basket Analysis) ซึ่งช่วยระบุสินค้าที่ลูกค้ามักจะซื้อตามกัน

  • ตัวอย่างอัลกอริทึมที่ใช้ได้แก่:

    • Apriori
    • FP-Growth

ตัวอย่างการประยุกต์ใช้การเรียนรู้แบบไม่มีผู้สอน

  • การแบ่งกลุ่มลูกค้า (Customer Segmentation) ธุรกิจสามารถใช้เทคนิคการจัดกลุ่ม (clustering) เพื่อแบ่งกลุ่มลูกค้าตามพฤติกรรมการซื้อ เช่น กลุ่มลูกค้าประจำ ลูกค้าใหม่ หรือกลุ่มที่เลิกใช้บริการแล้ว

  • การวิเคราะห์หัวข้อ (Topic Modeling) การเรียนรู้แบบไม่มีผู้สอนสามารถใช้ในการวิเคราะห์และจัดกลุ่มบทความหรือรีวิว ตัวอย่างเช่น อัลกอริทึม LDA (Latent Dirichlet Allocation) ใช้ในการจำแนกประเภทของเอกสาร

  • การตรวจจับการฉ้อโกง (Fraud Detection) เทคนิคการตรวจจับค่าผิดปกติ (Anomaly Detection) ช่วยระบุธุรกรรมที่น่าสงสัย เช่น การใช้บัตรเครดิตในสถานที่ต่างกันมากภายในช่วงเวลาสั้น ๆ

  • การลดมิติของข้อมูล (Dimensionality Reduction) เทคนิค PCA สามารถใช้เพื่อลดจำนวนตัวแปรก่อนนำข้อมูลเข้าสู่แบบจำลอง Machine Learning ช่วยทำให้กระบวนการวิเคราะห์และการเรียนรู้มีประสิทธิภาพและเข้าใจง่ายขึ้น

ข้อดีและข้อจำกัดของการเรียนรู้แบบไม่มีผู้สอน

ข้อดี (Advantages)

  • ไม่จำเป็นต้องใช้ข้อมูลที่มีฉลาก (labeled data) ช่วยลดต้นทุนในการเตรียมข้อมูล

  • สามารถค้นหารูปแบบหรือโครงสร้างที่ซ่อนอยู่ในข้อมูลได้โดยอัตโนมัติ

  • ทำงานได้ดีเมื่อข้อมูลมีขนาดใหญ่และซับซ้อน

  • มีประโยชน์ในการค้นพบความรู้ใหม่ ๆ ที่มนุษย์อาจมองไม่เห็นได้ง่าย

ข้อจำกัด (Disadvantages)

  • ผลลัพธ์มักตีความได้ยากกว่าเมื่อเทียบกับการเรียนรู้แบบมีผู้สอน (Supervised Learning)

  • การกำหนดจำนวนกลุ่ม (clusters) หรือการตั้งค่าพารามิเตอร์บางอย่าง จำเป็นต้องอาศัยความเชี่ยวชาญของผู้ใช้งาน

  • อาจทำงานได้ไม่ดีหากข้อมูลมีสัญญาณรบกวน (noise) มาก หรือข้อมูลไม่ได้รับการเตรียมอย่างเหมาะสม

Interactive: Clustering

K-Means Clustering

Clustering with \(k\)-means (K-Means Clustering)

\(k\)-means clustering เป็นหนึ่งในเทคนิคที่ได้รับความนิยมมากที่สุดสำหรับ การจัดกลุ่มข้อมูล (Clustering) ในกระบวนการ การเรียนรู้แบบไม่มีผู้สอน (Unsupervised Learning)

หลักการทำงานคือการแบ่งข้อมูลออกเป็น \(k\) กลุ่ม ตามความคล้ายคลึงกันของข้อมูล โดยแต่ละกลุ่มจะมีจุดศูนย์กลางของตนเอง (centroid) ซึ่งเป็นตัวแทนของกลุ่มนั้น

How \(k\)-means Works

flowchart TD
    A[Start]
    B[Set number of clusters k]
    C[Randomly initialize 
    k centroids]
    D[Compute distances to 
    centroids]
    E[Assign each point to the 
    nearest centroid]
    F[Update centroids as mean 
    of assigned points]
    G{Centroids changed 
    significantly or max 
    iterations reached?}
    H[Stop]
    I[Output cluster labels 
    and  final centroids]

    A --> B
    B --> C
    C --> D
    D --> E
    E --> F
    F --> G
    G -- No --> H
    G -- Yes --> D
    H --> I

  1. กำหนดจำนวนกลุ่ม \(k\): ผู้ใช้งานต้องระบุจำนวนกลุ่ม \(k\) ก่อนเริ่มกระบวนการจัดกลุ่ม

  2. สุ่มกำหนดจุดศูนย์กลางเริ่มต้น (centroids): เลือกจุดศูนย์กลางจำนวน \(k\) จุดจากชุดข้อมูลแบบสุ่ม

  3. คำนวณระยะทางและจัดกลุ่มข้อมูล: คำนวณระยะทางระหว่างแต่ละจุดข้อมูลกับจุดศูนย์กลาง (โดยทั่วไปใช้ ระยะทางแบบยูคลิด (Euclidean Distance)) จากนั้นจัดแต่ละจุดให้อยู่ในกลุ่มที่มีจุดศูนย์กลางใกล้ที่สุด

  4. อัปเดตตำแหน่งจุดศูนย์กลาง: คำนวณหาตำแหน่งจุดศูนย์กลางใหม่ โดยหาค่าเฉลี่ยของจุดข้อมูลทั้งหมดภายในกลุ่มนั้น

  5. ทำซ้ำขั้นตอนที่ 3 และ 4: ดำเนินการซ้ำไปเรื่อย ๆ จนกว่าจุดศูนย์กลางจะไม่เปลี่ยนแปลงอย่างมีนัยสำคัญ หรืออัลกอริทึมเข้าสู่ภาวะคงที่ (convergence)

ตัวชี้วัดระยะทางในกระบวนการจัดกลุ่มแบบ \(k\)-means (Distance Metrics in \(k\)-means Clustering)

ในการทำงานของ \(k\)-means clustering การคำนวณระยะทางระหว่างจุดข้อมูลและจุดศูนย์กลาง (centroids) เป็นขั้นตอนสำคัญ เพราะเป็นตัวกำหนดว่าจุดข้อมูลแต่ละจุดจะถูกจัดให้อยู่ในกลุ่มใด

โดยปกติแล้ว \(k\)-means จะใช้ระยะทางแบบยูคลิด (Euclidean Distance) เป็นค่าเริ่มต้น อย่างไรก็ตาม ยังสามารถใช้ตัวชี้วัดระยะทางประเภทอื่นได้ ขึ้นอยู่กับลักษณะของข้อมูลและบริบทของการวิเคราะห์

1. ระยะทางแบบยูคลิด (Euclidean Distance)

\[ d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2} \]

✅ ใช้งานง่ายและเข้าใจได้ไม่ยาก ✅ เหมาะสำหรับข้อมูลเชิงปริมาณ (numerical quantitative data)

❌ มีความไวต่อค่าผิดปกติ (outliers) ❌ ไม่เหมาะเมื่อแต่ละตัวแปรมีสเกลต่างกัน (ควรทำ Standardization ก่อน)

2. ระยะทางแบบแมนฮัตตัน (Manhattan Distance)

\[ d(x, y) = \sum_{i=1}^{n} |x_i - y_i| \]

✅ เหมาะสำหรับข้อมูลที่มีโครงสร้างแบบตาราง (grid-like structure) เช่น ภาพพิกเซล ✅ มีความไวต่อค่าผิดปกติน้อยกว่าระยะทางแบบยูคลิด

❌ ไม่เหมาะกับข้อมูลที่มีความสัมพันธ์เชิงเส้นหรือรูปแบบทิศทางที่ชัดเจน

3. ความคล้ายคลึงแบบโคไซน์ (Cosine Similarity)

\[ \cos(\theta) = \frac{x \cdot y}{||x|| \cdot ||y||} = \frac{\sum_{i=1}^{n} x_i y_i}{\sqrt{\sum_{i=1}^{n} x_i^2} \cdot \sqrt{\sum_{i=1}^{n} y_i^2}} \]

โดยทั่วไป Cosine Similarity ใช้วัด ความคล้ายคลึงกันเชิงมุม (angle-based similarity) ระหว่างเวกเตอร์ แทนที่จะวัดระยะทางระหว่างจุดข้อมูล

✅ เหมาะสำหรับข้อมูลแบบเวกเตอร์ เช่น เอกสาร ข้อความ หรือ embeddings ✅ ไม่ได้รับผลกระทบจากขนาดของเวกเตอร์ (เช่น เอกสารที่มีความยาวต่างกัน)

❌ ไม่เหมาะเมื่อขนาดของเวกเตอร์ (magnitude) มีความสำคัญต่อการจัดกลุ่ม

การคำนวณระยะทางด้วยวิธีต่าง ๆ

ตัวอย่างข้อมูล:

x y
a 1 2
b 3 4
c 4 3

Euclidean Distance

\[ \begin{aligned} Dis_{ab}&=\sqrt{2^2+2^2}=\sqrt{8}=2.828\\ Dis_{ac}&=\sqrt{3^2+1^2}=\sqrt{10}=3.162\\ Dis_{bc}&=\sqrt{1^2+1^2}=\sqrt{2}=1.414 \end{aligned} \]

Manhattan Distance

\[ \begin{aligned} Dis_{ab}&= |2|+|2|= 4\\ Dis_{ac}&= |3|+|1|= 4\\ Dis_{bc}&= |1|+|1| = 2 \end{aligned} \]

Interactive: Distance

ตัวอย่างของ \(k\)-means

1. ชุดข้อมูลตัวอย่าง

เรามีข้อมูล 5 จุดในมิติ 2 ตัวแปร (X, Y) และต้องการแบ่งออกเป็น \(k=2\) คลัสเตอร์

Data Point X Y
A 2 10
B 2 5
C 8 4
D 5 8
E 7 5

2. ขั้นตอนการคำนวณของ \(k\)-means

(1) กำหนดค่า \(k\) และสุ่มเลือกจุดศูนย์กลางเริ่มต้น (initial centroids)

  • กำหนดจำนวนกลุ่ม: \(k = 2\)

  • สุ่มเลือกจุดศูนย์กลางเริ่มต้น (สมมติเลือก A และ C)

    • Centroid 1 (C1) = A = (2, 10)
    • Centroid 2 (C2) = C = (8, 4)

(2) คำนวณระยะทางจากแต่ละจุดไปยังจุดศูนย์กลาง

โดยใช้ ระยะทางแบบยูคลิด (Euclidean Distance):

\[ d(x, y) = \sqrt{(X_2 - X_1)^2 + (Y_2 - Y_1)^2} \]

Data Point \(d(A, C1)\) \(d(A, C2)\) Nearest Cluster
A (2,10) 0.00 7.21 C1
B (2,5) 5.00 6.00 C1
C (8,4) 7.21 0.00 C2
D (5,8) 3.61 4.24 C1
E (7,5) 7.81 1.00 C2

First-round result:

  • C1 cluster: {A, B, D}, C2 cluster: {C, E}

(3) Compute new centroids for each cluster

Centroid 1 (C1) {A, B, D}

\[\begin{aligned} C1_x &= \frac{2 + 2 + 5}{3} = \frac{9}{3} = 3.00\\ C1_y &= \frac{10 + 5 + 8}{3} = \frac{23}{3} = 7.67\end{aligned}\]

Centroid 2 (C2) {C, E}

\[\begin{aligned} C2_x &= \frac{8 + 7}{2} = \frac{15}{2} = 7.50\\ C2_y &= \frac{4 + 5}{2} = \frac{9}{2} = 4.50\end{aligned}\]

(4) ทำซ้ำขั้นตอนที่ 2 และ 3

  • คำนวณระยะทางใหม่และจัดจุดข้อมูลให้อยู่ในคลัสเตอร์ที่เหมาะสมอีกครั้ง

  • อัปเดตค่าจุดศูนย์กลาง (centroid) และทำซ้ำขั้นตอนนี้ไปเรื่อย ๆ จนกว่าค่าจุดศูนย์กลางจะไม่เปลี่ยนแปลงอีก (ถือว่าเข้าสู่ภาวะคงที่ หรือ convergence)

3. Compute \(k\)-means

Animation of K-means

Set up

K-mean (3D)

การเลือกจำนวนคลัสเตอร์ที่เหมาะสมใน \(k\)-means ด้วยค่า Silhouette Score

การเลือกจำนวนคลัสเตอร์ \(k\) ที่เหมาะสมในอัลกอริทึม \(k\)-means เป็นสิ่งสำคัญ เพราะหากเลือก \(k\) ที่น้อยหรือมากเกินไป อาจทำให้ผลการจัดกลุ่มไม่มีประสิทธิภาพ

Silhouette Score เป็น ตัวชี้วัดคุณภาพของการจัดกลุ่ม (clustering quality metric) โดยพิจารณาจากสององค์ประกอบหลักคือ:

  • \(a(i)\): ระยะทางเฉลี่ยระหว่างจุดข้อมูลหนึ่งกับจุดอื่น ๆ ในคลัสเตอร์เดียวกัน → แทนความ “แน่นของกลุ่ม” (cluster cohesion)
  • \(b(i)\): ระยะทางเฉลี่ยระหว่างจุดข้อมูลหนึ่งกับจุดในคลัสเตอร์ที่ใกล้ที่สุด → แทนความ “แยกของกลุ่ม” (cluster separation)

\[ S(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))} \]

  • เมื่อ \(S(i)\) ใกล้ 1 → จุดข้อมูลนั้นถูกจัดอยู่ในกลุ่มที่เหมาะสมและมีความสอดคล้องกับคลัสเตอร์ของตนเองดี

  • เมื่อ \(S(i)\) ใกล้ 0 → จุดข้อมูลนั้นอยู่ใกล้ขอบเขตระหว่างคลัสเตอร์ อาจอยู่ระหว่างสองกลุ่ม

  • เมื่อ \(S(i)\) ใกล้ -1 → จุดข้อมูลนั้นมีแนวโน้มว่าจะถูกจัดให้อยู่ในคลัสเตอร์ที่ไม่ถูกต้อง

วิธีใช้ค่า Silhouette Score เพื่อเลือกจำนวนคลัสเตอร์ \(k\)

ค่าเฉลี่ยของ Silhouette Score แสดงถึงความเหมาะสมของจำนวนคลัสเตอร์ \(k\) ที่เลือกใช้

  1. รันอัลกอริทึม \(k\)-means โดยใช้ค่าของ \(k\) หลายค่า (เช่น \(k = 2, 3, 4, \dots, 10\))

  2. คำนวณค่า Silhouette Score สำหรับแต่ละค่า \(k\)

  3. เลือกค่าของ \(k\) ที่ให้ ค่าเฉลี่ยของ Silhouette Score สูงที่สุด

Interpreting Silhouette Values by Cluster

  • คลัสเตอร์ที่ 1 (จัดกลุ่มได้ดี): จุดข้อมูลทั้งสามมีค่า Silhouette เป็นบวกสูง (0.60–0.85) แสดงว่าจุดเหล่านี้อยู่รวมกันแน่นในกลุ่มของตนเอง และแยกออกจากคลัสเตอร์อื่นได้ชัดเจน

  • คลัสเตอร์ที่ 2 (อยู่ใกล้ขอบเขต): จุดข้อมูลหนึ่งมีค่า Silhouette เท่ากับ 0 และจุดอื่น ๆ มีค่าใกล้ศูนย์ (0.05–0.10) แสดงว่าจุดเหล่านี้อยู่ใกล้เส้นแบ่งระหว่างคลัสเตอร์ การจัดกลุ่มจึงอาจไม่ชัดเจน

  • คลัสเตอร์ที่ 3 (จัดกลุ่มได้ไม่ดี): จุดข้อมูลเพียงจุดเดียวมีค่า Silhouette เป็นลบ (-0.20) หมายความว่าจุดนั้นอยู่ใกล้คลัสเตอร์อื่นมากกว่าคลัสเตอร์ของตนเอง ซึ่งบ่งชี้ถึงความเป็นไปได้ของการจัดกลุ่มที่ไม่ถูกต้อง

Interactive K-means & Silhouette Score

Interactive Silhouette Values

ข้อดีและข้อจำกัดของ \(k\)-means

ข้อดีของ \(k\)-means

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

ข้อจำกัดของ \(k\)-means

❌ ต้องกำหนดจำนวนคลัสเตอร์ \(k\) ล่วงหน้า ❌ มีความไวต่อค่าผิดปกติ (outliers) ❌ ทำงานได้ไม่ดีเมื่อคลัสเตอร์มีรูปร่างไม่เป็นทรงกลม (non-spherical) หรือมีขนาดแตกต่างกันมาก

\(k\)-means with Orange Data Mining

Example of \(k\)-means in Orange (1)

Example of \(k\)-means in Orange (2)

References