[HML Study] Chapter 2

Smiling Sammy·2023년 1월 5일
0

핸즈온머신러닝2

목록 보기
2/6

오렐리앙 제롱, 『Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow』, 박해선, 한빛미디어-OREILLY(2020), p68-126.


Learned

  • 문제 정의

    1. 비즈니스의 정확한 목적 파악
    • 목적을 알면 문제 구성, 알고리즘 선택, 모델 평가 성능 지표 선택, 튜닝 공수에 대한 결정을 할 수 있음
    1. 현재 솔루션의 구성 상태 파악
    • 문제 해결 방법에 대한 정보와 참고 성능으로 사용 가능
  • 데이터 파이프라인

    • 데이터 처리 컴포넌트들이 연속되어 있는 것
    • 보통 컴포넌트들은 비동기적으로 동작
    • 각 컴포넌트는 완전히 독립적
  • 노름 (Norm)

    • l1l_1 노름: 절댓값의 합 계산
      • 맨하탄 노름 (Manhattan norm)
      • 1{||\cdot||}_1로 표기
    • l2l_2 노름: 제곱항을 합한 것의 RMSE 계산
      • 유클리디안 노름 (Euclidean norm)
      • 2{||\cdot||}_2로 표기
    • 이상치에 l1l_1 노름보다 더 민감함
  • 데이터 스누핑(Data snooping) 편향

    • 테스트 세트로 일반화 오차를 추정하면 매우 낙관적인 추정이 되어 시스템 론칭 시 기대한 성능이 나오지 않는 현상
  • 특성 스케일링 (Feature scaling)

    • min-max: 0~1 범위에 들도록 값을 이동하고 스케일을 조정
    • standardization (표준화): 분포의 분산이 1이 되도록 조정
      • 이상치에 영향을 덜 받음
  • scikit-learn ColumnTransformer

    • 범주형, 수치형 변수별 변환할 수 있도록 함

    • 튜플을 리스트로 받음 (이름, 변환기, 변환기가 적용될 열 이름 or 인덱스)

      • 이름의 경우 이중 밑줄(__)을 포함하면 안됨
    • 희소 행렬과 밀집 행렬이 섞여 있을 때, 밀집도와 임계값(sparse_threshold)를 기준으로 최종 행렬의 밀집 정도를 추정

      • 밀집도 < 임계값: 희소 행렬 반환
      • 밀집도 >= 임계값: 밀집 행렬 반환
    • 변환을 적용하고 싶지 않은 column은 passthrough에 지정

    • example

      
      from sklearn.compose import ColumnTransformer
      
      
      num_attribs = list(housing_num)
      cat_attribs = ["ocean_proximity"]
      
      full_pipeline = ColumnTransformer([
           ("num", num_pipeline, num_attribs),
           ("cat", OneHotEncoder(), cat_attribs),
      ])
  • 과소적합

    • 특성들이 좋은 예측을 할 만큼 충분한 정보가 없었거나 모델이 충분히 강력하지 않음
    • 해결 방안:
      • 더 강력한 모델 선택
      • 훈련 알고리즘에 더 좋은 특성을 주입
      • 모델 규제를 감소
  • scikit-learn 교차 검증 기능 score

    • 비용 함수가 아닌 효용 함수를 기대함
    • 오차의 경우 -부호를 붙여서 사용 (ex. np.sqrt(-scores))
  • 예측 오차 신뢰 구간 (confidence interval)

    • scipt.stats.t.interval()
    • 일반화 오차의 95% 신뢰구간을 계산할 수 있음
  • 모델 배포 이후 주의 사항

    • 일정 간격으로 시스템의 실시간 성능을 체크하고 성능이 떨어졌을 때 알람을 통지할 수 있는 모니터링 코드를 작성
      • 갑작스런 성능 감소뿐만 아니라, 긴 시간 동안 서서히 성능이 감소하는 상황도 감지
    • 데이터가 계속 변화하면 데이터셋을 업데이트하고 모델을 정기적으로 다시 훈련
    • 만든 모든 모델을 백업
profile
Data Scientist, Data Analyst

0개의 댓글