반응형
머신러닝 프로젝트 진행 주요 단계
- 큰 그림 보기
- 모델의 목적 파악하기(분류, 회귀 등)
- 솔루션 파악하기(문제 해결 방법에 대한 정보 수집, 참고 성능으로 사용)
- 성능 측정 지표 선택
- 평균 제곱근 오차(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 모두 예측값의 벡터, 타깃값의 벡터 사이의 거리를 재는 방법
- 평균 제곱근 오차(Root Mean Square Error) - 회귀 문제의 전형적 성능 지표
- 데이터 구하기
- 일반적으로 다룰 데이터는 관계형 데이터베이스(테이블, 문서, 파일)
- 데이터에 접근하기 위해 보안 자격 및 접근 권한 필요
- 데이터 구조 확인
- 테스트 세트 만들기
- 데이터 스누핑 편향 회피
- 데이터로부터 통찰을 얻기 위한 탐색, 시각화
- 테스트 세트를 떼어놓았는지 확인, 훈련 세트에 대해서만 타색
- 훈련 세트가 매우 클 경우 조작의 편의성을 위해 탐색을 위한 세트를 별도 샘플링
- plot() 사용하여 산점도로 데이터 시각화 / alpha옵션을 0.1로 주어 데이터 포인트의 밀집지역 상세보기
- 상관관계 조사
- 표준 상관계수(standard correlation coefficient)
- corr() 를 이용
- 숫자형 특성 사이에 산점도를 그려 확인
- pandas.plotting import scatter_matrix 이용
- 표준 상관계수(standard correlation coefficient)
- 머신러닝 알고리즘을 위한 데이터 준비
- 자동화 하는 이유
- 어떤 데이터셋에 대해서도 데이터 변환을 쉽게 반복 가능하도록
- 향후 프로젝트에 사용시 변환 라이브러리 점전적 구축이 가능하도록
- 실제 시스템 알고리즘에 새 데이터 주입 전 변환시 사용 가능도록
- 여러 데이터 변환 시도 가능, 어떤 조합이 가장 좋은지 확인 가능
- 데이터 정제
- 특성에 값이 없는 경우
- 해당 구역 제거 - 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 변환기
- min-max 스케일링(정규화(normalization) 라고 불림)
- 모든 특성의 범위를 같도록 만들어주는 방법
- 머신러닝 알고리즘은 입력 숫자 특성들의 스케일이 많이 다르면 잘 작동하지 않음
- 자동화 하는 이유
- 모델 선택 및 훈련
- 교차 검증을 사용한 평가
- K-fold cross-validation
- 훈련 세트를 fold라 불리는 K개의 서브셋으로 무작위 분할하여 훈련 및 평가
- K-fold cross-validation
- 교차 검증을 사용한 평가
- 모델 상세 조정
- 그리드 탐색
- 관심 있는 매개변수들을 대상으로 가능한 모든 조합을 시도하여 최적의 매개변수를 찾는 방법
- i.e. 사이킷런 - GridSearchCV
- 탐색하고자 하는 하이퍼파라미터 조합에 대한 검증을 사용해 평가
- 랜덤 탐색
- 가능한 모든 조합 시도 대신 각 반복마다 하이퍼파라미터에 임의의 수를 대입, 지정한 횟수만큼 평가
- 랜덤 탐색을 1,000회 반복 실행시 하이퍼파라미터마다 각기 다른 1,000개의 값 탐색
- 단순 반복 횟수 조절만으로 하이퍼파라미터 탐색에 사용되는 컴퓨팅 자원 제어 가능
- i.e. 사이킷런 - RandomizedSearchCV
- 가능한 모든 조합 시도 대신 각 반복마다 하이퍼파라미터에 임의의 수를 대입, 지정한 횟수만큼 평가
- 앙상블(ensemble)
- 여러 다른 모델을 모아서 하나의 모델을 만드는 것
- 그리드 탐색
- 솔루션 제시
- 시스템 론칭, 모니터링, 유지 보수
# 본 게시물은 "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 |
댓글