Data / Data Quality / Exploratory Data Analysis

2023. 1. 11. 18:00·Machine Learning
728x90
반응형

Data

  • data: instance(= sample)와 attribute(= variable, feature)의 모음
  • variable의 종류
    • Categorical (범주형)
      1. nominal (명목형)
        • 값들이 이산적인 symbols
        • 값들간에 관계가 없다. (순서(ordering)나 차이(distance)의 척도가 없음)
        • equality test만 가능하다.
        • 예시) 날씨: "sunny", "rainy", etc
      2. ordinal (순위형)
        • 값들에 순서를 부여
        • 값들 사이에 차이가 정의되어 있지 않다.
        • 덧셈과 뺄셈이 성립하지 않는다.
        • nominal과 ordinal의 차이가 항상 명확하지 않다.
        • 예시) 기온: "hot" > "mild" > "cool", 키: "tall" > "medium" > "short"
    • Numeric (수치형)
      1. discrete (이산)
        • 유한 또는 셀 수 있는 무한한 값들의 집합을 가진다.
        • 주로 정수로 표현된다.
        • 이진(binary) 속성 또한 이산 속성의 예 중 하나이다.
      2. continuous (연속)
        • 속성 값으로 실수를 가진다.
  • 범주형 데이터 표현 예시
    • T-shirt 사이즈: M < L < XL (ordinal)
    • Color: blue, green, red (nominal)
      → 정수로 매핑
      - blue: 0, green: 1, red: 2
      - 문제점: 알고리즘이 이 값을 수치형(numeric)으로 간주하여 기대하지 않은 결과를 초래할 수 있음
    • One-hot encoding
      • 범주형 데이터에 대한 일반적인 접근법
      • 각 범주 값을 표현하는 바이너리 벡터를 생성
      • 범주형 데이터의 표현을 좀 더 표현력있게 만든다.

One-hot encoding 예시

 

Data Quality

  • 데이터 품질 문제 예시
    • missing values (결측 데이터)
    • noise and outliers
    • duplicate data (중복 데이터)
  • 결측 데이터 (missing values)
    • 결측 데이터의 원인
      • 데이터 수집 중 오류가 발생해서
      • 정보가 수집되지 않아서 (예를 들어, 사람들이 자신들의 정보를 제공하기를 거절할 때)
      • 속성이 모든 경우에 적용되지 않을 수 있어서 (예를 들어, 연간 소득은 아이들한테는 적용되지 않는다.)
    • 데이터 테이블에서 주로 빈 공간 또는 NaN(not a number)으로 표시
    • 결측 데이터를 무시하는 경우 예측할 수 없는 결과를 낳게 됨
  • 결측 데이터 처리
    • Eliminate Data Objects(or features) → 데이터 제거
    • Estimate Missing Values (imputation) → 데이터 보정
  • 결측 데이터 제거
    • 결측값을 갖는 행 제거 / 결측값을 갖는 열 제거 / 결측값을 갖는 특정 조건을 만족하는 행 또는 열 제거 등
    • 장점: 편리함
    • 단점: 정보 손실
      • 샘플 수 부족 → 신뢰성 있는 분석 불가
      • 피처(속성) 수 부족 → 샘플에 관한 정보 부족
  • 결측 값 보정
    • 평균 값 사용 / Nearest-neighbor based imputation /Model-based imputation
    • 평균 보정법: 열 평균 사용
      * 행 평균? → feature이 달라서 안 됨
      * Median(중앙값)? → not bad
      * 범주형 변수일 땐? → 최빈값으로
    • K-Nearest Neighbor Imputation: k 개의 가장 가까운 이웃들을 찾은 뒤, 그 이웃들 중 결측값이 아닌 값들을 사용한다.

K-Nearest Neighbor Imputation 예시

  • Noise: Noise는 원래 값이 수정된 것을 말한다. (예시: 안 좋은 휴대폰에서 얘기하는 사람의 목소리의 왜곡)
  • 노이즈 처리
    • 더 많은 데이터 수집: 데이터가 많을 수록, 기저 패턴을 파악하기 쉽다.
    • Smoothing by binning (discretization, 이산화)
    • Regularization (정규화): L1 / L2 정규화
  • Outliers (이상치): Outliers는 데이터셋에 존재하는 다른 대부분의 데이터 객체들과 특성이 상당히 다른 데이터 객체이다.
    • 발생 원인
      • 측정 오류
      • 인간의 잘못
      • 샘플링 오류
      • 자연적인 이상치
    • Outlier detection
      • 분포를 시각화한다.
        - Boxplot, histogram: 단일 변수
        - Scatter plot: 두 개 이상의 변수
      • 통계적 방법을 사용한다.
      • Exploratory data analysis (EDA) 이용한다.

Outliers 예시

 

