WIDA/DACON 분류-회귀

[DACON/최다예] 분류 모델 뜯어보기, 분류모델 평가방식

다예뻐 2023. 3. 30. 23:55

KNN 알고리즘 구현하기

# 필요한 패키지 import
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 데이터 로드
train_data = pd.read_csv("C:/Users/allye/Desktop/DSOB/WIDA Dacon/DCSTree/train.csv")

# type과 나머지 데이터들을 분리해줌
X = train_data.iloc[:, 2:]
y = train_data.iloc[:, 1]

# 데이터셋 분할 (학습용 데이터와 검증용 데이터)
# training과 test의 비율은 0.3
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# KNN 모델 생성
k = 3             # k 값 설정
model = KNeighborsClassifier(n_neighbors=k)

# 모델 학습
model.fit(X_train, y_train)

# 검증용 데이터 예측
y_pred = model.predict(X_test)

# 정확도 계산
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
Accuracy: 0.7735924530817694

KNN의 하이퍼파라미터 분석

하이퍼 파라미터 : 머신러닝에서 어떠한 임의의 모델을 학습시킬 때, 사람이 직접 설정해야하는 변수

  1. Distance(거리)

거리에 따라 새로 들어올 데이터의 분류가 달라짐

  • Euclidean Distance (유클리디안 거리)
    • 일반적으로 가장 많이 사용
    • 피타고라스 정리, n 차원에서의 두 점 사이의 거리를 통해 계산
    • But, 차원이 높아질 수록 정확도가 떨어짐

  • Manhatten Distance (맨허튼 거리)
    • 두 번째로 많이 쓰이는 거리 계산
    • 제한된 조건 하에서 정해진 루트를 통해 도달할 수 있는 거리

이 외에도 표준화 거리, 마할라노비스 거리, 체비셰프 거리, 민콥스키 거리, 캔버라 거리 등이 존재

  1. K

KNN 알고리즘에서 가장 중요한 파라미터

K값을 어떻게 설정하느냐에 따라 결과가 달라짐

K = 이웃의 수

  • K 값이 작을수
  • 장점 
    • 노이즈에 대한 영향력이 줄어듦
    • 결정 경계가 부드러워 짐
    • train set에서의 정확도가 높음
    단점
    • 모델이 복잡해질 수 있음
    • test set에서 에러가 높고 정확도가 낮아짐 → 과적합 (Overfitting)
  • K 값이 클수록
  • 장점 
    • 모델이 덜 복잡함
    단점
    • test set에 대한 정확도가 낮음 → 과소적합 (Inderfitting)

이웃의 수를 설정할 때는 **교차 검증(Cross-validation)**을 사용하여 최적의 k값을 찾는 것이 좋습니다.


분류 모델의 성능 평가 방법(지표)

  1. logloss (Logarithmic Loss)

모델이 예측한 확률과 실제 클래스 레이블 간의 차이를 직접적으로 측정

 

💡 LogLoss = -1/N * Σ(yi*log(pi) + (1-yi)log(1-pi))

 

yi : i번째 샘플의 실제 클래스 레이블

pi : 모델이 예측한 i번째 샘플이 클래스 1에 속할 확률

N : 전체 샘플 수

  • 예측 확률이 실제 레이블과 일치할수록 : 최소화
  • 예측 확률이 실제 레이블과 다를수록 : 최대화
  • 0과 1 사이의 값
  • 값이 작을수록 모델의 예측이 더 좋음
  1. Recall (재현율)

이진 분류 모델에서 모델이 참으로 예측한 샘플 중 실제로 참인 샘플의 비율을 나타내는 지표

모델이 모든 양성 샘플을 식별할 수 있는 능력을 측정하는 지표

 

💡 TP / (TP + FN)

 

TP : 모델이 양성으로 예측하고 실제로 양성인 샘플의 수

FN : 모델이 음성으로 예측했지만 실제로는 양성인 샘플의 수

양성인 샘플을 찾는 것이 중요한 경우에 매우 유용한 지표

ex) 암 진단 모델

 

 

출처 :

https://needjarvis.tistory.com/715

https://leonard92.tistory.com/12

https://hleecaster.com/ml-accuracy-recall-precision-f1/