제퍼넷 로고

자가 구성 맵을 사용한 이상 감지에 대한 초보자 가이드

시간

이 기사는 데이터 과학 Blogathon

데이터에 대해 사전 정의된 레이블이 없고 모델이 데이터에서 패턴을 추론하고 특징을 추출하여 데이터를 그룹으로 분할하는 비지도 학습은 데이터 과학 문제의 핵심입니다. 기계 학습 세계에서 세분화는 특성에 따라 데이터를 클러스터링하는 데 도움이 됩니다.

Segmentation과 유사하게 Self Organizing Maps라는 딥 러닝 영역에 병렬 기술이 존재합니다. 이 기사에서는 Self Organizing Maps가 무엇인지, 그 아키텍처, 어떻게 훈련되는지, 응용 프로그램이 무엇인지, K-Means Clustering과 어떻게 유사한지 설명하고 Python에서 구현하는 이 기술에 대해 자세히 설명합니다.

차례

  • 자기 조직화 맵이란 무엇입니까?
  • 자기 조직화 맵의 아키텍처
  • Self-Organizing Maps는 어떻게 학습합니까?
  • 베스트 매칭 유닛(BMU)
  • K-평균 클러스터링에 대한 자기 조직화 맵의 유추
  • Python에서 자기 조직화 맵 구현

자기 조직화 맵이란 무엇입니까?

Teuvo Kohonen 교수가 발명한 Kohonen 인공 신경망 또는 Kohonen 지도는 인공 신경망(ANN)의 또 다른 유형입니다. SOM(Self-Organizing Map)으로 더 잘 알려져 있으며 비지도 학습의 매우 드문 측면이며 데이터 시각화 기술입니다.

이 기술의 목표는 치수를 줄이고 기능을 감지하는 것입니다. 지도는 고차원 데이터를 시각화하는 데 도움이 됩니다. 자기 조직화 신경망을 사용하여 XNUMX차원 공간에서 다차원 데이터를 나타냅니다. 이 기술은 데이터 마이닝, 얼굴 인식, 패턴 인식, 음성 분석, 산업 및 의료 진단, 이상 감지에 사용됩니다.

SOM의 장점은 훈련 데이터 세트(또는 입력)의 토폴로지 관계를 보존한다는 것입니다. 도형의 모양이나 크기가 계속 변경되어도 입력 데이터의 기본 속성이 영향을 받지 않음을 암시합니다. SOM은 쉽게 식별되지 않는 상관 관계를 밝히는 데 도움이 됩니다.

SOM이 어떻게 구조화되고 아키텍처 뉘앙스를 이해하는지 봅시다…

아키텍처 자기 조직화 지도

자기 조직화 맵 구조는 뉴런의 격자입니다. 그리드 X 및 Y 좌표에서 각 노드는 특정 위상 위치를 가지며 입력 변수와 동일한 차원의 가중치 벡터로 구성됩니다.

입력 훈련 데이터는 n 차원(x1, x2, x3…xn)의 벡터 세트이며 각 노드는 n 차원(w1, w2, w3… wn)의 해당 가중치 벡터 W로 구성됩니다.

아래 그림에서 노드 사이의 선은 단순히 인접성을 나타내는 것이며 다른 신경망에서와 같이 연결을 의미하지 않습니다.

자기 조직화 지도

이미지 1

Self-Organizing Maps는 입력 신호 세트를 받아들이고 응답하는 뉴런(또는 노드)의 격자 또는 그리드입니다. 각 뉴런에는 위치가 있으며 서로 가까이 있는 뉴런은 속성이 유사한 클러스터를 나타냅니다. 따라서 각 뉴런은 훈련에서 학습된 클러스터를 나타냅니다.

SOM에서 응답이 비교되고 격자에서 '승리' 뉴런이 선택됩니다. 이 선택된 뉴런은 이웃 뉴런과 함께 활성화됩니다. SOM은 출력 노드 사이에 측면 연결이 없는 경우 출력으로 임의의 수의 지표에 대한 XNUMX차원 맵을 반환합니다.

여기 질문이 있습니다. SOM에 대해 계산해야 하는 손실 함수는 무엇이라고 생각하십니까? 글쎄요, 비지도 학습 기법이므로 목표 변수가 없으므로 손실 함수를 계산하지도 않으므로 SOM에도 역전파 과정이 필요하지 않습니다.

어떻게 자기 조직화 지도 배우다?

이제 자기 조직화 지도 알고리즘의 학습 메커니즘이 무엇인지 이해해 볼까요? 베타는 어떻게 추정되고 네트워크는 훈련됩니까?

SOM 훈련 프로세스의 기본 아이디어는 모든 노드를 검사하고 가중치가 입력 벡터와 가장 유사한 하나의 노드를 찾는 것입니다. 훈련은 몇 단계와 많은 반복을 통해 수행됩니다. 아래에서 자세히 살펴보겠습니다.

