카테고리 없음

📚 머신러닝: 분류(Classification)

기후공시생 2024. 11. 22. 14:16

1. 분류란.

1.1 분류의 정의

분류(Classification)는 머신러닝의 지도 학습(Supervised Learning)에 속하며, 소속 집단(Label)의 정보를 알고 있는 상태에서 새로운 데이터를 비슷한 집단으로 묶는 과정을 말합니다.

분류는 데이터를 다양한 카테고리(Class)로 나누는 문제를 해결하며, 이 문제는 실생활에서 매우 자주 나타납니다.

 

분류 문제의 예시:

  1. 스팸 메일 필터링: 이메일이 스팸인지 아닌지를 분류.
  2. 의료 진단: 환자가 특정 질병을 앓고 있는지 여부를 판별.
  3. 동물 이미지 분류: 고양이, 개, 새 등의 여러 클래스로 이미지 분류.
  4. 추천 시스템: 사용자의 성향에 따라 영화나 상품추천

1.2 분류와 회귀의 차이점

특징 분류 회귀
출력 값 이산적, 카테고리 데이터 연속적, 실수형 데이터
예제 이메일 스팸진단 , 암 진단 집값 예측, 주식 가격 예측
대표 알고리즘 로지스틱 회귀, SVM, 랜덤 포레스트 선형회귀, 다항 회귀, Lasso 회귀

 

1.3 분류의 종류

1) 이진 분류(Binary Classification)

데이터를 두 개의 클래스로 분류하는 작업입니다.

예:

  • 이메일: 스팸(1) 또는 정상 메일(0)
  • 질병 진단: 양성(1) 또는 음성(0)

주요 알고리즘:

  • 로지스틱 회귀(Logistic Regression)
  • 서포트 벡터 머신(SVM)
  • 신경망(Neural Networks)

2) 다중 클래스 분류(Multiclass Classification)

여러 클래스 중 하나로 데이터를 분류합니다.

예:

  • 동물 이미지를 고양이, 개, 새 등으로 분류.
  • 사진의 계절을 봄, 여름, 가을, 겨울로 분류.

주요 알고리즘:

  • 소프트맥스 회귀(Softmax Regression)
  • 결정 트리(Decision Tree)
  • 랜덤 포레스트(Random Forest)

3) 다중 레이블 분류(Multilabel Classification)

하나의 데이터가 여러 레이블에 동시에 속할 수 있습니다.

예:

  • 블로그 게시물에 여러 태그 추가 (e.g., "AI", "Machine Learning").
  • 영화에 여러 장르 할당 (e.g., "Action", "Thriller").

주요 접근 방식:

  • 각 레이블에 대해 이진 분류기 학습.
  • 신경망의 출력층을 다중 노드로 구성.

4) One-vs-All 접근법

각 클래스마다 하나의 이진 분류기를 생성하여 분류합니다.

예: 숫자 0~92️⃣ 로지스틱 회귀(Logistic Regression)

 


2️⃣ 로지스틱 회귀(Logistic Regression)

2.1 로지스틱 회귀란?

로지스틱 회귀는 이진 분류 문제를 해결하기 위해 설계된 지도 학습 알고리즘입니다.

선형 회귀와 구조적으로 유사하지만, 결과값을 0과 1 사이의 확률 값으로 변환하여 결과를 분류하는 데 초점이 맞춰져 있습니다.

 

주요 개념:

1. 시그모이드 함수(Sigmoid Function)

  • 결과값을 0과 1 사이로 제한하는 함수:
  • z=0일 때 확률은 0.5

 

2. 로짓 함수(Logit Function)

  • 확률값을 선형 회귀 형태로 변환:

 

3. 비용 함수(Cost Function)

  • 로지스틱 회귀에서는 로그 손실(Log Loss)을 사용:

4. 경사 하강법(Gradient Descent)

  • 비용 함수를 최소화하여 최적의 파라미터(θ)를 찾음.

 


3️⃣ 분류 모델의 성능 평가

3.1 혼동 행렬(Confusion Matrix)

혼동 행렬은 모델의 성능을 시각적으로 평가할 때 사용됩니다:

 

실제값 1 (Positive) 실제값 0 (Negative)

예측값 1 True Positive (TP) False Positive (FP)

예측값 0 False Negative (FN) True Negative (TN)

 

주요 성능 지표:

1. 정확도

2. 정밀도

3. 민감도

4. F1 score

3.2 ROC 곡선 및 AUC

  • ROC 곡선: 민감도와 특이도(1 - FP Rate)의 관계를 나타냄.
  • AUC (Area Under Curve): ROC 곡선 아래 면적으로 모델의 성능을 측정.

4️⃣ 로지스틱 회귀 구현

4.1 데이터 전처리

1. 결측값 처리

  • 결측값(NaN)을 평균값 등으로 대체.

2. 카테고리 데이터 인코딩

  • pandas.get_dummies()를 사용해 원핫 인코딩 수행.

3. 정규화(Normalization)

  • MinMaxScaler로 정규화.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)

4.2 모델 학습

  • scikit-learn의 LogisticRegression 사용.
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split

# 데이터셋 분리
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

# 로지스틱 회귀 모델 학습
logreg = LogisticRegression()
logreg.fit(X_train, y_train)

4.3 성능 평가

  • 모델 성능 평가를 위해 혼동 행렬과 정확도를 계산합니다.
from sklearn.metrics import confusion_matrix, accuracy_score

# 예측
y_pred = logreg.predict(X_test)

# 평가
conf_matrix = confusion_matrix(y_test, y_pred)
accuracy = accuracy_score(y_test, y_pred)

print(f"Confusion Matrix:\n{conf_matrix}")
print(f"Accuracy: {accuracy}")

5️⃣ 활용 사례

  1. 스팸 메일 필터링: 이메일을 스팸과 정상 메일로 분류.
  2. 의료 진단: 질병 유무를 예측.
  3. 이미지 분류: 고양이, 개, 새 등의 이미지를 분류.
  4. 추천 시스템: 사용자의 취향에 따라 콘텐츠 추천.
  5. 금융 리스크 관리: 대출 승인 여부를 분류.

결론

분류는 머신러닝에서 가장 중요한 문제 중 하나로, 다양한 데이터 유형과 응용 분야에서 활용됩니다.

특히 로지스틱 회귀는 단순하면서도 강력한 이진 분류 모델로, 초보자부터 전문가까지 폭넓게 사용됩니다.