2.4.6
Isomap
สรุป
- สรุปเป้าหมาย สมมติฐาน และเงื่อนไขที่เหมาะสมของวิธีนี้.
- ตรวจสอบว่ากฎการอัปเดตหรือเกณฑ์การแบ่งส่งผลต่อพฤติกรรมโมเดลอย่างไร.
- ใช้ตัวอย่างโค้ดเพื่อกำหนดแนวทางปรับพารามิเตอร์อย่างเป็นรูปธรรม.
สัญชาตญาณ #
Isomap ควรเข้าใจผ่านสมมติฐาน กลไกการปรับปรุงโมเดล และรูปแบบความผิดพลาดบนข้อมูลจริง เพื่อให้เลือกโมเดลและปรับพารามิเตอร์ได้อย่างเหมาะสม.
คำอธิบายโดยละเอียด #
ขั้นตอน #
- สร้างกราฟ k-nearest neighbors หรือ \(\varepsilon\)-neighbors
- คำนวณเส้นทางที่สั้นที่สุดบนกราฟ (ประมาณระยะทางตามพื้นผิว)
- ส่งเมทริกซ์ระยะให้กับ Multidimensional Scaling (MDS) เพื่อได้พิกัดใหม่
ตัวอย่างด้วย Python #
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.datasets import make_swiss_roll
from sklearn.manifold import Isomap
X, color = make_swiss_roll(n_samples=1500, noise=0.05, random_state=0)
iso = Isomap(n_neighbors=10, n_components=2)
emb = iso.fit_transform(X)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].scatter(X[:, 0], X[:, 2], c=color, cmap="Spectral", s=5)
axes[0].set_title("Swiss roll 3 มิติ")
axes[1].scatter(emb[:, 0], emb[:, 1], c=color, cmap="Spectral", s=5)
axes[1].set_title("ผลฉายด้วย Isomap")
for ax in axes:
ax.set_xticks([])
ax.set_yticks([])
plt.tight_layout()
plt.show()
วิธีเลือกพารามิเตอร์ #
n_neighbors: เล็กไปกราฟขาดการเชื่อมต่อ ใหญ่ไประยะ geodesic จะคล้าย Euclideann_components: หากเน้น visualization ใช้ 2 หรือ 3 ถ้าต้องการลดมิติเพื่อโมเดลให้ใช้ค่าที่เหมาะกับงาน- ข้อมูลที่มี noise มากควรทำความสะอาดก่อน เพราะกราฟพึ่งพาระยะใกล้มาก
ข้อดี / ข้อจำกัด #
| ข้อดี | ข้อจำกัด |
|---|---|
| จัดการโครงสร้างไม่เชิงเส้นได้ดี | ต้องคำนวณ shortest path บนกราฟ ขนาดใหญ่จะช้า |
| พิกัดใหม่ตีความได้ตรงไปตรงมา | ไวต่อการเลือกพารามิเตอร์ k และ noise |
| เหมาะกับการมองภาพ manifold | ขยายไปยังข้อมูลมิติสูงจำนวนมากได้ยาก |