세 개의 입력 신호 x1, x2, x3이 있습니다. 이 입력 벡터는 훈련 데이터 세트에서 무작위로 선택되어 격자에 표시됩니다. 따라서 아래와 같이 3개의 행과 3개의 열이 있는 XNUMX개의 노드가 있는 XNUMX*XNUMX XNUMX차원 배열 형태의 뉴런 격자가 있습니다.

보이는 출력 노드 | 자기 조직화 지도

이미지 2

이해를 돕기 위해 위의 3*3 행렬을 아래와 같이 시각화합니다.

보이는 입력 노드

이미지 3

각 노드에는 가중치로 임의의 값이 있습니다. 이 가중치는 다음과 같이 신경망에 속하지 않습니다.

무게 | 자기 조직화 지도

이미지 4

이 가중치로부터 다음과 같이 유클리드 거리를 계산할 수 있습니다.

거리를 계산 | 자기 조직화 지도

이미지 5

SOM의 교육 과정은 다음과 같습니다.

  1. 먼저 모든 가중치를 무작위로 초기화합니다.

  2. 훈련 세트에서 입력 벡터 x = [x1, x2, x3, … , xn]을 선택합니다.

  3. 각 뉴런 j에 대한 유클리드 거리를 계산하여 x를 가중치 wj와 비교합니다. 거리가 가장 짧은 뉴런이 승자로 선언됩니다. 이기는 뉴런은 BMU(Best Matching Unit)로 알려져 있습니다.

  4. 승자가 입력 벡터 x가 되고 닮도록 뉴런 가중치를 업데이트합니다.

  5. 인접한 뉴런의 가중치는 입력 벡터와 더 유사하도록 조정됩니다. 노드가 BMU에 가까울수록 가중치가 더 많이 변경됩니다. 조정된 매개변수는 학습률과 이웃 함수입니다. (이웃 기능에 대한 자세한 내용은 아래에서)

  6. 맵이 주어진 반복에 대해 수렴하거나 가중치에 변화가 관찰되지 않을 때까지 2단계부터 반복합니다.

베스트 매칭 유닛(BMU)

위에서 보았듯이 각 노드(또는 원시 데이터 포인트)의 거리는 모든 출력 노드에서 계산됩니다. 가장 작은 거리로 식별되는 노드 또는 뉴런은 BMU(Best Matching Unit) 또는 이웃입니다. 다음 그림에서 (m)으로 표시됩니다.

BMU | 자기 조직화 지도

이미지 6

이 BMU에서 반경(또는 시그마)이 정의됩니다. BMU의 반경에 속하는 모든 노드는 BMU로부터의 해당 거리에 따라 업데이트됩니다.

따라서 이제 요점은 출력 맵의 뉴런이 다양한 최적 일치 단위 반경의 일부가 될 수 있다는 것입니다. 이것은 뉴런에 대한 지속적인 밀기 및 당기기 효과로 이어지지만, 뉴런의 동작은 그 근처의 최적 일치 장치와 더 유사할 것입니다.

각 반복 후에 반지름이 줄어들고 BMU가 더 적은 노드를 가져오므로 프로세스가 점점 더 정확해지고 특정 세그먼트에 속하는 데이터 포인트의 세그먼트 매핑을 줄이는 이웃이 축소됩니다. 이것은 지도를 점점 더 구체적으로 만들고 궁극적으로 수렴을 시작하고 훈련 데이터(또는 입력)처럼 됩니다.

클러스터링

이미지 7

위의 그림에서 BMU(Best Matching Unit)의 이웃 반경이 계산됩니다. 이것은 패널의 오른쪽과 같이 크게 시작하는 값으로 일반적으로 격자의 반경으로 설정되지만 시간 단계마다 감소합니다. 이 반경 내에서 발견된 모든 노드는 BMU의 이웃 내부로 간주됩니다.

K-평균 클러스터링에 대한 SOM의 유추

K-Means 클러스터링과 SOM은 모두 고차원 데이터를 저차원 데이터로 변환하는 수단입니다. 하나는 기계 학습 알고리즘이고 다른 하나는 딥 러닝 알고리즘이지만 둘 사이에는 유사점이 있습니다.

K-Means 클러스터링에서는 새로운 데이터 포인트가 나타날 때 중심이 업데이트되고 K 값을 찾는 엘보우 방법과 같은 방법이 있습니다. 반면 Self Organizing Maps에서는 신경망의 아키텍처가 업데이트되어 업데이트됩니다. 가중치 및 뉴런 수는 조정 매개변수입니다.

Python에서 자기 조직화 맵 구현

