이번 글은 코드잇 강의를 수강하면서 배운 내용을 주로 하여 정리되어 있습니다. (코드잇 스프린트 데이터 애널리스트 트랙 1기 훈련생)
지도학습과 비지도학습
지도학습과 비지도학습은 기계학습의 두 가지 주요 방법론입니다. 이들은 데이터를 학습시키는 방식과 목표에 따라 차이점을 가집니다.
기계학습은 데이터를 사용하여 모델을 학습시키고 예측, 분류, 패턴 인식 등의 작업을 수행하는 인공지능의 한 분야입니다.
기계학습은 주로 세 가지 지도학습, 비지도학습, 그리고 강화학습과 같은 범주로 나눌 수 있습니다.
각 범주는 데이터의 라벨링 여부와 학습 방법에 따라 구분됩니다.
지도학습
지도학습은 라벨이 있는 데이터를 사용하여 모델을 학습시키는 방법(입력 데이터와 정답 레이블이 쌍으로 주어진 데이터를 학습하는 방법)입니다.
즉, 각 입력 데이터에 대해 정답(라벨)이 주어져 있습니다. 목표는 모델이 새로운 입력 데이터에 대해 정확한 출력을 예측할 수 있도록 학습하는 것입니다.
지도학습의 주요 작업은 다음과 같습니다:
- 분류(Classification): 입력 데이터를 미리 정의된 클래스 레이블 중 하나로 분류하는 작업입니다. 예를 들어, 이메일을 스팸 또는 스팸 아님으로 분류하거나, 이미지를 고양이, 개, 새 등으로 분류하는 것이 포함됩니다.
- 회귀(Regression): 연속적인 값을 예측하는 작업입니다. 예를 들어, 주택 가격 예측, 주식 시장 예측 등이 포함됩니다.
비지도학습
비지도학습은 라벨이 없는 데이터를 사용하여 모델을 학습시키는 방법입니다. 데이터의 구조나 패턴을 발견하는 것이 목표입니다.
비지도학습은 입력 데이터만 주어지고 정답 레이블이 없는 데이터를 학습하는 방법으로 모델은 데이터의 구조나 패턴을 발견하는데 중점을 둡니다.
비지도학습의 주요 작업은 다음과 같습니다:
- 군집화(Clustering): 비슷한 데이터 포인트들을 그룹으로 묶는 작업입니다. 예를 들어, 고객 데이터를 유사한 행동 패턴을 가진 그룹으로 나누는 것이 포함됩니다.
- 차원 축소(Dimensionality Reduction): 데이터의 차원을 줄여서 시각화하거나, 노이즈를 제거하고 데이터의 중요한 특성을 추출하는 작업입니다. 예를 들어, PCA(주성분 분석)나 t-SNE 등이 포함됩니다.
지도학습과 비지도학습의 공통점과 차이점
주요 공통점
- 데이터의 의미 파악 및 활용: 두 방법 모두 데이터를 사용하여 의미를 파악하고 모델을 학습시킵니다. 데이터의 형태와 구조에 따라 다양한 알고리즘을 적용합니다.
- 알고리즘 사용: 둘 다 다양한 알고리즘을 사용하여 문제를 해결합니다. 예를 들어, 지도학습에서는 회귀, 분류 알고리즘을 사용하고, 비지도학습에서는 군집화, 차원 축소 알고리즘을 사용합니다.
- 패턴 탐지: 지도학습과 비지도학습 모두 데이터 내의 패턴이나 규칙성을 찾는 데 중점을 둡니다. 지도학습은 라벨과의 관계를, 비지도학습은 데이터 자체의 구조를 탐지합니다.
주요 차이점
- 데이터 라벨: 지도학습은 라벨이 있는 데이터를 필요하고 평가 기준이 명확하지만, 비지도학습은 라벨이 없는 데이터를 사용합니다.
- 목표: 지도학습은 정확한 예측을 목표로 하고, 비지도학습은 데이터의 숨겨진 패턴이나 구조를 발견하는 것을 목표로 하며, 사후해석이 필요합니다.
- 응용 분야: 지도학습은 예측 모델이 필요한 경우에 주로 사용되고, 비지도학습은 데이터 분석 및 탐색에 주로 사용됩니다.
클러스터 분석(클러스트링)
클러스터링이란?
- 정의: 유사한 데이터를 같은 클러스터(집단)로 묶어 주는 작업. (우리말로 군집화라고도 함.) (데이터셋에서 유사한 특성을 가진 데이터 포인트들을 그룹으로 묶는 비지도 학습 방법).
- 목적: 데이터 내의 패턴이나 구조를 발견하고, 비슷한 특성을 가진 데이터들을 그룹화.
유사한 특성을 가진 데이터 포인트를 기준으로 묶인 각 그룹을 클러스터라고 하며, 클러스터 내의 데이터 포인트는 서로 유사하고, 다른 클러스터의 데이터 포인트와는 상이한 특성을 가집니다.
클러스터 분석 과정
- 데이터 로드 및 시각화 : 산점도를 사용하여 데이터 분포 확인
import seaborn as sns
import pandas as pd
edu_df = pd.read_csv('data/edu_data.csv', index_col=[0])
sns.set(style='darkgrid',
rc={'figure.figsize':(16, 9)})
# 시각화
sns.scatterplot(x='view_per_month', y='study_time', data=edu_df, s=100, palette='bright')
- 클러스터링 수행 : K-평균 군집화: 데이터 포인트들을 3개의 클러스터로 묶음.
from sklearn.cluster import KMeans
model = KMeans(n_clusters=3, random_state=123)
model.fit(edu_df)
# 클러스터 구분하기
edu_df['label'] = model.predict(edu_df)
# 클러스터 별로 속한 유저 수 확인하기
edu_df.groupby('label').count()
- 클러스터별 시각화
# 시각화
sns.scatterplot(x='view_per_month', y='study_time', data=edu_df, hue=edu_df['label'], s = 150, palette='bright')
클러스터링의 원리
기본 원리
- 유사한 데이터는 같은 클러스터로 묶는다.
- 유사하지 않은 데이터는 다른 클러스터로 묶는다.
‘유사한 데이터’가 정의되는 기준
- 거리 기준: '거리가 가까운 데이터가 유사하다'라는 기준을 사용.
- 거리가 가까운 데이터는 같은 클러스터로 묶는다.
- 거리가 먼 데이터는 다른 클러스터로 묶는다.
클러스터링의 시각적 예시
- 잘된 클러스터링: 같은 색으로 묶인 데이터 간의 거리가 가깝고, 다른 색으로 묶인 데이터 간의 거리가 멀다.
- 잘되지 않은 클러스터링: 같은 색 데이터 간의 거리가 가까운 부분과 먼 부분이 혼재되어 있고, 다른 색 데이터들도 유사하게 가까운 부분과 먼 부분이 함께 존재한다.
클러스터 분석을 적용하는 경우
클러스터링 분석은 데이터의 내재된 패턴과 구조를 이해하고 요약하며, 이를 기반으로 전략을 수립할 때 유용하게 사용됩니다. 다음은 클러스터링 분석의 주요 활용 시기를 설명합니다.
- 데이터 이해
- 군집 내, 간 패턴 파악: 클러스터링을 통해 데이터 내의 유사한 그룹을 식별하고, 각 그룹 내의 패턴과 그룹 간의 차이를 이해할 수 있습니다.
- 데이터 요약
- 시각화를 통한 이해: 클러스터링 결과를 시각화하여 복잡한 데이터를 요약하고, 쉽게 이해할 수 있는 형태로 제공할 수 있습니다. 이를 통해 데이터의 주요 특징을 빠르게 파악할 수 있습니다.
- 전략 수립
- 군집 특성별 전략: 각 클러스터의 특성을 기반으로 맞춤형 전략을 수립할 수 있습니다. 예를 들어, 고객 세분화를 통해 각 그룹에 맞는 마케팅 전략을 개발하거나, 이상치 탐지를 통해 비정상적인 데이터에 대한 조치를 취할 수 있습니다.
클러스트링과 분류의 차이점
- 레이블 존재 여부
- 클러스터링: 데이터에 미리 정답(레이블)이 없습니다. 알고리즘이 데이터를 그룹화하여 클러스터를 찾습니다.
- 분류: 데이터에 미리 정답(레이블)이 있습니다. 알고리즘이 이 레이블을 학습하여 새로운 데이터의 레이블을 예측합니다.
- 목적
- 클러스터링: 데이터의 자연스러운 구조를 발견하고, 그룹 간의 차이를 이해합니다.
- 분류: 새로운 데이터의 레이블을 정확하게 예측합니다.
- 결과 해석
- 클러스터링: 클러스터의 의미를 분석가가 해석해야 합니다.
- 분류: 예측된 레이블이 명확하게 정의되어 있습니다.
클러스터 분석을 사용할 때 주의할 것들
- 적절한 클러스터 개수 선택
- 문제: 클러스터 개수를 잘못 설정하면 분석 결과가 왜곡될 수 있음.
- 해결책: Elbow Method, Silhouette Score 등으로 최적의 클러스터 개수를 결정.
- 데이터 전처리
- 문제: 데이터의 스케일, 이상치 등이 클러스터링 결과에 큰 영향을 미침.
- 해결책: 데이터 표준화, 이상치 제거 등 적절한 전처리 수행.
- 적절한 알고리즘 선택
- 문제: 특정 클러스터링 알고리즘이 데이터 특성에 맞지 않을 수 있음.
- 해결책: 데이터의 분포와 특성에 맞는 알고리즘 선택(K-means, DBSCAN, Hierarchical Clustering 등).
- 결과의 해석 및 검증
- 문제: 클러스터링 결과를 잘못 해석하면 잘못된 결론에 이를 수 있음.
- 해결책: Dunn Index와 같은 지표를 사용하여 클러스터링의 유효성을 평가하고, 클러스터 특성을 명확히 이해 및 검증.
- 데이터의 노이즈와 이상치 처리
- 문제: 노이즈와 이상치가 클러스터링 결과를 왜곡할 수 있음.
- 해결책: 노이즈에 강한 알고리즘 사용(DBSCAN 등) 또는 사전 식별 후 제거.
추가적으로 클러스터링을 하는 경우, 이상치는 클러스터링 결과에 큰 영향을 미쳐 클러스터의 중심을 왜곡시킬 수 있어 이상치의 제거가 필수적으로 적용되어야 합니다.
그리고 각 변수의 단위가 다를 경우, 변수가 클러스터링 결과에 미치는 영향이 다를 수 있어 클러스터링을 하기 전에 데이터에 표준화를 해줄 필요가 있습니다.
이번 글에서는 지도학습과 비지도학습 / 클러스터링 / 클러스터링 분석 과정 / 클러스터링의 원리 / 클러스터링의 주의점이 포함된 내용을 정리했으며, 파이썬에서 데이터 분석을 하거나 프로그래밍을 하는 사람들에게 알아두면 유용한 개념들로 이번 기회를 통해 다른 분들도 정리하면 좋을 것 같습니다.
글 읽어주셔서 감사합니다.
출처 및 참고자료 : 코드잇 사이트 강의 '클러스터 분석' https://www.codeit.kr/topics/cluster-analysis
'프로그래밍 > 데이터 분석' 카테고리의 다른 글
[데이터 분석 심화 개념] 차원 축소 개념 정리 (0) | 2024.08.04 |
---|---|
[데이터 분석 심화 개념] 클러스터링 개념 정리 3️⃣ (다양한 클러스터링 모델) (0) | 2024.08.04 |
[데이터 분석 심화 개념] 클러스터링 개념 정리 2️⃣ (K-Means) (0) | 2024.08.04 |
[Tableau 개념 정리] Tableau 기초 개념 정리 2️⃣ (3) | 2024.07.15 |
[Tableau 개념 정리] Tableau 기초 개념 정리 1️⃣ (0) | 2024.07.14 |
데이터 분석을 공부하고 카페를 열심히 돌아다니는 이야기
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!