기존에는 직접 처리 로직을 모두 작성하지만, ML은 input/output을 통해 데이터를 학습하여 로직을 자체 구현
지도 학습 vs 비지도 학습
- 지도 학습 : 레이블(정답지)에 가까워 지도록 조정하는 학습
- 추론 -> 예측 -> 손실(차이) == 정답(레이블) ? -> 조정(학습)
- Classification (분류), Regression (회귀)
- 비지도 학습 : 결과가 없는 데이터를 이용해 주어진 데이터에 내재된 패턴/특성/구조를 찾아서 학습
- Clustering (군집)
- 강화 학습 : 에이전트의 동작이 적절한지에 대한 피드백을 반영하며 학습
- 준지도 학습 : 소량의 라벨 데이터와 대량의 비라벨 데이터를 함께 사용해 학습
- 자가지도 학습 : 데이터 자체에서 라벨을 생성해 대량의 데이터를 효율적으로 학습
- 언어모델 / 이미지 생성 모델과 같은 생성형 모델에서 주로 사용
머신러닝 워크플로우
- 문제 정의
- 데이터 수집
- 데이터 전처리
- EDA
- Feature Engineering
- 데이터 분할 (train/validation/test), 과적합 방지
- 모델 선택 및 학습
- 모델 평가 및 최적화
- 모델 배포
- 모니터링 및 유지보수
Scikit-Learn이 머신러닝 워크플로우에서 제공해주는 기능
- sample data set 제공 : load_iris(), load_digits()...
- 훈련/검증/평가 데이터 분할 : train_test_split()
- 데이터 누설 방지를 위해 비복원 데이터 추출 방식 사용
- *데이터 누설 : 검증/평가 데이터가 훈련데이터에 사용되는 경우 (실제 성능보다 과대평가 발생)
- 데이터 전처리(정규화, 표준화, 결측치 처리) : StandardScaler(), SimpleImputer()...
- 머신러닝 알고리즘 제공 : 선형 회귀, 의사결정 나무, 랜덤 포레스트.. 선택 후 fit()을 통해 학습
- 예측 및 평가 지표 제공 : predict()를 통해 예측 수행 후 테스트 데이터에 score()를 통해 모델 성능 평가
- 분류모델의 경우 정확도, 회귀 모델의 경우 R-Squared로 평가
- 하이퍼파라미터 튜닝(모델 최적화): GridSearchCV(), RandomizedSearchCV()
- 이외에도 Optuna(), Hyperopt() 등을 통해 베이지안 최적화 알고리즘 사용 가능
Scikit-Learn 주요 데이터 전처리 기법 & 간단 설명
- StandardScaler: 각 특성의 평균을 0, 표준편차를 1로 스케일링
- MinMaxScaler: 데이터 값을 최소 0, 최대 1 사이로 정규화
- RobustScaler: 중앙값과 IQR(사분위 범위)을 이용해 극단값의 영향을 줄여 정규화
- Normalizer: 개별 샘플의 벡터 크기를 1로 맞추어 정규화
- SimpleImputer: 결측값을 평균, 중앙값, 최빈값 등으로 간단하게 대체
- KNNImputer: K-최근접 이웃 값을 참고해 결측값을 채움
- IterativeImputer: 다른 특성을 이용해 반복적으로 결측값을 예측해 채움
- OneHotEncoder: 범주형 변수를 0과 1로 이루어진 열로 변환
- LabelEncoder: 범주형 변수(문자)를 순서가 있는 숫자 레이블로 변환
- PolynomialFeatures: 다항식 특성을 만들어 모델의 표현력을 높임
- PowerTransformer: 정규분포에 가깝게 변환해 이상치와 비대칭성을 감소
- QuantileTransformer: 데이터 분포를 분위수 변환을 통해 정규분포 또는 균등분포로 변환
좋은 모델을 만든다는 것은?
1. 좋은 모델이란?
- 예측값과 실제값의 오차가 작은 모델이 좋은 모델.
- 데이터가 충분히 많을 때, 오차가 완전히 0이 되는 것은 현실적으로 불가능.
2. 오차의 최소화
- 오차 : 실제값 - 예측값
- 우리의 목표는 오차를 0으로 만드는 것이 아니라, 가능한 한 최소로 줄이는 것.
- 실제값은 우리가 바꿀 수 없음 → 예측값을 조정하여 오차를 최소화.
3. 예측값의 구조
- 예측값 = wx + b
- x: 입력 데이터 (변경할 수 없음)
- w, b: 모델이 학습을 통해 조정하는 파라미터
4. 조정 가능한 요소
- 입력 데이터(x)는 고정되어 있으므로 w와 b 값을 조정
- 이 과정에서 목적함수(Objective Function)를 최소화(혹은 최대화)하는 것이 핵심
5. 목적함수와 손실 함수
- 손실 함수(Loss Function): 예측값과 실제값의 차이를 정량적으로 계산하여, 이 값을 최소화하는 것이 일반적
- 때때로 특성상 최대화가 필요한 목적함수도 존재 (예: 확률, 보상 등)
좋은 모델은 "오차를 최소화하는 과정"에서 만들어진다.
학습의 본질은 조정 가능한 파라미터를 최적화하는 것에 있다.