자체 구성 맵
자체 구성 맵 (SOM)은 많은 기능을 가진 데이터를 클러스터링하는 데 사용할 수 있는 감독되지 않은 형태의 머신 러닝입니다. SOM은 데이터를 클러스터링할 뿐만 아니라 더 낮은 차원(일반적으로 2차원)에 데이터를 "매핑"하여 클러스터를 보다 쉽게 시각화할 수 있도록 합니다.
전통적으로 SOM은 기능이 입력이고 클러스터가 출력인 인공 신경망의 한 형태로 설명됩니다. 그러나 SOM이 어떻게 훈련되고 구조화되는지에 대한 거의 모든 것이 다른 일부 용어가 동일하더라도 전통적인 피드포워드 신경망에서 파생됩니다. 따라서 빈 슬레이트 신경망으로 시작하는 경우 여전히 이를 따를 수 있습니다. 
일을 더 쉽게 하기 위해 몇 가지 용어와 그 의미를 미리 정의하겠습니다.
마디 . 신경망에서 용어를 차용했기 때문에 노드라고 부르지만 SOM의 노드는 각 클러스터의 중심을 나타냅니다. 보유하고 있는 노드의 수는 보유할 클러스터의 수입니다.
무게 . 우리는 또한 신경망에서 가중치라는 용어를 빌렸지만 SOM의 가중치는 다릅니다. 가중치는 노드의 공간적 위치를 나타냅니다(K-평균에서 클러스터 중심이 있는 방식과 같이). 가중치는 데이터 벡터와 같은 차원이 됩니다.
이웃 . 노드의 이웃은 노드에 충분히 가까운 모든 노드입니다. "충분히" 얼마나 가까운지는 우리가 SOM을 훈련함에 따라 바뀔 것입니다.
학습률 . 학습률은 각 반복에서 노드 가중치를 변경하는 정도를 반영합니다. 학습률이 높다는 것은 가중치가 크게 변동할 수 있음을 의미합니다. 학습률이 매우 낮다는 것은 가중치가 초기 값에서 크게 변하지 않는다는 것을 의미합니다.
격자/지도. 지도에서 노드의 배열/그리드.

증분 학습 SOM
SOM이 하는 일에 대한 더 나은 일반적인 아이디어를 제공하기 위해 먼저 훈련된 SOM을 살펴보겠습니다. 반복적으로, 그러면 SOM 생성의 각 단계를 하나씩 볼 수 있습니다. 이것은 방법이 아니다. JMP 구현합니다. 계산 효율성을 높이기 위해 JMP는 다음을 사용하여 SOM을 교육합니다. 배치 방법, 우리는 아래에서 볼 것입니다.
개요 . SOM을 반복적으로 훈련하는 다섯 가지 주요 단계가 있습니다.
- 초기화 SOM 노드의 가중치. 이것은 무작위로 수행되거나 특정 시작 가중치를 선택하여 가능한 모든 입력 값(JMP에서 수행)에 효율적으로 분산되도록 선택할 수 있습니다.
- 선택하다 임의의 데이터 포인트 데이터 세트에서.
- 데이터 포인트가 가장 가까운 노드 계산 . 데이터 포인트와 각 노드 가중치 사이의 거리를 계산하여 이를 수행할 수 있습니다. 가장 가까운 노드를 노드라고 합니다. 베스트 매칭 유닛 ( BMU 줄여서).
- 일단 BMU를 알게 되면, BMU 근처에 있는 노드를 계산합니다. . 즉, 어떤 노드가 BMU에 대한 맵에서 충분히 가깝습니다.
- 우리 무게 업데이트 BMU와 모든 이웃은 가중치가 데이터 포인트와 더 유사하도록 합니다. 기본적으로 우리는 클러스터를 데이터에 더 잘 맞도록 만들고 있습니다. BMU에서 멀리 떨어진 노드는 BMU(및 BMU 자체)에 가까운 노드보다 적게 변경됩니다.
최대 반복 횟수에 도달하거나 노드 가중치가 변경되지 않을 때까지 2-5단계를 반복합니다.
깊이 있는 . 3-5단계를 더 자세히 살펴보고 어떤 일이 진행되고 있는지 더 직관적으로 이해해 보겠습니다.
시작하기 전에 수학이 이 섹션을 읽지 못하게 하지 마십시오. . 공식을 보여드리겠지만 수학의 기본 개념을 알고 있는 한 모든 수학을 이해하지 못해도 괜찮습니다. 왜 우리는 이 수학을 사용합니다.
BMU 찾기 . 두 n차원 벡터 사이의 거리를 계산하는 방법에는 여러 가지가 있습니다. 일반적으로 SOM에서 유클리드 거리 또는 코사인 거리와 같은 측정값을 볼 수 있습니다.


