자기조직화지도(SOM)
비슷한 관측값이 지도에서도 가까이 놓이도록 학습합니다.
스마트빌딩의 실내환경을 관리한다고 가정해 보겠습니다. 건물 관리자는 각 공간의 온도와 습도, 이산화탄소 농도, 소음 수준, 전력 사용량을 센서로 수집합니다. 그런데 측정 항목이 많아지면 어떤 공간들이 비슷한 환경을 보이는지, 어디에 환기나 냉방 문제가 집중되는지 한눈에 파악하기 어렵습니다.
이때 사용할 수 있는 방법이 자기조직화지도(Self-Organizing Map, SOM)입니다. SOM은 여러 변수로 표현된 관측값을 주로 2차원 격자에 대응시키는 비지도학습 방법입니다. 비슷한 관측값이 지도에서도 가까운 위치에 배치되도록 학습하기 때문에 복잡한 자료를 살펴보고 유형별 특성을 이해하는 데 도움이 됩니다.
SOM은 단순히 군집에 번호를 붙이는 방법과는 조금 다릅니다. 각 격자 노드는 원래 데이터와 같은 차원의 대표 벡터를 갖고, 학습 중에는 가장 비슷한 노드뿐 아니라 그 주변 노드도 함께 조정됩니다. 이 과정에서 데이터의 유사한 패턴이 지도 위에 연속적으로 배열될 수 있습니다.
이번 글에서는 SOM의 기본 구조와 학습 원리, 실제 센서 데이터 예제, 지도 크기와 학습 설정, U-Matrix 및 컴포넌트 평면, 군집 분할, 성능 평가와 결과 보고까지 살펴보겠습니다.
자기조직화지도는 무엇인가요?
자기조직화지도는 고차원 데이터의 유사한 패턴을 저차원 격자에 표현하는 인공신경망 기반 비지도학습 방법입니다.
일반적으로 2차원 격자를 이용하며, 격자에는 일정한 행과 열로 배치된 노드가 존재합니다.
각 노드는 입력변수의 수와 같은 길이의 가중치 벡터(프로토타입)를 가지고 있습니다. 예를 들어 온도, 습도, CO₂ 농도, 소음, 전력 사용량이라는 다섯 변수를 사용한다면 노드 하나도 다섯 개 값을 가진 벡터로 표현됩니다.
학습을 마치면 각 관측값은 자신과 가장 가까운 프로토타입을 가진 노드에 대응됩니다. 이를 통해 어느 구역의 환경이 비슷한지, 특정 환경 패턴이 지도 어디에 모이는지 확인할 수 있습니다. 다만 SOM의 격자상 거리가 원래 데이터 공간의 실제 거리와 정확히 같다는 뜻은 아닙니다.
K-Means와 SOM은 어떻게 다른가요?
K-Means는 데이터를 미리 정한 개수의 군집으로 나누고 각 군집의 중심을 찾습니다.
SOM도 대표 벡터를 학습한다는 점에서는 비슷하지만, 대표 벡터들이 서로 연결된 격자 위에 배치되어 인접 노드의 관계까지 학습한다는 점이 다릅니다.
| 비교 항목 | K-Means | SOM |
|---|---|---|
| 주요 결과 | 군집 번호와 중심점 | 격자 지도와 노드별 프로토타입 |
| 중심 간 관계 | 별도 공간 구조가 없음 | 격자 이웃 관계를 학습에 반영 |
| 군집 수 | 보통 사전에 지정 | 지도 노드 수와 최종 군집 수는 구분 가능 |
| 주요 활용 | 명확한 군집 할당 | 패턴 탐색과 시각화, 후속 군집화 |
따라서 SOM의 노드 수가 곧 최종 군집 수는 아닙니다. 예를 들어 6×6 격자에는 36개 노드가 있지만, 노드의 유사성을 다시 분석하여 최종적으로 세 개의 운영 유형을 정의할 수 있습니다.
실제 사례: 스마트빌딩의 실내환경 패턴
한 시설관리팀이 스마트빌딩 8개 층의 공용공간과 회의실에서 수집한 공간·일별 관측값 960개를 분석했다고 가정하겠습니다.
각 관측값은 하루 동안의 센서 기록을 요약한 값입니다.
| 변수 | 단위 | 의미 |
|---|---|---|
| 평균 실내온도 | °C | 일평균 온도 |
| 평균 상대습도 | % | 일평균 습도 |
| 평균 CO₂ | ppm | 환기 상태의 참고 지표 |
| 평균 소음 | dB(A) | 실내 소음 수준 |
| 일간 전력 사용량 | kWh | 해당 공간의 전력 사용량 |
연구 질문은 "다섯 가지 환경지표를 함께 고려했을 때 공간·일별 기록은 어떤 운영 패턴으로 구분되는가?"입니다.
이 예제의 목적은 특정 설비의 고장 원인을 확정하는 것이 아니라 비슷한 환경 상태를 묶어 추가 점검이 필요한 구역을 찾는 데 있습니다.
SOM 전에 데이터를 어떻게 준비하나요?
SOM은 관측값과 프로토타입 사이의 거리를 바탕으로 학습합니다.
따라서 변수마다 단위와 값의 크기가 다르면 큰 숫자를 가진 변수가 거리를 지배할 수 있습니다. 예를 들어 CO₂는 수백 ppm 단위이고 습도는 수십 퍼센트 단위이므로 원자료를 그대로 사용하면 비교가 왜곡될 수 있습니다. 이를 줄이기 위해 각 변수에 표준화(z-score)를 적용할 수 있습니다.
zij = ( xij − x̄j ) ÷ sj
또한 센서 오류로 발생한 극단값, 결측 관측, 측정 기간의 불일치도 확인해야 합니다. 다만 실제 고농도 CO₂처럼 운영상 중요한 극단값을 단순히 제거하면 발견해야 할 패턴까지 사라질 수 있습니다. 단위 통일, 결측 처리, 이상치 확인, 표준화를 거친 뒤 SOM을 학습하는 것이 좋습니다.
SOM은 어떻게 학습하나요?
SOM 학습의 핵심은 최적일치단위(Best Matching Unit, BMU)를 찾고, 해당 노드와 주변 노드를 함께 조정하는 과정입니다.
먼저 입력 관측값과 격자의 모든 프로토타입 사이 거리를 계산해 가장 가까운 노드를 선택합니다.
wj(t+1) = wj(t) + η(t) · hb,j(t) · [ x − wj(t) ]
η(t)는 학습률, hb,j(t)는 BMU에서 떨어진 격자 거리에 따른 이웃 가중치입니다. 학습 초반에는 넓은 영역을 함께 움직이고, 후반에는 조정 범위를 줄여 세부 구조를 다듬는 방식이 흔히 사용됩니다.
지도 크기와 학습 설정은 어떻게 정하나요?
이번 예제에서는 6×6 격자, 총 36개 노드를 사용한다고 가정하겠습니다.
960개 관측값은 가장 가까운 36개 노드 중 하나에 배정됩니다. 모든 노드에 같은 개수의 관측값이 배정되는 것은 아니며, 비어 있는 노드가 발생할 수도 있습니다.
| 설정 | 예제 값 | 확인할 점 |
|---|---|---|
| 지도 크기 | 6×6 | 세부 패턴과 해석 가능성의 균형 |
| 거리 | 유클리드 거리 | 표준화된 연속형 자료에 적절한지 |
| 초기 학습률 | 0.50 | 감소 일정과 수렴 상태 |
| 초기 이웃 반경 | 격자 3칸 | 학습 진행에 따라 축소 |
| 반복 횟수 | 10,000회 | 결과 안정성과 수렴 확인 |
| 난수 시드 | 42 | 결과 재현성 확보 |
이 숫자들은 보편적인 최적값이 아니라 설명을 위한 예시입니다. 실제로는 서로 다른 지도 크기와 초기값으로 여러 번 학습해 안정성과 지도의 해석 가능성을 비교해야 합니다.
학습된 SOM 지도는 어떻게 읽나요?
학습이 끝나면 각 관측값은 BMU에 배정됩니다.
지도에서 같은 노드에 모인 관측값은 프로토타입과 비슷한 측정 패턴을 보이며, 인접 노드끼리도 유사한 패턴을 갖도록 학습됩니다.
히트맵 또는 히트 카운트(hit count)는 각 노드에 배정된 관측값 수를 보여줍니다. 특정 노드에 관측값이 많이 몰려 있다면 자주 나타나는 환경 상태일 수 있습니다. 다만 배정 건수가 많다는 이유만으로 해당 상태가 바람직하거나 안전하다는 뜻은 아닙니다.
또한 인접 노드끼리 값이 부드럽게 변화하더라도 모든 국소적 이웃 관계가 완전히 보존되는 것은 아닙니다. SOM은 저차원 지도를 만드는 과정에서 원래 데이터의 일부 거리 정보가 손실될 수 있습니다.
U-Matrix는 무엇을 보여주나요?
U-Matrix(Unified Distance Matrix)는 인접한 노드의 프로토타입 사이 거리를 시각화한 지도입니다.
인접 노드의 프로토타입이 비슷하면 작은 값, 서로 다르면 큰 값이 나타납니다.
낮은 거리 값이 이어지는 영역은 비슷한 환경 패턴이 모여 있는 구역으로 볼 수 있습니다. 반대로 높은 거리 값이 띠처럼 나타나는 부분은 서로 다른 패턴 사이의 경계일 가능성이 있습니다.
예를 들어 U-Matrix에서 서로 떨어진 두 구역 사이에 높은 거리 영역이 나타났다면, 두 구역에 배정된 관측값이 서로 다른 환경 특성을 가질 수 있습니다. 다만 U-Matrix의 경계를 자동으로 확정된 군집 경계로 해석해서는 안 됩니다. 지도 크기와 거리척도, 표준화 방식에 따라서도 모양이 달라질 수 있습니다.
컴포넌트 평면(Component Plane)은 어떻게 해석하나요?
컴포넌트 평면은 각 입력변수에 대해 노드의 프로토타입 값을 지도 위에 표시한 것입니다.
예를 들어 CO₂ 컴포넌트 평면에서 값이 높은 구역이 전력 사용량 컴포넌트 평면에서도 높게 나타날 수 있습니다. 이렇게 두 지도가 비슷한 패턴을 보이면 해당 변수들이 학습된 지도에서 유사한 공간적 변화를 보인다는 단서를 얻을 수 있습니다.
다만 시각적인 패턴이 비슷하다는 이유만으로 두 변수 사이의 인과관계가 성립한다고 판단할 수 없습니다. 이번 예제에서는 온도·습도·CO₂·소음·전력 사용량의 컴포넌트 평면을 각각 비교하여 고CO₂ 패턴, 고온·고전력 패턴, 상대적으로 안정적인 환경 패턴이 어느 영역에 나타나는지 살펴볼 수 있습니다.
SOM 결과로 실제 군집을 만들 수 있나요?
가능합니다. 다만 SOM의 36개 노드를 그대로 36개 군집으로 사용할 필요는 없습니다.
학습된 노드 프로토타입을 대상으로 계층적 군집분석이나 K-Means를 추가 적용하여 큰 유형으로 묶을 수 있습니다. 예를 들어 36개 노드를 세 유형으로 묶고, 각 관측값을 BMU가 속한 유형에 배정했다고 가정하겠습니다.
| 운영 유형 | 관측값 수 | 비율 | 주요 특징 |
|---|---|---|---|
| 유형 A: 안정적 환경 | 480 | 50% | CO₂·소음이 상대적으로 낮고 온도가 안정적 |
| 유형 B: 환기 점검 후보 | 300 | 31.25% | CO₂와 습도가 상대적으로 높음 |
| 유형 C: 냉방·전력 점검 후보 | 180 | 18.75% | 온도와 전력 사용량이 상대적으로 높음 |
| 합계 | 960 | 100% |
운영 유형 이름은 통계모형이 자동으로 의미를 보장해 주는 명칭이 아닙니다. 각 유형의 실제 변수값과 시설 운영 기준을 검토한 후 붙여야 합니다. 특히 유형 B와 C는 추가 점검의 우선순위를 정하는 참고자료일 뿐 실제 환기장치나 냉방설비의 고장을 확진하는 결과가 아닙니다.
SOM 학습 결과는 어떻게 평가하나요?
SOM은 지도 이미지가 보기 좋다는 이유만으로 좋은 분석이라고 평가할 수 없습니다.
원자료를 얼마나 잘 대표하는지와 가까운 관측값 사이의 관계를 어느 정도 보존했는지를 함께 확인해야 합니다. 대표적인 지표는 양자화오차(Quantization Error, QE)와 위상오차(Topographic Error, TE)입니다.
양자화오차는 각 관측값과 해당 BMU 프로토타입 사이 거리의 평균으로, 낮을수록 지도 노드가 데이터를 가깝게 대표한다는 뜻입니다. 위상오차는 관측값에서 첫 번째와 두 번째로 가까운 노드가 격자상 이웃이 아닌 비율을 평가하는 방식이 흔히 사용됩니다. 값이 낮을수록 국소적 위상 관계가 더 잘 보존되었다는 근거가 될 수 있습니다.
| 진단 | 예제 결과 | 해석 |
|---|---|---|
| 양자화오차(QE) | 0.74 | 표준화 공간에서 BMU까지의 평균 거리 |
| 위상오차(TE) | 0.06 | 관측값의 약 6%에서 상위 두 BMU가 인접하지 않음 |
| 빈 노드 | 2개 / 36개 | 관측값이 배정되지 않은 노드 수 |
QE는 지도 크기나 변수 스케일에 영향을 받고 TE도 격자 구조의 영향을 받으므로, 서로 다른 설정을 비교할 때 동일한 전처리와 평가 규칙을 유지해야 합니다. 노드 프로토타입을 최종 군집으로 묶었다면 실루엣 계수와 군집 안정성 등도 보조적으로 확인할 수 있습니다.
SOM을 사용할 때 주의할 점은 무엇인가요?
변수 스케일을 맞춰야 합니다.
단위가 다른 센서 변수를 그대로 거리 계산에 사용하면 일부 변수에 결과가 치우칠 수 있습니다. 표준화 방법을 기록하고 같은 규칙을 반복 분석에도 적용해야 합니다.
지도에서 가까워 보인다고 실제 거리까지 같다고 가정하지 않아야 합니다.
SOM은 유사성을 저차원 격자로 표현하지만 원래 데이터 공간의 모든 거리 관계를 보존하는 것은 아닙니다.
지도 크기와 초기값에 민감할 수 있습니다.
같은 자료라도 노드 개수와 학습률, 난수 초기값에 따라 결과가 달라질 수 있으므로 여러 설정에서 반복 학습하여 안정성을 확인하는 것이 좋습니다.
각 관측값이 독립적이라는 가정을 무심코 적용해서는 안 됩니다.
이번 예제는 같은 공간을 여러 날 측정한 자료이므로 시간적 반복과 공간별 특성이 함께 존재합니다. SOM은 탐색적 지도화를 제공하지만 반복 관측에 대한 인과적 추론을 수행하지는 않습니다.
군집 이름을 실제 원인으로 해석하지 않아야 합니다.
CO₂가 높은 유형을 찾았더라도 센서 오류나 일시적 인원 증가 등 여러 이유가 있을 수 있습니다. 운영 판단을 내리기 전에 현장 정보와 추가 진단을 확인해야 합니다.
SOM 분석 결과는 어떻게 보고하나요?
SOM 결과를 보고할 때는 분석 단위와 표본 수, 입력변수, 결측 및 이상치 처리, 표준화, 지도 크기, 학습률·반경 설정, 난수 시드, 평가 지표와 최종 유형의 특징을 함께 제시하는 것이 좋습니다.
결과 보고 예시
스마트빌딩의 실내환경 패턴을 탐색하기 위해 8개 층에서 수집한 공간·일별 센서 관측값 960개에 자기조직화지도(SOM)를 적용하였다. 입력변수는 평균 실내온도, 상대습도, CO₂ 농도, 소음 수준, 일간 전력 사용량이었으며 각 변수에 표준화를 적용하였다. 6×6 격자를 사용하여 학습한 결과 양자화오차는 0.74, 위상오차는 0.06으로 나타났다.
학습된 36개 노드의 프로토타입을 추가로 군집화하여 세 가지 운영 유형을 도출하였다. 유형 A에는 480개(50%), 유형 B에는 300개(31.25%), 유형 C에는 180개(18.75%)의 관측값이 포함되었다. 유형 B는 상대적으로 높은 CO₂와 습도, 유형 C는 높은 온도와 전력 사용량이 특징적으로 나타났다. 이러한 결과는 스마트빌딩의 환경 상태를 유형별로 요약하고 추가 점검 대상을 선별하는 데 활용할 수 있으나, 각 유형이 특정 설비의 고장을 직접 의미하는 것은 아니다.
실제 연구에서는 SOM 지도와 U-Matrix, 주요 컴포넌트 평면을 함께 제시하면 각 운영 유형이 지도에서 어떤 방식으로 구분되는지 이해하기 쉽습니다. 또한 반복 학습의 안정성과 최종 군집화 방식도 보고하는 것이 좋습니다.
SOM은 유사한 패턴을 지도 위에서 탐색합니다
자기조직화지도는 여러 변수로 구성된 관측값을 격자 위에 배치해 유사한 패턴을 탐색하는 비지도학습 방법입니다.
각 노드에는 입력변수와 같은 차원의 프로토타입이 존재하며, 학습 과정에서 최적일치단위와 그 주변 노드를 함께 조정합니다.
분석 결과에서는 히트 카운트와 U-Matrix, 컴포넌트 평면을 이용해 관측값의 분포와 노드 사이의 경계, 변수별 패턴을 확인할 수 있습니다. 필요하다면 노드 프로토타입을 다시 군집화하여 해석하기 쉬운 유형으로 정리할 수도 있습니다.
하지만 지도의 시각적 구조가 실제 데이터의 모든 관계를 정확하게 보존하는 것은 아닙니다. 변수 표준화, 지도 크기, 초기화와 학습 설정, 양자화오차와 위상오차, 결과 안정성을 함께 검토해야 합니다.
SOM의 핵심은 데이터를 단순히 몇 개의 군집으로 나누는 것이 아니라, 비슷한 관측값들이 어떤 관계와 전이 패턴을 이루는지 지도 위에서 살펴보는 데 있습니다.