📚 머신러닝: 분류(Classification)
1. 분류란.
1.1 분류의 정의
분류(Classification)는 머신러닝의 지도 학습(Supervised Learning)에 속하며, 소속 집단(Label)의 정보를 알고 있는 상태에서 새로운 데이터를 비슷한 집단으로 묶는 과정을 말합니다.
분류는 데이터를 다양한 카테고리(Class)로 나누는 문제를 해결하며, 이 문제는 실생활에서 매우 자주 나타납니다.
분류 문제의 예시:
- 스팸 메일 필터링: 이메일이 스팸인지 아닌지를 분류.
- 의료 진단: 환자가 특정 질병을 앓고 있는지 여부를 판별.
- 동물 이미지 분류: 고양이, 개, 새 등의 여러 클래스로 이미지 분류.
- 추천 시스템: 사용자의 성향에 따라 영화나 상품추천
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️⃣ 활용 사례
- 스팸 메일 필터링: 이메일을 스팸과 정상 메일로 분류.
- 의료 진단: 질병 유무를 예측.
- 이미지 분류: 고양이, 개, 새 등의 이미지를 분류.
- 추천 시스템: 사용자의 취향에 따라 콘텐츠 추천.
- 금융 리스크 관리: 대출 승인 여부를 분류.
결론
분류는 머신러닝에서 가장 중요한 문제 중 하나로, 다양한 데이터 유형과 응용 분야에서 활용됩니다.
특히 로지스틱 회귀는 단순하면서도 강력한 이진 분류 모델로, 초보자부터 전문가까지 폭넓게 사용됩니다.