Exploratory Data Analysis (EDA)

  • 데이터 분석 초기 단계에 사용하기 좋음
  • 종류
    • Nummercial summaries of data
      - Descriptive statistics (기술 통계)
    • Graphical summaries of data
      - Visualization
  • Numercial Summaries of Data
    • Not visual
    • Summary statistics (요약 통계)
      • 평균, 중앙값
      • mode: 최빈값
      • 분산(variance), 표준 편차(standard deviation)
      • quartiles
      • 범주형 변수일 때는 이산적인 값들의 개수
        * 평균은 데이터의 중심을 보여주기에 좋은 지표가 아닐 수도 있다.

  • 중앙값: 정확히 중앙에 있는 값
    • 한쪽으로 쏠린 분포(skewed distribution)나 이상치가 있는 데이터에 유용하다.
    • 평균보다 더 robust하다.
    • 이론상 다루기 힘들다. (쉬운 수학적 공식이 없다.)
  • Percentiles (=Quantiles)
    • n번째 percentile은 하위 n% 값과 그 아래 값들이다.
      • Q1: 25th percentile
      • 중앙값: 50th percentile
      • Q3: 75th percentile
      • IQR: Interquartile range (25 to 75%: Q3-Q1)
  • Numeric variables의 시각화
    • Boxplot: 다섯 가지 값(최댓값, Q3, 중앙값, Q1, 최솟값)을 보여주는 일반적인 시각화 방법
    • Histogram: numeric variable의 분포를 그래프로 나타내는 또 다른 방법
  • Boxplot
    • x축: 범주형 변수
    • y축: 실수 또는 정수형 변수
    • 각각의 그룹에 대해, boxplot은 다음 값들을 보여준다.
      • 중앙값
      • Interquartile range (25 to 75%) (IQR)
      • Whiskers (outliers로는 간주되지 않는 extreme한 지점들)
      • Outliers
    • 여러 데이터의 분포를 비교할 때 유용하다.

boxplot 예시

  • Histogram
    • 같은 크기의 구간으로 데이터 범위를 나눈다.
    • 각각의 구간에에 해당하는 데이터의 개수를 구한다.
    • x축: 변수의 개수
    • y축: 빈도 (각 구간마다의 개수)
    • 문제점
      • 큰 데이터셋에서는 분포의 일반적인 특성들을 보여주는 데 꽤 효과적이지만, 작은 데이터셋에서는 misleading할 수도 있다.
      • 단일 변수일 때만 효과적이다.

histogram 예시

  • 범주형 변수들 탐구(Exploring)
    • 범주형 데이터는 요약 통계보다는 표를 사용하여 조사된다.
      - 예시: one-way table (일원배치표: 단 한 종류의 범주형 변수 자료를 표로 나타낸 것)
    • 중심적인 경향 측정 - 최빈값(mode)
      - 가장 많이 발생하는 값이다.
      - 범주형 데이터에서 자주 사용된다.
  • 2D Scatter plot
    • 두 개의 변수들 간에 관계를 보여주는 일반적인 도구이다.
    • 아래의 질문들에 답할 때 유용하다.
      - x와 y의 관계는?
      - y의 분산이 x에 의존하는가?
      - 이상치는?

Scatter Plot: 명백한 관계가 없는 경우
Scatter Plot: 자동차의 속도와 제동 거리간의 관계 (일차 함수와 유사)

  • Spatial Data: 데이터가 지리적인 요소를 가질 경우, scatter plot을 이용할 수 있다.
    (x축, y축을 위도, 경도로 설정)
  • 변수가 여러개일 경우 (Multivariate): 차원을 2개씩 잘라서 scatter plot으로 만든다.
  • Jittering: 무작위적인 노이즈를 데이터에 추가하여, 겹치는 점들을 말 그대로 흔들어 (Jitter)버리는 것
    겹치는 값이 많을 때, Jittering을 하여 밀집도를 쉽게 파악할 수 있다.

Jittering 예시

  • Barchart(막대 그래프)와 Spineplot
    • stacked barchart(누적 막대 그래프)는 일반적으로 차원별로 측정값의 비중을 보여주기 위한 목적으로 사용된다.
    • spineplot은 비율을 보여주는데 효과적이지만, 해석이 어려울 수 있다.

좌측: 일반적인 barchart, 우측: stacked barchart
spineplot: 남녀 비율을 비교하기 좋다.

  • 그 외: pie chart, 3D 그래프 등
  • 차원 축소: 고차원 분포의 데이터를 2차원 또는 3차원으로 줄이는 방법
728x90
반응형
저작자표시 비영리 (새창열림)

'Machine Learning' 카테고리의 다른 글

Introduction to Supervised Learning  (0) 2023.01.18
머신러닝을 위한 파이썬 - numpy  (0) 2023.01.06
머신러닝을 위한 파이썬 - class / exception / with  (0) 2023.01.06
머신러닝을 위한 파이썬 - 함수 및 람다(lambda)  (0) 2023.01.06
머신러닝을 위한 파이썬 - if / for / while  (0) 2023.01.06
'Machine Learning' 카테고리의 다른 글
  • Introduction to Supervised Learning
  • 머신러닝을 위한 파이썬 - numpy
  • 머신러닝을 위한 파이썬 - class / exception / with
  • 머신러닝을 위한 파이썬 - 함수 및 람다(lambda)
20mini
20mini
개발 공부를 하며 알게 된 내용들을 기록한 블로그입니다. 댓글로 조언, 지적, 충고 등 다양한 의견들 항상 환영합니다!!
    반응형
    250x250
  • 20mini
    해시태그코딩 #coding
    20mini
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Python (1)
      • Algorithm, 코딩테스트 (82)
      • Machine Learning (8)
      • 논문 리뷰 (0)
      • 그 외 공부 관련 (2)
      • 기타 (1)
  • 인기 글

  • 태그

    lv.2
    lv.1
    Machine Learning
    알고리즘
    완전탐색
    lv.3
    hash
    프로그래머스
    코딩테스트
    Python
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
20mini
Data / Data Quality / Exploratory Data Analysis
상단으로

티스토리툴바