본문 바로가기
(책) 머신러닝, 딥러닝/핸즈온 머신러닝

CHAPTER 2 머신러닝 프로젝트 처음부터 끝까지

by 탶선 2020. 3. 26.
반응형

 

머신러닝 프로젝트 진행 주요 단계

  1. 큰 그림 보기
    • 모델의 목적 파악하기(분류, 회귀 등)
    • 솔루션 파악하기(문제 해결 방법에 대한 정보 수집, 참고 성능으로 사용)
    • 성능 측정 지표 선택
      • 평균 제곱근 오차(Root Mean Square Error) - 회귀 문제의 전형적 성능 지표
        • $RMSE(X,h) = \sqrt({1 \over m}\sum^m_{i=1} (h(x^{(i)})-y^{(i)})^2) $
      • 평균 절대 오차(Mean Absolute Error) - 이상치로 보이는 구역이 많을 경우 사용
        • $MAE(X,h) = {1 \over m} \sum^m_{i=1} | h(x^{(i)}) - y^{(i)}| $
      • RMSE, MAE 모두 예측값의 벡터, 타깃값의 벡터 사이의 거리를 재는 방법
  2. 데이터 구하기
    • 일반적으로 다룰 데이터는 관계형 데이터베이스(테이블, 문서, 파일)
    • 데이터에 접근하기 위해 보안 자격 및 접근 권한 필요
    • 데이터 구조 확인
    • 테스트 세트 만들기
      • 데이터 스누핑 편향 회피
  3. 데이터로부터 통찰을 얻기 위한 탐색, 시각화 
    • 테스트 세트를 떼어놓았는지 확인, 훈련 세트에 대해서만 타색
    • 훈련 세트가 매우 클 경우 조작의 편의성을 위해 탐색을 위한 세트를 별도 샘플링
    • plot() 사용하여 산점도로 데이터 시각화 / alpha옵션을 0.1로 주어 데이터 포인트의 밀집지역 상세보기
    • 상관관계 조사
      • 표준 상관계수(standard correlation coefficient)
        • corr() 를 이용
      • 숫자형 특성 사이에 산점도를 그려 확인
        • pandas.plotting import scatter_matrix 이용
  4. 머신러닝 알고리즘을 위한 데이터 준비
    • 자동화 하는 이유
      • 어떤 데이터셋에 대해서도 데이터 변환을 쉽게 반복 가능하도록
      • 향후 프로젝트에 사용시 변환 라이브러리 점전적 구축이 가능하도록
      • 실제 시스템 알고리즘에 새 데이터 주입 전 변환시 사용 가능도록
      • 여러 데이터 변환 시도 가능, 어떤 조합이 가장 좋은지 확인 가능
    • 데이터 정제
      • 특성에 값이 없는 경우
        • 해당 구역 제거 - i.e. pandas.DataFrame.dropna() - column내 NaN값 삭제
        • 전체 특성 삭제 - i.e. pandas.DataFrame.drop() - column, row 전체 삭제
        • 가상의 값으로 채우기(0, 평균, 중간값 등) - i.e. pandas.DataFrame.fillna() - NaN을 특정 값으로 대체
    • 특성 스케일링(feature scaling)
      • 머신러닝 알고리즘은 입력 숫자 특성들의 스케일이 많이 다르면 잘 작동하지 않음
        • 모든 특성의 범위를 같도록 만들어주는 방법
          • min-max 스케일링(정규화(normalization) 라고 불림)
            • 0~1 범위에 들도록 값을 이동, 스케일 조정 
            • 0~1 사이의 범위를 원치 않을경우 feature_range매개변수로 범위 변경 가능
            • i.e. 사이킷런 - MinMaxScaler 변환기
          • 표준화(standardization)
            • 평균을 뺀 후 표준편차로 나누어 결과 분포의 분산이 1이 되도록
            • min-max 스케일링과 달리 범위의 상한,하한이 없음(문제 발생 가능성)
            • 이상치에 영향을 덜 받는 장점
            • i.e. 사이킷런 - StandardScaler 변환기
  5. 모델 선택 및 훈련
    • 교차 검증을 사용한 평가
      • K-fold cross-validation 
        • 훈련 세트를 fold라 불리는 K개의 서브셋으로 무작위 분할하여 훈련 및 평가
  6. 모델 상세 조정
    • 그리드 탐색
      • 관심 있는 매개변수들을 대상으로 가능한 모든 조합을 시도하여 최적의 매개변수를 찾는 방법
      • i.e. 사이킷런 - GridSearchCV
        • 탐색하고자 하는 하이퍼파라미터 조합에 대한 검증을 사용해 평가
    • 랜덤 탐색
      • 가능한 모든 조합 시도 대신 각 반복마다 하이퍼파라미터에 임의의 수를 대입, 지정한 횟수만큼 평가 
        • 랜덤 탐색을 1,000회 반복 실행시 하이퍼파라미터마다 각기 다른 1,000개의 값 탐색
        • 단순 반복 횟수 조절만으로 하이퍼파라미터 탐색에 사용되는 컴퓨팅 자원 제어 가능
        • i.e. 사이킷런 - RandomizedSearchCV
    • 앙상블(ensemble)
      • 여러 다른 모델을 모아서 하나의 모델을 만드는 것
  7. 솔루션 제시
  8. 시스템 론칭, 모니터링, 유지 보수




 

# 본 게시물은 "Hands_On Machine Learning with Scikit-Learn & TensorFlow" 를 읽고 작성하였습니다. #

 

반응형

'핸즈온 머신러닝' 카테고리의 다른 글

Chapter 5 서포트 벡터 머신(svm)  (0) 2020.09.18
Chapter4 모델 훈련  (0) 2020.09.17
Chapter3 분류  (0) 2020.04.11
CHAPTER 1 한눈에 보는 머신러닝  (0) 2020.03.25

댓글