Scikit-Learn 모델 분류 및 개념 정리

2025. 4. 3. 13:29·딥러닝 (Deep Learning)/[03] - 모델
728x90
반응형

개요

Scikit-Learn은 수많은 머신러닝 알고리즘을 제공하는 Python 기반 대표 라이브러리입니다.
여기서 제공하는 모델들은 기능과 사용 목적에 따라 5가지 유형으로 나눌 수 있고, 이 각각은 sklearn-onnx에서도 ONNX로 변환 가능한 구조의 기준이 됩니다.

이 글에서는 각 타입의 개념, 주요 모델, 변환 특징, ONNX 사용 시 고려 사항까지 정리해 보겠습니다.


1. Classifier (분류기)

개념
입력 데이터를 미리 정의된 클래스(Label) 중 하나로 분류하는 지도 학습 모델

주요 특징

  • 출력값이 이산형 (discrete) 클래스 값 (예: [0, 1], ['cat', 'dog'])
  • fit(X, y)로 학습 → predict(X)로 예측
  • 확률 예측 가능: predict_proba(X)

대표 알고리즘

  • 로지스틱 회귀 (LogisticRegression): 이진 분류
  • 랜덤 포레스트 (RandomForestClassifier): 앙상블 기반 분류기
  • 서포트 벡터 머신 (SVC)
  • K-최근접 이웃 (KNeighborsClassifier)
  • 신경망 분류기 (MLPClassifier)

내부적으로는?

  • 대부분의 classifier는 손실 함수 (loss function)를 최소화하는 방식으로 학습
  • cross-entropy, hinge loss 등에 사용
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)

2. Regressor (회귀기)

개념
입력 데이터로부터 연속적인 수치 값을 예측하는 지도 학습 모델

주요 특징

  • 출력값이 실수형 (float)
  • 예: 가격, 점수, 확률, 거리 등
  • 평가 지표: R², MSE, MAE

대표 알고리즘

  • 선형 회귀 (LinearRegression)
  • 릿지 회귀 (Ridge), 라쏘 회귀 (Lasso)
  • 서포트 벡터 회귀 (SVR)
  • 랜덤 포레스트 회귀기 (RandomForestRegressor)

내부적으로는?

  • 손실 함수로 보통 Mean Squared Error (MSE) 또는 Mean Absolute Error (MAE)를 사용
  • 확률 분포 기반 회귀(BayesianRidge)도 존재

3. Clusterer (클러스터링 모델)

개념
정답(label) 없이 데이터를 그룹화(Clustering) 하는 비지도 학습 모델

주요 특징

  • 출력값은 클러스터 번호 (예: [0, 1, 2])
  • 정답 레이블이 없어도 데이터를 분류
  • 군집화 성능 평가는 Silhouette Score, DB Index 등

대표 알고리즘

  • KMeans
  • DBSCAN
  • MeanShift
  • Agglomerative Clustering

내부적으로는?

  • 거리 기반 (Euclidean, Manhattan) 또는 밀도 기반
  • 초기 중심점 설정, 군집 수 결정이 성능에 영향
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
labels = kmeans.labels_

4. Transformer (변환기 / 전처리기)

개념
입력 데이터를 변환하거나 축소, 인코딩, 정규화 등을 수행하는 전처리기

주요 특징

  • fit(X) 또는 fit(X, y) 후 transform(X)을 호출
  • 때로는 fit_transform(X) 한 번에 사용

대표 알고리즘

  • 스케일링: StandardScaler, MinMaxScaler
  • 차원 축소: PCA, TruncatedSVD
  • 범주형 처리: OneHotEncoder, LabelEncoder
  • 특징 선택: SelectKBest, VarianceThreshold

내부적으로는?

  • 보통 입력 X를 수학적 변환을 통해 새로운 X'로 바꾸는 역할
  • 출력은 입력과 같은 모양이거나 축소된 형태
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

5. Pipeline & Meta-Estimator (파이프라인, 메타모델)

개념

여러 단계를 하나의 흐름(Pipeline)으로 연결하거나,여러 모델을 결합하는 앙상블 구조(Meta) 모델

주요 특징

  • 전처리 → 학습 → 예측을 하나로 묶을 수 있음
  • fit(), predict()는 최종 예측기만 적용됨

대표 구조

  • Pipeline: 전처리 + 모델 하나로 묶기
  • VotingClassifier, StackingClassifier: 여러 분류기 결합
  • GridSearchCV, RandomizedSearchCV: 하이퍼파라미터 튜닝
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = Pipeline([
    ("scaler", StandardScaler()),
    ("clf", LogisticRegression())
])

pipe.fit(X_train, y_train)

6. 변환 시 sklearn-onnx에서의 고려사항

모델 변환 가능 여부 특이점
Classifier ✅ 대부분 가능 predict_proba 지원 여부 주의
Regressor ✅ 대부분 가능 연속 출력 예측 가능
Clusterer ✅ 대부분 가능 fit() 후 labels_ 필요
Transformer ✅ 대부분 가능 fit_transform()으로 테스트
Pipeline ✅ 가능 (모든 구성 요소가 지원될 경우) 내부 구성요소 모두 지원되는지 확인 필수

 

이상으로 Scikit-Learn 에 대한 간단한 개념을 소개했습니다.

다음에는 각각의 카테고리별 모델을 onnx 로 변환하는 코드를 소개하겠습니다.

 

감사합니다.

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'딥러닝 (Deep Learning) > [03] - 모델' 카테고리의 다른 글

Embedding과 Hidden State 완전 정복 -벡터로 단어와 기억을 표현하는 방법  (0) 2025.04.09
Sklearn-onnx 모델을 onnx 변환 방법 (with 성능 비교)  (0) 2025.04.03
Maskformer  (0) 2024.11.27
U-Net3++  (0) 2024.11.22
DeepLab v1 아키텍쳐 분석  (1) 2024.11.20
'딥러닝 (Deep Learning)/[03] - 모델' 카테고리의 다른 글
  • Embedding과 Hidden State 완전 정복 -벡터로 단어와 기억을 표현하는 방법
  • Sklearn-onnx 모델을 onnx 변환 방법 (with 성능 비교)
  • Maskformer
  • U-Net3++
AI-BT
AI-BT
인공지능 (AI)과 블록체인에 관심있는 블로그
  • AI-BT
    AI-BLACK-TIGER
    AI-BT
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • 딥러닝 (Deep Learning) (81)
        • [01] - 딥러닝 이란? (5)
        • [02] - 데이터 (4)
        • [03] - 모델 (17)
        • [04] - 학습 및 최적화 (14)
        • [05] - 논문 리뷰 (17)
        • [06] - 평가 및 결과 분석 (4)
        • [07] - Serving (6)
        • [08] - 프로젝트 (14)
      • 머신러닝 & 딥러닝 개념 (0)
        • 머신러닝 (0)
        • 딥러닝 (0)
      • Quant 투자 (12)
        • 경제 (9)
        • 퀀트 알고리즘 & 전략 개요 (3)
      • 딥러닝 Math (4)
      • AI Naver boost camp (22)
        • 회고 (19)
        • CV 프로젝트 가이드 (3)
      • Python (1)
      • 개발 및 IT 용어 (6)
        • IT 용어 (2)
        • VS Code (1)
      • 코인 정보 (7)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
AI-BT
Scikit-Learn 모델 분류 및 개념 정리
상단으로

티스토리툴바