อัลกอริทึมการจัดกลุ่ม - อัลกอริทึมการกะค่าเฉลี่ย

ข้อมูลเบื้องต้นเกี่ยวกับ Mean-Shift Algorithm

ตามที่กล่าวไว้ก่อนหน้านี้เป็นอีกหนึ่งอัลกอริธึมการจัดกลุ่มที่มีประสิทธิภาพซึ่งใช้ในการเรียนรู้ที่ไม่มีผู้ดูแล ซึ่งแตกต่างจาก K-mean clustering ไม่ได้ตั้งสมมติฐานใด ๆ ด้วยเหตุนี้จึงเป็นอัลกอริทึมที่ไม่ใช่พารามิเตอร์

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

ความแตกต่างระหว่างอัลกอริทึม K-Means และ Mean-Shift คือในภายหลังไม่จำเป็นต้องระบุจำนวนคลัสเตอร์ล่วงหน้าเนื่องจากจำนวนคลัสเตอร์จะถูกกำหนดโดยข้อมูลอัลกอริทึม WRT

การทำงานของ Mean-Shift Algorithm

เราสามารถเข้าใจการทำงานของอัลกอริทึมการทำคลัสเตอร์ Mean-Shift ด้วยความช่วยเหลือของขั้นตอนต่อไปนี้ -

  • Step 1 - ขั้นแรกเริ่มต้นด้วยจุดข้อมูลที่กำหนดให้กับคลัสเตอร์ของตนเอง

  • Step 2 - ต่อไปอัลกอริทึมนี้จะคำนวณเซนทรอยด์

  • Step 3 - ในขั้นตอนนี้จะมีการอัปเดตตำแหน่งของเซนทรอยด์ใหม่

  • Step 4 - ตอนนี้กระบวนการจะวนซ้ำและย้ายไปยังบริเวณที่มีความหนาแน่นสูงขึ้น

  • Step 5 - ในที่สุดมันจะหยุดลงเมื่อเซนทรอยด์มาถึงตำแหน่งจากที่ที่มันไม่สามารถเคลื่อนที่ต่อไปได้

การใช้งานใน Python

เป็นตัวอย่างง่ายๆในการทำความเข้าใจว่าอัลกอริทึม Mean-Shift ทำงานอย่างไร ในตัวอย่างนี้เราจะสร้างชุดข้อมูล 2D ที่มี 4 blobs ที่แตกต่างกันก่อนและหลังจากนั้นจะใช้อัลกอริทึม Mean-Shift เพื่อดูผลลัพธ์

%matplotlib inline
import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.datasets.samples_generator import make_blobs
centers = [[3,3,3],[4,5,5],[3,10,10]]
X, _ = make_blobs(n_samples = 700, centers = centers, cluster_std = 0.5)
plt.scatter(X[:,0],X[:,1])
plt.show()
ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)
colors = 10*['r.','g.','b.','c.','k.','y.','m.']
for i in range(len(X)):
    plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 3)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
    marker=".",color='k', s=20, linewidths = 5, zorder=10)
plt.show()

เอาต์พุต

[[ 2.98462798 9.9733794 10.02629344]
[ 3.94758484 4.99122771 4.99349433]
[ 3.00788996 3.03851268 2.99183033]]
Estimated clusters: 3

ข้อดีและข้อเสีย

ข้อดี

ต่อไปนี้เป็นข้อดีบางประการของอัลกอริทึมการทำคลัสเตอร์ Mean-Shift -

  • ไม่จำเป็นต้องตั้งสมมติฐานแบบจำลองใด ๆ เช่นเดียวกับในส่วนผสมของ K-mean หรือ Gaussian

  • นอกจากนี้ยังสามารถจำลองคลัสเตอร์ที่ซับซ้อนซึ่งมีรูปร่างไม่นูน

  • ต้องการเพียงหนึ่งพารามิเตอร์ชื่อแบนด์วิดท์ซึ่งจะกำหนดจำนวนคลัสเตอร์โดยอัตโนมัติ

  • ไม่มีปัญหาของ minima ในท้องถิ่นเหมือนใน K-mean

  • ไม่มีปัญหาที่เกิดจากค่าผิดปกติ

ข้อเสีย

ต่อไปนี้เป็นข้อเสียบางประการของอัลกอริทึมการทำคลัสเตอร์ Mean-Shift -

อัลกอริธึมกะค่าเฉลี่ยทำงานได้ไม่ดีในกรณีที่มีมิติข้อมูลสูงซึ่งจำนวนคลัสเตอร์จะเปลี่ยนแปลงอย่างกะทันหัน

  • เราไม่มีการควบคุมโดยตรงเกี่ยวกับจำนวนคลัสเตอร์ แต่ในบางแอปพลิเคชันเราต้องการคลัสเตอร์จำนวนเฉพาะ

  • ไม่สามารถแยกความแตกต่างระหว่างโหมดที่มีความหมายและโหมดไร้ความหมาย