본문 바로가기

카테고리 없음

Machine Learning 개요 및 scikit-learn

https://www.istockphoto.com/kr/%EC%9D%B4%EB%AF%B8%EC%A7%80/machine-learning

 

기존에는 직접 처리 로직을 모두 작성하지만, ML은 input/output을 통해 데이터를 학습하여 로직을 자체 구현

지도 학습 vs 비지도 학습

  • 지도 학습 : 레이블(정답지)에 가까워 지도록 조정하는 학습
    • 추론 -> 예측 -> 손실(차이) == 정답(레이블) ? -> 조정(학습)
    • Classification (분류), Regression (회귀)
  • 비지도 학습 : 결과가 없는 데이터를 이용해 주어진 데이터에 내재된 패턴/특성/구조를 찾아서 학습
    • Clustering (군집)
  • 강화 학습 : 에이전트의 동작이 적절한지에 대한 피드백을 반영하며 학습
  • 준지도 학습 : 소량의 라벨 데이터와 대량의 비라벨 데이터를 함께 사용해 학습
  • 자가지도 학습 : 데이터 자체에서 라벨을 생성해 대량의 데이터를 효율적으로 학습
    • 언어모델 / 이미지 생성 모델과 같은 생성형 모델에서 주로 사용

머신러닝 워크플로우

  1. 문제 정의
  2. 데이터 수집
  3. 데이터 전처리
  4. EDA
  5. Feature Engineering
  6. 데이터 분할 (train/validation/test), 과적합 방지
  7. 모델 선택 및 학습
  8. 모델 평가 및 최적화
  9. 모델 배포
  10. 모니터링 및 유지보수

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)는 고정되어 있으므로 wb 값을 조정
  • 이 과정에서 목적함수(Objective Function)를 최소화(혹은 최대화)하는 것이 핵심

5. 목적함수와 손실 함수

  • 손실 함수(Loss Function): 예측값과 실제값의 차이를 정량적으로 계산하여, 이 값을 최소화하는 것이 일반적
  • 때때로 특성상 최대화가 필요한 목적함수도 존재 (예: 확률, 보상 등)

좋은 모델은 "오차를 최소화하는 과정"에서 만들어진다.
학습의 본질은 조정 가능한 파라미터를 최적화하는 것에 있다.