Python에서 사기 고객을 감지하기 위해 자체 구성 맵 기술을 사용할 것입니다. 데이터에는 클래스 레이블 및 customerID와 함께 690개의 레코드와 16개의 기능이 있습니다. SOM은 감독되지 않는 기술이므로 여기에서 클래스 열을 사용하지 않으며 customerID 열도 필요하지 않습니다. 데이터 세트와 코드는 내 GitHub의 저장소.

SOM은 식별된 특정 데이터 포인트 그룹을 매핑하기 위해 색상 코딩이 사용되는 XNUMX차원 맵을 반환합니다.

Python에서는 Minisom이라는 라이브러리를 사용하여 Self Organizing Maps를 수행합니다.

import numpy as np import matplotlib.pyplot as plt import pandas as pd # Minisom 라이브러리 및 모듈은 minisom import MiniSom에서 Self Organizing Maps를 수행하는 데 사용됩니다.
# Load Data data = pd.read_csv('Credit_Card_Applications.csv') # X data # 데이터의 형태: data.shape # 데이터의 정보: data.info()

자체 구성 맵의 경우 X 변수만 필요합니다. 이 경우 customerID는 고유 변수이고 Y(대상 변수)도 사용하지 않으므로 필요하지 않습니다.

그러나 목표 변수(Y)는 출력이 입력과 일치하는지 여부를 이해하는 데 사용할 수 있습니다.

# SOM 입력을 위한 X 변수 정의
X = data.iloc[:, 1:14].values ​​y = data.iloc[:, -1].values ​​# X 변수:
pd.DataFrame(X)

X 변수 스케일링:

sklearn.preprocessing에서 가져오기 MinMaxScaler sc = MinMaxScaler(feature_range = (0, 1)) X = sc.fit_transform(X) pd.DataFrame(X)

SOM은 뉴런의 XNUMX차원 배열입니다. 따라서 SOM을 정의하려면 x 및 y 차원의 순서로 필요한 행과 열 및 뉴런 수를 알아야 합니다. SOM의 매개변수는 다음과 같습니다.

  • x: som_grid_rows, 행 수
  • y: som_grid_columns, 열 수
  • 시그마는 이웃 반경입니다.
  • 학습_속도

x와 y는 SOM의 차원이므로 이 값이 작아서는 안 되며 모든 반복에서 이러한 값이 조정되기 때문에 Sigma 및 learning_rate는 더 높은 값을 취할 수 있습니다. 반경의 초기 값은 1이지만.

# 하이퍼 매개변수 설정 som_grid_rows = 10 som_grid_columns = 10 iterations = 20000 sigma = 1 learning_rate = 0.5

x = 10 및 y = 10을 각각의 행 수와 열 수(차원)로 하면 10*10이 100개의 세그먼트를 의미합니다. 우리는 반복을 수행하기 위해 어떤 순서로도 관찰하지 않고 무작위로 관찰합니다.

# SOM 정의: som = MiniSom(x = som_grid_rows, y = som_grid_columns, input_len=13, sigma=sigma, learning_rate=learning_rate) # 가중치 초기화 som.random_weights_init(X) # 훈련 som.train_random(X, iterations)

가중치의 가중치 및 거리 맵은 다음과 같습니다.

# 가중치는 다음과 같습니다. wts = som.weights # 가중치의 모양은 다음과 같습니다. wts.shape # 가중치에서 거리 맵을 반환합니다. som.distance_map()

우리는 이웃과 주 뉴런의 평균 유클리드 거리인 MID(Mean Inter-Neuron Distance)를 계산합니다.

  • MID가 높을수록 이웃에서 승리하는 노드가 더 멀리 떨어져 있습니다.
  • 이웃에서 멀리 떨어진 가장 적합한 단위는 일반적으로 클러스터에서 멀리 떨어져 있습니다.
  • 일부 값이 더 유사한 거리, 즉 MID 측면에서 작은 거리를 갖는 경우 해당 값은 서로 더 가깝고 유사합니다.

Pcolor()는 모든 MID의 색상을 지정하는 데 사용되며 창은 뼈대()입니다.

from pylab import plot, axis, show, pcolor, colorbar, bone bone() pcolor(som.distance_map().T) # 배경으로 거리 맵 colorbar() show()

질병에 걸린 환자를 식별하기 위해 각 라벨에 다른 색상과 마커를 사용합니다. SOM 원리를 설명하는 데 사용되는 가장 일반적인 예는 XNUMX차원 빨강, 녹색-파랑의 색상을 XNUMX차원으로 매핑하는 것입니다. 히트맵에 표시된 이상치가 실제 사기 고객과 일치하는지 여부는 다음을 통해 교차 확인할 수 있습니다.

