카테고리 없음

27. TIL) 머신러닝의 이해와 라이브러리 활용 심화 1차시 - 데이터분석 프로세스

kaseomi 2025. 1. 23. 19:20
728x90
1.1 데이터 수집

데이터 수집 프로세스

데이터 수집 단계는 예제 데이터나 기존 데이터를 활용하는 경우가 많음. 실제 데이터 수집은 데이터 엔지니어링 역량이 요구되며, 데이터 엔지니어가 개발 및 저장 설계를 담당함. 데이터 분석가는 SQL이나 Python을 통해 데이터를 추출하고 리포팅하거나 머신러닝 예측을 수행함.

  1. Data Source
    • OLTP Database: 온라인 뱅킹, 쇼핑, 주문 입력 등 다수의 트랜잭션 처리
    • Enterprise Applications: 고객 관계 데이터, 마케팅, 세일즈 등 회사 내 데이터
    • Third-Party: Google Analytics 등 외부 소스 데이터
    • Web/Log: 사용자 로그 데이터
  2. Data Lake: 원시 형태의 다양한 유형 데이터 저장소
  3. Data Warehouse: 구조화된 정제 데이터 저장소
  4. Data Marts: 금융, 마케팅, 영업 등 특정 조직 목적을 위한 가공 데이터
  5. BI/Analytics: 의사결정을 위한 데이터 수집 및 분석 프로세스

실제 데이터 수집 방법

  • 회사 내 데이터 존재 시 SQL이나 Python으로 데이터 마트 생성
  • 회사 내 데이터가 없는 경우 데이터 수집 필요
    • CSV, Excel 파일 다운로드
    • API를 이용한 데이터 수집
    • 데이터 크롤링

1.2 탐색적 데이터 분석(EDA)

탐색적 데이터 분석(EDA)

탐색적 데이터 분석(Exploratory Data Analysis, EDA)은 데이터의 시각화와 기술통계를 통해 데이터를 이해하고 탐구하는 과정임. 데이터의 특성과 적절한 모델링 정보를 얻을 수 있으며, 데이터 분석에 필수적인 과정임

기술통계를 통한 EDA 예시

  • tips.describe()를 사용해 데이터의 기초 통계를 확인할 수 있다
  • include='all' 옵션을 통해 범주형 데이터도 포함 가능하다

시각화를 이용한 EDA 예시

  1. countplot: 범주형 데이터의 각 카테고리별 빈도수를 나타냄
    • x축은 범주형 자료, y축은 빈도수를 표시
    • Ex) 제품 카테고리별 판매수
  2. barplot: 범주형 데이터별 평균값을 비교함
    • x축은 범주형 자료, y축은 연속형 자료
    • Ex) 연령대별 평균 소득
  3. boxplot: 데이터 분포와 이상치를 표현
    • x축과 y축에 각각 수치형 혹은 범주형 데이터를 사용
    • Ex) 그룹별 점수 분포 비교
  4. histogram: 연속형 데이터의 빈도를 나타냄
    • x축은 수치형 자료, y축은 빈도수
    • Ex) 고객 연령 분포
  5. scatterplot: 두 연속형 변수 간의 관계를 시각적으로 표현
    • x축과 y축 모두 수치형 자료를 사용
    • Ex) 키와 몸무게의 관계
  6. pairplot: 여러 변수 간의 관계를 한 번에 시각화
    • 대각선에는 각 변수의 히스토그램을 표시
    • Ex) 데이터셋의 모든 변수 비교

1.3 데이터 전처리

이상치(Outlier)

이상치는 관측된 데이터 범위에서 많이 벗어난 값임. 이를 탐지하고 처리하는 주요 기준은 다음과 같음

  1. ESD(Extreme Studentized Deviation)
    • 평균에서 표준편차의 3배 이상 떨어진 값으로 정의
    • 데이터가 정규분포를 따를 때 적합
    • 제한: 데이터가 비대칭적이거나 샘플 크기가 작을 때
  2. IQR(Inter Quartile Range)
    • 데이터의 사분위수를 기준으로 이상치를 정의
    • 상한 이상치: Q3 + 1.5*IQR
    • 하한 이상치: Q1 - 1.5*IQR
    • 제한: 비대칭 데이터나 작은 샘플 크기에 영향
  3. Box Plot
    • 사분위수를 시각화하여 데이터 분포와 이상치를 탐지
    • 상자-수염 그림이라고도 함

이상치는 주관적으로 판단되며, 처리 여부는 도메인과 비즈니스 맥락에 따라 다름. 이상 탐지는 사기 탐지, 사이버 보안 등에도 활용 가능함

결측치(Missing Value)

결측치는 데이터가 존재하지 않는 경우를 의미함. 주요 처리 방법은 다음과 같음

  1. 수치형 데이터
    • 평균값 대치: 대표적인 방법
    • 중앙값 대치: 이상치 영향이 적은 경우 적합
  2. 범주형 데이터
    • 최빈값 대치
  3. 함수 사용
    • df.dropna(axis=0): 행 삭제
    • df.dropna(axis=1): 열 삭제
    • df.fillna(value): 특정 값으로 대치
    • sklearn.impute.SimpleImputer, IterativeImputer, KNNImputer를 사용

결측치 대치는 단순히 평균값뿐 아니라 알고리즘을 활용할 수도 있음

범주형 데이터 전처리 - 인코딩(Encoding)

