머신러닝 활용 - 1회차

Data_Student·약 13시간 전
0

머신러닝

목록 보기
3/6

01. 데이터분석 프로세스

1. 데이터 수집

  • 데이터 분석가 : 이미 존재하는 데이터를 SQL 혹은 Python을 통해 추출하고 리포팅 혹은 머신러닝을 통한 예측을 담당

  • 데이터 엔지니어 : 데이터 를 적재하고 수집

  • 데이터 수집 방법

    • 방법 1 : CSV, EXCEL, JSON 등 파일 다운로드
    • 방법 2 : API를 이용한 데이터 수집
    • 방법 3 : Data Crawling
  • 탐색적 데이터 분석(EDA)

    • 데이터의 시각화, 기술통계 등의 방법을 통해 데이터를 이해하고 탐구하는 과정
    • 기술 통계를 통한 EDA 예시
      • describe(), info() 함수 등을 사용하여 확인
      • countplot, barplot, boxplot, histogram 등을 활용한 시각화

2. 데이터 전처리

  • 이상치(Outlier) : 보통 관측된 데이터 범위를 많이 벗어난 아주 작은 값 혹은 큰 값
    • ESD(Extreme Studentized Devation)
      • 데이터가 정규분포를 따른다고 가정, 평균에서 표준편차의 3배 이상 떨어진 값
      • 데이터가 크게 비대칭일 경우, 샘플 크기가 작을 경우 제한
    • IQR(Inter Quantile Range)
      • Boxplot을 통해 데이터의 사분위수를 포함하여 시각화 가능
      • 데이터를 min, Q1, Q2, Q3, max로 나누어서 구분
  • 결측치(Missing Value) : 존재하지 않는 데이터 (NaN, Null 등)
    • 수치형 데이터
      • 평균 값 대치 : 이상치에 취약
      • 중간값 대치 : 이상치가 많아 평균 값이 대표성이 없을 때 이용
    • 범주형 데이터
      • 최빈값 대치
    • 사용 함수
      • 간단한 삭제 & 대치
        • df.dropna(axis = 0) : 행 삭제
        • df.dropna(axis = 1) : 열 삭제
        • Boolean Indexing
        • df.fillna(value) : 특정 값으로 대치(평균, 중앙값, 최빈값)
      • 알고리즘을 이용
        • sklearn.impute.SimpleImputer : 평균, 중앙, 최빈값으로 대치
          • sklearn.impute.statistics : 대치한 값 확인 가능
        • sklearn.impute.IterativeImpiter : 다변량대치(회귀 대치)
        • sklearn.impute.KNNImputer : KNN 알고리즘을 이용한 대치
  • 범주형 데이터 전처리 - 인코딩(Encoding) ( 함수 및 사용방법은 다시 확인 )
    • 레이블 인코딩(Label Encoding) : 문자열 범주형 값을 고유한 숫자로 할당
    • 원-핫 인코딩(One-Hot Encoding) : 각 범주를 이진 형식으로 변환하는 기법
  • 수치형 데이터 전처리 - 스케일링(Scaling) ( 함수 및 사용방법은 다시 확인 )
    • 표준화(Standardization)
    • 정규화(Normalization)
    • 로버스트 스케일링(Robust Scaling)

3. 데이터 분리

  • 과적합은 머신러닝의 적

    • 과대적합(Overfitting) : 데이터를 너무 과도하게 학습한 나머지 해당 문제만 잘 맞추고 새로운 데이터를 제대로 예측 혹은 분류하지 못하는 현상
  • 예측 혹은 분류를 하기 위해서 모형을 복잡도를 설정

    • 모형이 지나치게 복잡할 때 : 과대 적합이 될 수 있음
    • 모형이 지나치게 단순할 때: 과소 적합이 될 수 있음
  • 과적합의 원인

    • 데이터 양이 충분하지 않음
    • 학습 반복이 많음(딥러닝의 경우)
    • 데이터 불균형(정상환자 - 암환자의 비율이 95: 5)
  • 과적합 해결 : 테스트 데이터의 분리

    • 학습 데이터(Train Data): 모델을 학습(fit)하기 위한 데이터 ( 70 or 80 )
    • 테스트 데이터(Test Data): 모델을 평가 하기 위한 데이터 ( 30 or 20 )
    • 함수 및 파라미터 설명 ( sklearn.model_selection.train_test_split )
      • test_size: 테스트 데이터 세트 크기
      • train_size: 학습 데이터 세트 크기
      • shuffle: 데이터 분리 시 섞기
      • random_state: 호출할 때마다 동일한 학습/테스트 데이터를 생성하기 위한 난수 값.
        수행할 때 마다 동일한 데이터 세트로 분리하기 위해 숫자를 고정 시켜야 함
      • 반환값(순서 중요)
        • X_train, X_test, y_train, y_test

4. 교차 검증과 GridSearch

  • 교차검증 : 데이터 셋을 여러 개의 하위 집합으로 나누더 돌아가면서 검증 데이터로 사용하는 방법

  • K-Fold Validation

    • 정의 : Train Data를 K개의 하위집합으로 나누어 모델을 학습시키고 모델을 최적하는 방법
    • K : 분할의 갯수
    • 특징 : 데이터가 부족할 경우 유용(반복 학습)
    • 함수
      • sklearn.model_selection.KFold
      • sklearn.model_selection.StrifiedKFold : 불균형한 레이블(Y)를 가지고 있을 때 사용
  • GridSearchV ( 하이퍼 파라미터 자동적용하기 )

    • 하이퍼 파라미터 : 모델을 구성하는 입력 값 중 사람이 임의적으로 바꿀 수 있는 입력값
    • 하이퍼 파라미터에 다양한 값을 넣고 실험할 수 있기 때문에 자동화해주는 데 GridSearch가 활용

0개의 댓글