728x90
Overview
  • 성인 인구의 수입 분석 : 정형 데이터 분석
  • 학습 목표 : 차원 축소 / 스케일링 / 이상치, 범주형, 결측치 처리
  • 본 모델에 들어가기까지의 데이터 전처리(?)

Overview

  • 데이터 사이언스로 돈을 버는 법 : 흥미, 관심사 > 조회수를 높일 만한 결과 도출하기

  • 문제점 : 생각만큼 데이터 품질이 좋지 않다

    • Kaggle의 경우 매우 정제가 잘 된 편
    • 실제로는 데이터 '만' 많은 경우가 많음 : 쓸모가 없거나, 품질이 좋지 않거나
  • 데이터 분석의 약 70% 가량이 전처리

  • 왜?

    • 데이터 수집/처리기가 불안정하거나
    • 데이터의 수집, 가공, 저장 비용
    • 데이터 형태가 너무 많아짐(시계열, 음성, 영상 등등...)
    • 수집된 데이터와 컴퓨터로 분석 가능한 형태 사이의 간극 존재
  • Data Science

    • 데이터의 수집, 가공, 서비스 적용, 다시 수집, ...
    • EDA 전에 전처리가 우선되어야 함 : EDA시 잘못된 데이터로 인한 오해가 있을 수 있기 때문

Data

  • 데이터 : 정형 vs 비정형 / 수치형 vs 범주형

  • 정형 데이터 : Table 형태로 존재 (주로 SQL로 처리)

  • 비정형 데이터 : 이미지, text 등등

  • 수치형 데이터 : 양적 정보

  • 범주형 데이터 : Categorical data

  • 데이터 사이언티스트의 업무

    • 내가 다룰 데이터가 어떤 구조로 이루어지는가?
    • 데이터 변형 시 어떤 변화가 이루어지는가?
    • 이 데이터가 내가 원하는 목적과 얼마나 부합하는가?
  • 데이터 처리 시의 문제

    • 용량은 작은데 불러올때 메모리 사용량이 어마어마한 이유는?
    • 실제 데이터는 0, 1꼴의 작은 값이지만, 실제 계산 시에는 Int64/Float64형태로 불러옴, 이로 인해 차지하는 메모리 용량이 실제 값보다 더 커짐

Data Preprocessing

  • 데이터 전처리

    • missing value : 어떻게 해서 생기게 되었는지?버려도 되는 값인지?
    • outlier : 분포를 크게 벗어난 값
    • dependent / independet value : kaggle의 경우 target이 정해져 있음 - 현업의 경우 어떤 값을 target으로 할지 직접 정해주어야 함
    • train / test split
    • scaling
  • missing vlaue : 존재하지 않는 값 / 시스템 오류로 인한 비정상 값

    • '', '#N/A', 'NaN', 'NULL' 등
    • dataset의 ? : missing value인가? 무직인가? ...?
    • 다수 column에 ?가 있다면 서로 간의 상관관계가 있을 수 있을까?
    • 결측치의 처리 : 삭제 or 대치
      • 삭제 : 대부분이(ex. 80%) missing인 경우 / 기본 dataset이 많아서 몇 개 빠져도 상관 없는 경우
      • 대치 : 다른 sample 분포로 예측 가능한 경우 / 의미적 추론이 가능한 경우
  • Outlier : 동 feature 샘플들과 비교할 때 비정상적으로 떨어진 관측치

    • Outlie의 처리 : 삭제, 대치, 로그변환
      • 대치 : 의미상 다른 값(보통 최대/최소) 로 대체해도 무관한 경우
      • 삭제
        • 극단적인 Outlier의 경우 삭제하는 것이 유의미할 수 있음
        • 다른 cluster에 속하는 새로운 유의미한 data일 가능성 역시 있음 - 이 경우 scaler 등을 통해 처리하는 쪽이 더 나음
  • Scaling

    • 같은 수치형이라도 평균/최대/최소값은 서로 다름
    • 수치 데이터들의 range가 다를 경우, 각 feature를 그대로 학습시키면 결과값에 미치는 영향력이 서로 달라질 수 있음
    • min-max scaler : 정규화(normalization)
    • standard scaler : 표준화(standardization
    • Data Leakeage : test data는 일어나지 않은 일 > scale된 train과 다른 분포가 나타날 수 있지만, 같은 분포를 갖고 있음을 가정

Feature Engineering

  • Feature : 모델 예측에 사용될 수 있는, 데이터를 표현하는 모든 변수, 개체, 특성

  • Feature Engineering : 더 나은 모델 알고리즘을 위한 Raw data에서 Feature를 만들어내는 과정

  • 인코딩

    • 컴퓨터가 이해하기 힘든 형태의 데이터를 처리 가능한 형태로 변환하는 과정
    • one-hot encoding : 범주형 변수를 독립적 feature로 변환
    • label encoding : 순서가 있는 변수를 숫자 형태로 numbering
    • mean encoding : 분포를 바탕으로 값 mapping - 학습은 빠르나 overfitting 위험
  • 차원의 저주

    • feature수가 늘어남에 따라 해당 target을 설명하는 data 수가 줄어드는 현상
    • 차원이 낮을수록 모델 성능이 높아짐
    • 모델 복잡도 감소 / overfitting 회피 : 특성 선택 vs 추출
      • 특성 선택 : 높은 성능을 나타내는 feature를 선택 (with greedy algorithm)
      • 특성 추출 : feature를 바탕으로 새 feature 구성 (with PCA, LDA)
  • PCA(주성분 분석)

    • 고차원 feature 중 중요 몇 가지를 추출
    • 비지도 학습의 일종
    • 큰 분산 = 많은 정보
    • 데이터 분산을 표현하는 벡터 > 표현력이 큰 벡터 선별 후 원본 데이터 투영 > k (k < d)인 데이터 셋으로 재구성
    • 단점 : 새로 만들어진 feature가 갖는 의미는 불확실해짐

Before Modeling

  • Kaggle조사에서

    • 가장 좋아하는 ML/DL method: 딥러닝, 인공신경망, 시계열 분석, ...
    • But 실무에서 사용되는 DL Method : 데이터 시각화, Logistic Regression, Cross-Validation, 결정 트리, Random Forest, ...
    • 의외로 고전적 분석법들이 잘 동작하는 경우가 많음
  • 이렇게 배운 걸 모두 활용해야 하는가?

    • 모든 도구들이 항상 필요한 건 아니지만, 배워 두면 언젠가 쓸 일이 생긴다
    • 사용법을 숙지하면 다른 작업에 활용될 여지도 있다
728x90

+ Recent posts