bone() pcolor(som.distance_map().T) colorbar() # 범례 마커 제공 = ['o', ''] # 관찰이 사기이면 빨간색 원형 색상 또는 그렇지 않으면 녹색 정사각형 색상 = ['r' , 'g'] for i, x in enumerate(X): w = som.winner(x) plot(w[0] + 0.5, w[1] + 0.5, markers[y[i]], markeredgecolor = 색상 [y[i]], markerfacecolor = '없음', markersize = 10, markeredgewidth = 2) show()
  • 사기를 구별하는 데 사용되는 마커는 다음과 같습니다.
    • Red Circular는 사기 고객으로 클래스 0입니다.
    • 그린스퀘어는 사기고객이 아닌 1등급
  • i는 인덱스이고 x는 각 값의 벡터이며 각 x에 대해 먼저 승리 노드를 얻습니다.
  • 이기는 노드의 좌표는 w[0] 및 w[1]이며 마커 중앙에 0.5가 추가됩니다.
  • s는 정사각형이고 마커 면 색상은 마커의 내부 색상입니다.

위의 매핑이 없는 일부 고객이 있으므로 해당 고객은 세그먼트의 일부가 아닙니다. 세그먼트의 일부를 구성하는 값을 표시하려면:

mappings = som.win_map(data) 매핑 mappings.keys() len(mappings.keys()) mappings[(9,8)] 히트 맵 및 매핑에서 일부 빨간색 원형을 사기로 간주합니다.
사기 = np.concatenate((mappings[(0,9)], mappings[(8,9)]), axis = 0) 사기 # 사기인 고객 목록:frauds1 = sc.inverse_transform(frauds) pd. DataFrame(frauds1)

미주

아래 도식은 자체 구성 맵의 작동을 보여줍니다.

이미지 8

  • 자체 구성 맵 알고리즘은 유사한 데이터 포인트가 맵의 가까운 위치에 매핑되도록 데이터의 토폴로지를 유지하면서 고차원 데이터를 XNUMX차원 맵에 투영합니다.

  • 이 기술은 감독 없이 데이터를 분류하며 대상 벡터가 없으므로 역전파가 없습니다.

  • SOM의 출력은 XNUMX차원 지도이며 색상 코딩은 데이터 포인트의 특정 그룹을 식별하는 데 사용됩니다.

이 기사가 당신에게 도움이 되었기를 바랍니다. 그리고 당신이 새로운 것을 배웠기를 바랍니다. 기사를 읽고 네트워크와 공유하는 데 도움을 주셔서 대단히 감사합니다 🙂

행복한 배움! 🙂

나에 대해서

안녕하세요! 저는 네하 세스입니다. 저는 Great Lakes Institute of Management에서 데이터 과학 및 엔지니어링 대학원 프로그램을, 통계학 학사를 보유하고 있습니다. 나는 10년 가장 인기 있는 게스트 작가 Top 2020 Analytics Vidhya(AV)에서.

제 관심 분야는 NLP와 딥 러닝에 있습니다. CFA 프로그램도 통과했습니다. 나에게 연락할 수 있습니다. 링크드인 내 다른 블로그를 읽을 수 있습니다. AVI.

참고자료

https://en.wikipedia.org/wiki/Teuvo_Kohonen

이미지 소스

  1. Image 1: https://static-01.hindawi.com/articles/cin/volume-2016/2476256/figures/2476256.fig.002.svgz
  2. 이미지 2: 63_blog_image_2.png(671×663) (sds-platform-private.s3-us-east-2.amazonaws.com)
  3. 이미지 3 : 63_blog_image_3.png (671×663) (sds-platform-private.s3-us-east-2.amazonaws.com)
  4. 이미지 4 : 63_blog_image_4.png (671×663) (sds-platform-private.s3-us-east-2.amazonaws.com)
  5. 이미지 5 : 63_blog_image_5.png (671×663) (sds-platform-private.s3-us-east-2.amazonaws.com)
  6. 이미지 6: https://www.researchgate.net/publication/350552111/Figure/fig2/AS:[이메일 보호]/The-Best-matching-unit-in-the-Self-Organizing-Map-SOM.png
  7. 이미지 7: mathworks.com
  8. 이미지 8: https://www.researchgate.net/profile/Bruno-Senzio/publication/313160273/Figure/fig2/AS:[이메일 보호]/SOM-구조-및-최적 일치-단위-19.png의 업데이트

이 기사에 표시된 미디어는 Analytics Vidhya의 소유가 아니며 작성자의 재량에 따라 사용됩니다.

PlatoAi. Web3 재창조. 데이터 인텔리전스 증폭.
액세스하려면 여기를 클릭하십시오.

출처: https://www.analyticsvidhya.com/blog/2021/09/beginners-guide-to-anomaly-detection-using-self-organizing-maps/

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?