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

증분 학습 SOM
SOM이 수행하는 작업에 대한 더 나은 일반적인 아이디어를 제공하기 위해 먼저 교육을 받은 SOM을 살펴보겠습니다. 반복적으로, 이를 통해 SOM 생성의 각 단계를 하나씩 살펴보겠습니다. 이런 방식은 아니죠 JMP 구현합니다. 계산 효율성을 높이기 위해 JMP는 다음을 사용하여 SOM을 교육합니다. 배치 방식, 아래에서 살펴보겠습니다.
개요 . SOM을 반복적으로 훈련시키는 5가지 주요 단계는 다음과 같습니다.
- 초기화 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 그리드를 사용하여 데이터를 시각화하는 데 도움이 됩니다.
반복적인 SOM 훈련에 대해 배우는 것은 이러한 속성을 이해하는 데 유용하지만 계산적으로 효율적이지는 않습니다. 이것이 바로 JMP가 다음을 사용하는 이유입니다. 일괄 실제로 SOM 계산을 수행하는 훈련 방법입니다.
일괄 학습 SOM
이 알고리즘은 JMP 웹사이트에 설명된 알고리즘입니다. SOM을 한 번에 하나의 데이터 벡터를 훈련하는 대신 모든 데이터 벡터를 한 번에 사용할 수 있습니다!
단계는 다음과 같습니다.
- 초기화 SOM 노드의 가중치(반복 방법에서도 동일함)
- 한꺼번에, BMU를 계산하다 훈련 세트의 각 데이터 벡터에 대해.
- 새 노드 가중치 계산 이 공식을 사용하면:

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

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