범주형 데이터를 숫자로 변환하는 과정임

  1. 레이블 인코딩(Label Encoding)
    • 문자열 범주형 값을 숫자로 변환
    • 단점: 순서 간 크기 의미를 잘못 해석할 가능성
    • 사용 함수: sklearn.preprocessing.LabelEncoder
  2. 원-핫 인코딩(One-Hot Encoding)
    • 각 범주를 독립적인 이진 형식으로 변환
    • 장점: 순서 문제를 방지, 명목형 데이터에 적합
    • 단점: 범주가 많으면 차원이 증가
    • 사용 함수: pd.get_dummies, sklearn.preprocessing.OneHotEncoder

수치형 데이터 전처리 - 스케일링(Scaling)

수치형 데이터의 단위 차이를 보정함

  1. 표준화(Standardization)
    • 평균을 빼고 표준편차로 나누어 데이터 분포를 조정
    • 장점: 이상치나 치우친 분포에 적합
    • 단점: 데이터의 최소-최대 범위는 고려하지 않음
    • 함수: sklearn.preprocessing.StandardScaler
  2. 정규화(Normalization)
    • 데이터를 0과 1 사이로 조정
    • 장점: 최대-최소 범위가 명확
    • 단점: 이상치에 민감
    • 함수: sklearn.preprocessing.MinMaxScaler
  3. 로버스트 스케일링(Robust Scaling)
    • 중앙값과 IQR을 사용하여 이상치의 영향을 줄임
    • 장점: 이상치에 강건함
    • 단점: 사용 빈도는 낮음
    • 함수: sklearn.preprocessing.RobustScaler

1.5 데이터 분리

과적합은 머신러닝의 적

  1. 배경설명
    과적합은 데이터를 너무 과도하게 학습하여 새로운 데이터를 제대로 예측하거나 분류하지 못하는 현상을 말함.
  2. 모형 복잡도와 과적합
    • 모형이 지나치게 복잡하면 과적합 발생 가능
    • 모형이 지나치게 단순하면 과소적합 발생 가능
    과적합의 원인
    • 모델 복잡도
    • 데이터 양 부족
    • 과도한 학습 반복(딥러닝)
    • 데이터 불균형(예: 정상환자와 암환자의 비율 95:5)
  3. 쉬운 예시
    고3 학생이 수능 대신 3월 모의고사만 열심히 공부한다면, 수능에서 좋은 점수를 받기 어렵겠죠. 이처럼 특정 데이터에만 집중하여 일반적인 문제를 해결하지 못하는 현상이 과적합임.

과적합 해결 - 테스트 데이터 분리

모의고사를 풀어보며 수능 준비를 하듯, 데이터도 학습 데이터와 테스트 데이터로 분리하여 모델을 학습하고 평가함.

  • 학습 데이터(Train Data): 모델을 학습(fit)하기 위한 데이터
  • 테스트 데이터(Test Data): 모델을 평가하기 위한 데이터

데이터 분리 함수 및 파라미터

  • sklearn.model_selection.train_test_split
    • 파라미터
      • test_size: 테스트 데이터 세트 크기
      • train_size: 학습 데이터 세트 크기
      • shuffle: 데이터 분리 시 섞기
      • random_state: 동일한 학습/테스트 데이터 분리를 위해 난수 값 고정
    • 반환 값(순서 중요)
      • X_train, X_test, y_train, y_test

1.6 (실습) 데이터 전체 프로세스 적용

  1. 데이터 로드 & 분리
    • 데이터 로드 후 train/test 데이터로 분리
  2. 탐색적 데이터 분석(EDA)
    • 데이터 분포 확인
    • 이상치 확인
  3. 데이터 전처리
    • 결측치 처리
      • 수치형: Age
      • 범주형: Embarked
      • 삭제: Cabin, Name
    • 전처리
      • 수치형: Age, Fare, Sibsp + Parch
      • 범주형:
        • 레이블 인코딩: Pclass, Sex
        • 원-핫 인코딩: Embarked
  4. 모델 수립
  5. 평가

1.7 교차 검증과 GridSearch

교차 검증(Cross Validation)

  • 교차 검증(Cross Validation)**은 데이터를 여러 개의 하위 집합으로 나누어 모델을 평가하는 방법으로, 과적합을 피할 수 있음. 고정된 테스트 데이터에 의존하지 않고 여러 번의 학습과 평가를 통해 모델을 검증함.
  • K-Fold Validation
    • Train Data를 K개의 하위 집합으로 나누어 학습하고 최적화하는 방법
    • K는 데이터 분할 횟수이며, 각 분할에서 검증용 데이터를 사용하고 나머지 데이터로 학습
    • 데이터가 부족할 때 유용하며 반복 학습을 통해 모델의 성능을 향상시킬 수 있음
    • 함수: sklearn.model_selection.KFold, sklearn.model_selection.StratifiedKFold(불균형한 레이블을 다룰 때 사용)

하이퍼 파라미터 자동적용하기 - GridSearch

  • 하이퍼 파라미터(Hyper Parameter)**는 모델의 입력 값 중 사람이 설정할 수 있는 값임. 여러 값을 시도하여 최적의 모델을 찾을 수 있음. GridSearch는 다양한 하이퍼 파라미터 값을 자동으로 실험하여 최적의 조합을 찾는 방법.

데이터 분석 프로세스 정리

데이터 분석 프로세스 정리