꾸준히 성장하기

[D+46] 교육 | 머신러닝: 비지도학습 본문

KT 에이블스쿨 5기/교육

[D+46] 교육 | 머신러닝: 비지도학습

data.dohii 2024. 4. 6. 21:56

이번 포스팅에서는 머신러닝의 주요 개념 중 하나인 비지도 학습에 대해 알아보고자 합니다.

제가 하루만에 비지도학습을 학습할 수 있는지 걱정이 되었지만, 한기영 강사님 덕분에 이해가 쏙쏙되었어요!


1. 지도학습과 비지도학습의 비교

먼저, 비지도 학습을 이해하기 위해 지도학습과의 차이점을 간단히 살펴보겠습니다.
지도학습은 마치 샘플 답안을 주고 문제를 푸는 것과 같습니다. 즉, 입력 데이터와 그에 상응하는 정답(라벨)이 주어지고, 이를 통해 모델을 학습시킵니다.
비지도학습은 답지 없이 문제를 푸는 것에 비유할 수 있습니다. 여기서는 입력 데이터만 주어지고, 모델이 스스로 데이터의 구조나 패턴을 찾아내야 합니다.

 

2. 차원 축소

데이터의 특성(feature) 수가 많아지면 모델을 복잡하게 만들고, 데이터가 희박해지는 '차원의 저주'에 직면할 수 있습니다.

이를 해결하는 방법은 데이터를 늘려서 행 수를 늘리거나 차원 축소로 열 수를 줄이는 것입니다.

 

1) 주성분 분석(PCA)

주성분 분석은 고차원 데이터의 분산을 최대한 보존하면서 차원의 수를 줄이는 선형 방식입니다. 

PCA를 사용하기 전에는 반드시 데이터 스케일링이 필요합니다.

from sklearn.decomposition import PCA

import matplotlib.pyplot as plt

# 주성분 분석 선언

pca = PCA(n_components=n)

# 데이터에 적용

x_train_pc = pca.fit_transform(x_train)

x_val_pc = pca.transform(x_val)

# 주성분의 개수와 설명된 분산 비율 시각화

plt.plot(range(1, n+1), pca.explained_variance_ratio_, marker='.')

plt.xlabel('Number of Principal Components')

plt.grid()

plt.show()

 

2) t-SNE

t-SNE는 고차원 데이터의 유사도를 최대한 보존하면서 2~3차원으로 축소하는 비선형 방식입니다. 주로 데이터 시각화에 활용됩니다.

 

3. 클러스터링(Clustering)

클러스터링은 데이터를 비슷한 특성을 가진 그룹끼리 묶어주는 것입니다.

가장 대표적인 클러스터링 방법은 K-평균(K-means)과 DBSCAN입니다.

 

1) K-means

주성분 분석은 고차원 데이터의 분산을 최대한 보존하면서 차원의 수를 줄이는 선형 방식입니다. 

더 자세히 말하면, K개의 평균으로부터 거리를 계산하고, 가까운 평균으로 묶어 Cluster를 나누는 방식입니다.

평균을 조절하면서 최적의 평균값 위치를 찾아가는 방식입니다.

단점으로는 덩어리 형태로 묶을 수 있어야 하며, K값은 사람이 정해줘야 합니다.

from sklearn.cluster import KMeans

# k-means 모델 학습

model = KMeans(n_clusters=2, n_init='auto') model.fit(x)

# 클러스터링 결과 예측

pred = model.predict(x)

print(pred)

실루엣 점수는 클러스터링 결과의 품질을 측정하는 지표로, 값이 -1에서 1 사이에 있습니다. 

실루엣 점수를 계산하기 위해서는 최소 2개 이상의 클러스터가 필요합니다.

 

2) DBSCAN

임의의 한 점으로부터 시작합니다.

반경 범위내에 최소 포인트 수가 존재하는지 확인 후, 연쇄적으로 근처의 데이터들을 클러스터 안에 포함시킵니다.

단점으로는 연쇄적으로 묶을 반경을 사람이 정해줘야 합니다.


 

여러분도 비지도 학습의 다양한 기법을 시도해보면서 데이터 분석에 한 걸음 더 나아가 보시기 바랍니다.

반응형