Self-Organizing Map(SOM)
목적 : 고차원 데이터의 구조적 특징을 보존하여 2D 또는 1D 격자에 매핑
기반 이론 : 경쟁학습
결과 : 서로 유사한 데이터는 격자 상에서 인접한 위치에 매핑됨
초기화 : 각 격자 노드마다 고차원 입력과 같은 크기의 weight vector할당(무작위 or PCA기반)
데이터 입력 : 하나의 input vector x를 네트워크에 투입
BMU(Best Matching Unit)
: 모든 weight vector wi중에서 x와 가장 유사한 노드(BMU) 찾기
\mathrm{BMU} = \arg\min{i} | \mathbf{x} - \mathbf{w}_i |_2
이웃 업데이트
: BMU뿐만 아니라 주변 노드까지 일정 반경 내에서 Weight vector를 입력 방향으로 이동
반복
: 전체 데이터에 대해 이 과정을 반복하여 이웃 반경과 학습률은 점차 감소
🔹 SOM의 활용 예시
🌐 고차원 벡터 시각화: 워드 임베딩, 이미지 feature
🧠 의료 데이터 분석: 환자 특성 분류, 유전자 발현 패턴
🗺 시장 세분화: 고객 행동 패턴 군집화
🧭 여행 경로 최적화: 장소 간 거리 기반 최적 순서 구성 (사용자 프로젝트)
: 입력 데이터 간의 유사한 관계(거리, 패턴)을 SOM 위의 격자 구조 상에서도 비슷하게 유지하는 것
ex) 원래 데이터에서는 A와 B는 서로 비슷한 장소(같은 지역의 명소), C는 멀리 떨어진 장소
SOM이 학습이 잘됬다면 A와 B는 SOM격자상에서도 가까운 위치에 배치, C는 멀리 떨어진 격자 칸에 위치
즉, 원래 데이터의 거리/관계 구조를 그대로 보존해주는것이 위상(topology)를 보존하는 능력
이걸 측정하는데 KSE(Kruskal-Shepard Error)
: KSC는 입력 데이터 간의 실제 거리와 SOM상에서의 뉴런 간 거리 차이를 측정하는 지표
SOM에서 말하는 뉴런은
격자(grid) 안의 한 칸, 각 뉴런은 하나의 가중치 벡터를 가짐
KSE = (실제 데이터 거리 - 뉴런 거리)^2
실제 거리 : 입력 벡터의 유클리드 거리
뉴런 간 거리 : SOM 격자에서의 물리적 위치 차이
-> 그래서 실제 데이터 간 거리와 SOM 위 격자 위치 간 거리를 한 쌍씩 비교해서 얼마나 비슷한지를 계산, KSE가 낮을 수록 SOM이 데이터 구조를 더 잘 반영하고 있다는 뜻이 됨