핸즈온 머신러닝 정리 - 2장
업데이트:
머신러닝 프로젝트 처음부터 끝까지
- 큰 그림을 봅니다.
- 데이터를 구합니다.
- 데이터로부터 통찰을 얻기 위해 탐색하고 시각화합니다.
- 머신러닝 알고리즘을 위해 데이터를 준비합니다.
- 모델을 선택하고 훈련시킵니다.
- 모델을 상세하게 조정합니다.
- 솔루션을 제시합니다.
- 시스템을 론칭하고 모니터링하고 유지 보수합니다.
성능 측정 지표 선택
회귀 문제의 전형적인 성능 지표는 평균 제곱근 오차(RMSE)입니다. 이상치가 많은 경우 평균 절대 오차(MAE)를 고려해볼 수 있습니다.
RMSE 계산은 유클리디안 노름에 해당합니다(L2 노름). MAE 계산은 맨해튼 노름에 해당합니다(L1 노름).
데이터 스누핑
테스트 세트로 일반화 오차를 추정하여 매우 낙관적인 추정을 하고 기대한 성능이 나오지 않는 현상
머신러닝 알고리즘을 위한 데이터 준비
해당 작업은 함수를 만들어 자동화해야 하는 이유가 있습니다.
-
어떤 데이터셋에 대해서도 데이터 변환을 손쉽게 반복할 수 있습니다.
-
향후 프로젝트에 사용할 수 있는 변환 라이브러리를 점진적으로 구축하게 됩니다.
-
실제 시스템에서 알고리즘에 새 데이터를 주입하기 전에 변환시키는 데 이 함수를 사용할 수 있습니다.
-
여러 가지 데이터 변환을 쉽게 시도해볼 수 있고 어떤 조합이 가장 좋은지 확인하는 데 편리합니다.
데이터 정제
-
해당 구역을 제거합니다.
-
전체 특성을 삭제합니다.
-
어떤 값으로 채웁니다(0, 평균, 중간값 등). : from sklearn.impute import SimpleImputer
텍스트와 범주형 특성 다루기
범주형 텍스트를 숫자로 바꾸기 : pandas의 factorize()
카테고리별 이진 특성 만들기 : from sklearn.perprocessing import OneHotEncoder
위 2개를 한 번에 바꾸기 : from sklearn.perprocessing import CategoricalEncoder
특성 스케일링
머신러닝 알고리즘은 입력 숫자 특성들의 스케일이 많이 다르면 잘 작동하지 않습니다. 모든 특성의 범위를 같도록 만들어주는 방법으로 min-max 스케일링(정규화)와 표준화가 널리 사용됩니다.
- min-max 스케일링 : 데이터에서 최솟값을 뺀 후 최댓값과 최솟값의 차이로 나눈다(0~1 범위).
- 표준화 : 데이터에서 평균을 빼고(평균이 0) 표준편차로 나누어 분산이 1이 되도록 합니다.
min-max 스케일링과 달리 표준화는 범위의 상한과 하한이 없어 어떤 알고리즘에서는 문제가 될 수 있습니다.
변환 파이프라인
Pipeline은 연속된 단계를 나타내는 이름/추정기 쌍의 목록을 입력으로 받습니다. 마지막 단계에는 변환기와 추정기를 모두 사용할 수 있고 그 외에는 모두 변환기여야 합니다(즉, fit_transform() 메서드를 가지고 있어야 합니다).
교차 검증을 사용한 평가
사이킷런의 교차 검증 기능은 scoring 매개변수에 낮을수록 좋은 비용 함수가 아니라 클수록 좋은 효용 함수를 기대합니다. 그래서 MSE의 반댓값을 계산하는 neg_mean_squared_error을 사용합니다.
댓글남기기