이 경우 유클리드 거리를 사용합니다. BMU를 계산하기 위해 선택한 데이터 벡터와 노드에 대한 각 가중치 벡터 사이의 유클리드 거리를 계산합니다. BMU의 거리가 가장 작습니다.
이웃 계산하기 . 여러 노드/클러스터 센터를 업데이트하면 SOM이 K-Means와 같은 간단한 방법에서 분리됩니다. BMU의 가중치를 데이터 벡터에 더 가깝게 변경할 뿐만 아니라 BMU에 충분히 가깝다고 생각하는 노드도 변경할 것입니다.
노드가 BMU의 특정 반경 내에 있는 경우 노드는 BMU의 이웃으로 간주됩니다. 즉, 노드가 반지름을 가진 원 안에 있으면 아르 자형 , BMU를 중심으로 이웃으로 간주됩니다.
처음에는 큰 이웃을 사용하고 많은 노드를 변경하려고 합니다. 그러나 시간이 지남에 따라 우리는 SOM을 좀 더 "미세 조정"할 수 있도록 이웃이 작아지기를 원합니다. 무언가를 샌딩할 때 우리는 종종 큰 사포로 시작하여 더 미세한 사포로 가는 방법을 생각해 보십시오.
수학적으로 이웃 반경에 대한 공식을 사용하여 이를 달성할 수 있습니다. 아르 자형 , 이는 시간에 따라 달라지며 SOM을 계속 훈련할수록 작아집니다. 결국 이웃은 너무 작아서 BMU만 포함하게 됩니다.
노드 가중치 업데이트 . 업데이트하려는 노드 가중치를 알게 되면 얼마나 변경할지 계산합니다. BMU에 가장 가까운 노드의 가중치는 *가장 많이* 변경되고 우리 이웃의 가장 가장자리에 있는 노드는 거의 변경되지 않습니다. 그러나 모든 노드 가중치는 현재 데이터 벡터에 더 가깝게 당겨집니다.
우리는 이 공식을 사용하여 그렇게 합니다(걱정하지 마십시오. 잠시 후에 다른 부분을 안내해 드리겠습니다).

W는 노드 가중치를 나타냅니다. W(t+1)은 우리의 업데이트 무게, W(t)는 우리의 현재의 무게. 우변의 후반부를 잠시 단순화하면 새로 업데이트된 가중치가 이전 가중치에 일부를 곱한 것임을 알 수 있습니다. 조정 .

(V(t) - W(t))는 데이터 벡터와 현재 노드 가중치 사이의 거리입니다. 이것은 우리의 조정이 데이터 벡터와 노드가 얼마나 멀리 떨어져 있는지에 달려 있음을 보여줍니다.

L(t)는 학습률입니다. 우리의 이웃 함수와 마찬가지로(실제로는 이웃 반경 함수와 같습니다...), 학습률은 상대적으로 큰 값에서 시작합니다. , 그리고 시간이 지남에 따라 작아집니다(지수 부분은 우리를 위해 그렇게 합니다.)

SOM 훈련을 처음 시작할 때 학습률은 높지만 시간이 지남에 따라 노드 가중치가 더 안정적이기를 원하므로 학습률을 낮춥니다.

학습률이 감소할 뿐만 아니라 시각 , 그러나 노드 가중치에 대한 변경은 노드가 더 나아가 우리 BMU에서.
는 이 붕괴를 수학적으로 나타내는 가우스 커널입니다. ( 거리 는 변경하려는 노드와 맵의 BMU 사이의 거리입니다.)

주어진 반경 r(t)에 대해 가우스 커널은 다음과 같은 모양이 됩니다.
업데이트할 노드와 BMU 사이의 거리가 클 때 작을 것이다. 반대로, 우리가 업데이트하는 노드가 BMU에 가까울 때, 더 커질 것입니다.
우리는 마침내 전체 공식을 분해했습니다!

검토:
W(t)는 노드의 현재 가중치입니다.

BMU에서 더 멀리 있는 노드가 변경되도록 합니다. 더 적은 BMU(및 BMU 자체)에 가까운 노드보다
L(t)는 감쇠 학습률입니다. 시간이 지남에 따라 우리는 "미세 조정"하고 교육을 시작할 때보다 더 작은 변경을 수행합니다.
V(t) - W(t)는 데이터 벡터와 노드 가중치(둘 다 n차원) 사이의 거리입니다. 거리가 멀수록 더 많은 것이 변할 것입니다.
여기까지 왔다면 휴식을 취할 자격이 있습니다! SOM이 반복적으로 훈련되는 방식을 검토했습니다. 이것은 SOM을 고유하게 만드는 일반적인 아이디어를 보여주었습니다. 즉, 시간, BMU로부터의 거리, 데이터 벡터와 노드 가중치 사이의 거리.
다른 곳에서 SOM에 대해 읽은 적이 있다면 사람들이 흥분하는 것은 SOM이 "토폴로지 보존"이라는 것입니다. 그리드를 훈련시킨 후. 이것은 SOM 그리드를 사용하여 데이터를 시각화하는 데 도움이 됩니다. 2차원에서는 쉽게 그래프를 그릴 수 있지만 다차원에서는 훨씬 더 어렵기 때문입니다.
반복적인 SOM 훈련에 대해 배우는 것은 이러한 속성을 이해하는 데 유용하지만 계산적으로 효율적이지 않습니다. 그렇기 때문에 JMP는 일괄 실제로 SOM 계산을 수행하는 훈련 방법.
배치 학습 SOM
이 알고리즘은 JMP 웹사이트에 설명된 알고리즘입니다. SOM을 한 번에 하나의 데이터 벡터로 훈련시키는 대신 모든 데이터 벡터를 한 번에 사용할 수 있습니다!
단계는 다음과 같습니다.
- 초기화 SOM 노드의 가중치(반복 방법에서도 동일)
- 한번에, BMU 계산 훈련 세트의 각 데이터 벡터에 대해
- 새 노드 가중치 계산 이 공식을 사용하여:

BMU가 노드 j인 데이터 벡터의 수입니다.
모든 데이터 벡터의 평균이고 어떤 노드가 얼마나 변경되는지를 결정하는 이웃 함수입니다. 와 비슷하다
증분 학습 알고리즘에서
4. SOM이 수렴될 때까지 2와 3을 반복합니다.
수학이 한 번에 모두 발생하면 따라가기가 더 어려울 수 있지만 배치 학습 알고리즘의 기본 전제는 응답으로 노드를 업데이트하는 대신 하나 데이터 벡터에 대한 응답으로 업데이트합니다. 모두 데이터 벡터를 한 번에 처리할 수 있습니다(K-평균과 같은 종류...). 고맙게도 이 방법을 사용하면 JMP가 SOM을 훈련하는 데 걸리는 시간이 단축되는 경우가 많습니다.
JMP에서
JMP에서 SOM 옵션은 K-평균 메뉴에 있습니다. SOM을 사용하여 다양한 미국 레스토랑의 패스트푸드 햄버거를 클러스터링해 보겠습니다. 이동 분석 > 군집화 > K-평균 . K-Means 클러스터 창이 나타납니다. 사용하려는 모든 변수를 클릭하여 드래그하십시오. 와이 상자 및 클릭 확인 .
제어판에는 방법에 대한 드롭다운 메뉴가 있습니다. 선택하다 자기 조직화 지도 . 여기에서 그리드의 크기를 선택할 수 있습니다. 직사각형 모양으로 배열된 4개의 노드를 제공하는 2x2를 수행합니다. 딸깍 하는 소리 가다 .
우리의 출력은 4개의 클러스터 각각의 평균을 자동으로 보여줍니다. SOM Grid 메뉴 아래의 빨간색 삼각형으로 이동하고 " 클러스터 저장 ". 같은 메뉴에서 " 바이플롯 "를 클릭하여 SOM을 시각적으로 표현했습니다. JMP는 처음 두 개의 주요 구성 요소로 노드/클러스터를 표시합니다. 여기에서 클러스터 1(맨 위)이 다른 세 개와 상당히 멀리 떨어져 있는 것처럼 보입니다. 나중에 Graph Builder에서 확인할 수 있습니다.

몇 가지 변수를 조사하더라도 클러스터 1이 왜 그렇게 다른지 알 수 있습니다. 단백질이 전혀 없습니다. 데이터 세트를 보면 클러스터 1의 항목이 디저트 경향이 있음을 알 수 있습니다. 
반면에 클러스터 2는 칼로리, 단백질 및 지방이 높습니다! 음식을 먹은 후 오랫동안 깨어 있으려면 이러한 항목을 조심해야 할 수 있습니다.
결론
자체 구성 맵은 잠재적으로 고차원 데이터를 사용하는 맵을 만들고 훨씬 더 관리하기 쉬운 2D 형식으로 매핑하여 데이터를 클러스터링하는 유용한 도구입니다. ~ 안에 JMP , SOM은 K-Means만큼 구현하기 쉽습니다(심지어 수학이 훨씬 더 복잡하더라도). 그래서 SOM을 시도함으로써 잃을 것이 무엇입니까?
자체 구성 맵 (SOM)은 많은 기능을 가진 데이터를 클러스터링하는 데 사용할 수 있는 감독되지 않은 형태의 머신 러닝입니다. SOM은 데이터를 클러스터링할 뿐만 아니라 더 낮은 차원(일반적으로 2차원)에 데이터를 "매핑"하여 클러스터를 보다 쉽게 시각화할 수 있도록 합니다.
Re: 자체 구성 맵안녕 첼시
차원 축소를 위해 JMP에서 SOM을 사용하는 방법에 대한 예가 있습니까?
나는 일반적으로 클러스터링에 SOM을 사용하지만 예측 변수의 수를 줄이는 데에도 사용할 수 있다는 것을 알고 있습니다.
감사
펠리체