시작에 앞서
해당 내용은 '<파이썬 머신러닝 완벽 가이드> 권철민 지음. 위키북스' 를 토대로 작성되었습니다. 보다 자세한 내용은 해당 서적에 상세히 나와있으니 서적을 참고해 주시기 바랍니다.
Estimator 이해 및 fit( ), predict( ) 메서드
사이킷런은 ML 모델 학습을 위해 fit( ), 학습된 모델의 예측을 위해 predict( ) 메서드 제공.'
◆ 지도학습에서의 사이킷런 클래스(분류, 회귀, Estimator)
지도학습의 주요 두 축인 분류와 회귀의 다양한 알고리즘을 구현한 모든 사이킷런 클래스는 위의 두 메서드만을 이용해 간단하게 학습과 예측 결과를 반환한다.
- Classifier: 분류 알고리즘을 구현한 클래스
- Regressor: 회귀 알고리즘을 구현한 클래스
- Estimator = Classifier + Regressor
▶ 지도학습의 모든 알고리즘을 구현한 클래스를 통칭하여 Estimator 라고 지칭. (fit, predict 메서드를 내부에서 구현)
◆ 비지도학습에서의 사이킷런 클래스(fit, transform)
사이킷런에서 비지도학습인 차원 축소, 클러스터링, 피처 추출(Feature Extraction) 등을 구현한 클래스 역시 대부분 fit( )과 transform( )을 적용.
※ 비지도학습에서의 fit( )은 지도학습의 fit( ) 처럼 학습을 의미하는 것이 아니라 입력 데이터의 형태에 맞춰 데이터를 변환하기 위한 사전 구조를 맞추는 작업이다.
▶ fit( )으로 변환을 위한 사전 구조를 맞추면 이후 입력 데이터의 차원 변환, 클러스터링, 피처 추출 등의 실제 작업은 transform( )으로 수행
◆ fit+transform = fit_transform
fit_transform( )은 fit( )과 transform( )을 별도로 호출할 필요를 줄여주지만, 사용상의 주의 필요
- 훈련 데이터와 테스트 데이터 분리: fit_transform()을 훈련 데이터에 사용한 후, 테스트 데이터에는 동일한 변환을 적용하기 위해 fit()을 사용해서는 안 된다. 이는 데이터 누수(Data Leakage)를 초래할 수 있다. 훈련 데이터에는 fit_transform()을 사용하고, 테스트 데이터에는 transform()을 사용해야 한다
- 적용 범위: fit_transform()은 한 번에 fit과 transform을 수행하기 때문에, 특정 상황에서는 두 단계로 나눠서 처리하는 것이 더 적합할 수 있다. 예를 들어, 여러 데이터셋에 동일한 스케일링을 적용하려면 fit()을 한 번만 사용하고 각 데이터셋에 transform()을 사용하는 것이 좋다
- 적용 데이터: fit_transform()을 사용할 때, 변환할 데이터의 특성을 정확히 파악하고 있어야 한다. 데이터의 특성이 변하면 fit()을 다시 호출해야 할 수 있기 때문이다.
사이킷런의 주요 모듈
분류 | 모듈명 | 설명 |
예제 데이터 | sklearn.datasets | 사이킷런에 내장되어 예제로 제공하는 데이터 세트 |
피처 처리 | sklearn.preprocessing | 데이터 전처리에 필요한 다양한 가공 기능 제공 (문자열을 숫자 형 코드 값으로 인코딩, 정규화, 스케일링 등) |
sklearn.feature_selection | 알고리즘에 큰 영향을 미치는 피처를 우선순위대로 셀렉션 작업을 수행하는 다양한 기능 제공 | |
sklearn.feature_extraction | 텍스트 데이터나 이미지 데이터의 벡터화된 피처를 추출 (텍스트 데이터에서 Count Vectorizer나 Tf-idf Vectorizer 등을 생성하는 기능 제공) 텍스트 데이터의 피처 추출: sklearn.feature_extraction.text 이미지 데이터의 피처 추출: sklearn.feature_extraction.image |
|
피처 처리 & 차원 축소 |
sklearn.decomposition | 차원 축소와 관련한 알고리즘을 지원하는 모듈. PCA, NMF, Truncated SVD 등을 통해 차원 축소 기능 수행 |
데이터 분리. 검증 & 파라미터 튜닝 |
sklearn.model_selection | 교차 검증을 위한 학습용/테스트용 분리. 그리드 서치(Grid Search)로 최적 파라미터 추출 등의 API 제공 |
평가 | sklearn.metrics | 분류, 회귀, 클러스터링, 페어와이즈(Pairwise)에 대한 다양한 성능 측정 방법 제공 Accuracy, Precision, Recall, ROC-AUC, RMSE 등 제공 |
ML 알고리즘 | sklearn.ensemble | 앙상블 알고리즘 제공 랜덤 포레스트, 에이다 부스트, 그래디언트 부스팅 등 제공 |
sklearn.linear_model | 주로 선형 회귀, 릿지(Ridge), 라쏘(Lasso) 및 로지스틱 회귀 등 회귀 관련 알고리즘을 지원. GSD(Stochastic Gradient Descent) 관련 알고리즘도 제공 |
|
sklearn.naive_bayes | 나이브 베이즈 알고리즘 제공. 가우시안 NB, 다항분포 NB 등 | |
sklearn.neighbors | 최근접 이웃 알고리즘 제공. K-NN 등 | |
sklearn.svm | 서포트 벡터 머신 알고리즘 제공 | |
sklearn.tree | 의사 결정 트리 알고리즘 제공 | |
sklearn.cluster | 비지도 클러스터링 알고리즘 제공 (K-평균, 계층형, DBSCAN 등) |
|
유틸리티 | sklearn.pipeline | 피처 처리 등의 변환과 ML 알고리즘 학습, 예측 등을 함께 묶어서 실행할 수 있는 유틸리티 제공 |
일반적으로 머신러닝을 구축하는 주요 프로세스는 피처의 가공, 변경, 추출을 수행하는 피처 처리(Feature processing), ML 알고리즘 학습/예측 수행, 모델 평가의 단계를 반복적으로 수행하는 것이다.
사이킷런 패키지는 머신러닝 모델을 구축하는 주요 프로세스를 지원하기 위해 매우 편리하고 유연하고 다양한 모델을 지원한다.
다음글
'[파이썬 Projects] > <파이썬 머신러닝>' 카테고리의 다른 글
[머신러닝] 사이킷런의 model_selection 모듈 (0) | 2024.06.07 |
---|---|
[머신러닝] 사이킷런에 내장된 예제 데이터 세트 (0) | 2024.05.30 |
[머신러닝] 사이킷런으로 시작하는 ML (0) | 2024.05.30 |
[머신러닝] 주요 패키지 (0) | 2024.05.25 |
[머신러닝] 머신러닝과 생태계 이해 (0) | 2024.05.17 |