AI時代系列(3) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
49/100 第五週:非監督學習
49. 自組織映射(SOM) 🧠 神經網路的非監督學習,能發現隱藏模式!
🧠 自組織映射(SOM, Self-Organizing Map)
神經網路的非監督學習,能發現數據中的隱藏模式與結構!
________________________________________
🔎 一、什麼是 SOM?
• SOM = Kohonen Network(柯洪能網路)
• 屬於無監督學習神經網路
• 核心任務:將高維數據映射到 低維(通常是2D)的網格上
• 保留數據間的拓撲關係,讓類似數據聚集在一起
• 讓我們能可視化和理解複雜資料的潛在結構
________________________________________
🌟 二、SOM 核心原理
競爭學習(Competitive Learning)是一種無監督學習機制,強調神經元間的競爭關係:當一筆輸入資料進來時,所有神經元同時響應,唯有與輸入最相似的「贏家神經元(BMU)」會被選中並更新其權重,同時其周圍鄰近神經元也會一併進行調整,這個過程稱為鄰域更新(Neighborhood Update)。
透過這種局部學習策略,網路能保留數據間的空間關係,達成拓撲保留(Topology Preservation),使得相似的資料點在網格上被映射到彼此接近的位置,這是自組織映射(SOM)等演算法的核心原理。
________________________________________
🧠 三、SOM 執行流程(簡化版)
1️⃣ 初始化網格(2D矩陣),隨機賦予權重
2️⃣ 對每筆數據進行:
• 計算與所有神經元的距離,找出 BMU
• 更新 BMU 及其鄰近神經元的權重
3️⃣ 重複訓練迭代,讓網格逐漸「自組織」出結構
4️⃣ 完成後,可視化分群與資料結構
________________________________________
📈 四、SOM 應用場景
✅ 客戶分群(Customer Segmentation)
✅ 異常偵測(Anomaly Detection)
✅ 圖片、聲音特徵萃取與視覺化
✅ 市場分析、消費行為研究
✅ 基因與生物資訊學分析
________________________________________
💻 五、Python 簡易示範(MiniSom 套件)
python
import numpy as np
import matplotlib.pyplot as plt
from minisom import MiniSom
# 設定中文字體,避免顯示小方框
plt.rcParams['font.sans-serif'] = ['Microsoft JhengHei'] # 微軟正黑體
plt.rcParams['axes.unicode_minus'] = False # 避免負號顯示錯誤
# 建立假資料:每筆資料有 4 維(例如簡化版 Iris 特徵)
data = np.random.rand(100, 4)
# 建立並訓練 SOM
som = MiniSom(x=8, y=8, input_len=4, sigma=1.0, learning_rate=0.5)
som.random_weights_init(data)
som.train_random(data, num_iteration=100)
# 計算 U-Matrix(統一距離矩陣)
u_matrix = som.distance_map()
# 顯示 U-Matrix 圖
plt.figure(figsize=(7, 6))
plt.imshow(u_matrix, cmap='bone_r') # 使用反向骨頭色階讓對比更清楚
plt.colorbar()
plt.title("SOM U-Matrix 顯示圖") # 中文標題修正後能正常顯示
plt.tight_layout()
plt.show()
這段程式碼展示了如何使用 Python 套件 MiniSom 建立一個 8x8 的 自組織映射網路(Self-Organizing Map, SOM),並用 matplotlib 將其 U-Matrix(統一距離矩陣) 視覺化。程式首先產生 100 筆隨機的 4 維資料,模擬簡單的特徵資料,接著用 SOM 進行訓練來自動學習資料的拓撲結構。
透過 distance_map() 計算每個神經元與鄰近神經元的平均距離,以視覺化資料在網格中的聚類邊界。
最後設定中文字體避免顯示錯誤,並將 U-Matrix 畫成灰階圖,協助使用者觀察資料分佈與潛在群落結構。這是一個常用於資料探索與非監督學習視覺化的典型範例。
✅ U-Matrix:用來顯示神經元間的距離差異,色塊越深代表分群邊界越明顯!
________________________________________
📊 六、SOM 優缺點比較
優點 缺點
✅ 自動發現資料潛在結構與分群 ❌ 網格大小需事先設定(需要經驗)
✅ 非常適合視覺化高維數據 ❌ 大型資料集下計算量較高
✅ 可做降維與特徵萃取 ❌ 不適用於複雜的序列或時間序列
________________________________________
🔍 七、SOM vs. PCA / KMeans
PCA: 線性降維,保留最大變異方向
KMeans: 直接硬分群,無視資料結構
SOM: 可視化+保留資料間距與關聯性,適合探索性分析
________________________________________
🎯 八、總結與亮點
✔ SOM 是「神經網路中的探索專家」
✔ 不需標籤,能讓資料自己找出潛在結構
✔ 尤其適合「高維→2D」的視覺化任務
✔ 可應用於金融、行銷、醫療、製造、電信等多種產業
________________________________________
📌 一句話精華
🧠 SOM = 讓 AI 自己長出腦中的地圖,發現資料的隱藏模式與群落!
________________________________________