728x90
반응형
Data
- data: instance(= sample)와 attribute(= variable, feature)의 모음
- variable의 종류
- Categorical (범주형)
- nominal (명목형)
- 값들이 이산적인 symbols
- 값들간에 관계가 없다. (순서(ordering)나 차이(distance)의 척도가 없음)
- equality test만 가능하다.
- 예시) 날씨: "sunny", "rainy", etc
- ordinal (순위형)
- 값들에 순서를 부여
- 값들 사이에 차이가 정의되어 있지 않다.
- 덧셈과 뺄셈이 성립하지 않는다.
- nominal과 ordinal의 차이가 항상 명확하지 않다.
- 예시) 기온: "hot" > "mild" > "cool", 키: "tall" > "medium" > "short"
- nominal (명목형)
- Numeric (수치형)
- discrete (이산)
- 유한 또는 셀 수 있는 무한한 값들의 집합을 가진다.
- 주로 정수로 표현된다.
- 이진(binary) 속성 또한 이산 속성의 예 중 하나이다.
- continuous (연속)
- 속성 값으로 실수를 가진다.
- discrete (이산)
- Categorical (범주형)
- 범주형 데이터 표현 예시
- T-shirt 사이즈: M < L < XL (ordinal)
- Color: blue, green, red (nominal)
→ 정수로 매핑
- blue: 0, green: 1, red: 2
- 문제점: 알고리즘이 이 값을 수치형(numeric)으로 간주하여 기대하지 않은 결과를 초래할 수 있음 - 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 개의 가장 가까운 이웃들을 찾은 뒤, 그 이웃들 중 결측값이 아닌 값들을 사용한다.
- Noise: Noise는 원래 값이 수정된 것을 말한다. (예시: 안 좋은 휴대폰에서 얘기하는 사람의 목소리의 왜곡)
- 노이즈 처리
- 더 많은 데이터 수집: 데이터가 많을 수록, 기저 패턴을 파악하기 쉽다.
- Smoothing by binning (discretization, 이산화)
- Regularization (정규화): L1 / L2 정규화
- Outliers (이상치): Outliers는 데이터셋에 존재하는 다른 대부분의 데이터 객체들과 특성이 상당히 다른 데이터 객체이다.
- 발생 원인
- 측정 오류
- 인간의 잘못
- 샘플링 오류
- 자연적인 이상치
- Outlier detection
- 분포를 시각화한다.
- Boxplot, histogram: 단일 변수
- Scatter plot: 두 개 이상의 변수 - 통계적 방법을 사용한다.
- Exploratory data analysis (EDA) 이용한다.
- 분포를 시각화한다.
- 발생 원인
Exploratory Data Analysis (EDA)
- 데이터 분석 초기 단계에 사용하기 좋음
- 종류
- Nummercial summaries of data
- Descriptive statistics (기술 통계) - Graphical summaries of data
- Visualization
- Nummercial summaries of data
- 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)
- n번째 percentile은 하위 n% 값과 그 아래 값들이다.
- Numeric variables의 시각화
- Boxplot: 다섯 가지 값(최댓값, Q3, 중앙값, Q1, 최솟값)을 보여주는 일반적인 시각화 방법
- Histogram: numeric variable의 분포를 그래프로 나타내는 또 다른 방법
- Boxplot
- x축: 범주형 변수
- y축: 실수 또는 정수형 변수
- 각각의 그룹에 대해, boxplot은 다음 값들을 보여준다.
- 중앙값
- Interquartile range (25 to 75%) (IQR)
- Whiskers (outliers로는 간주되지 않는 extreme한 지점들)
- Outliers
- 여러 데이터의 분포를 비교할 때 유용하다.
- Histogram
- 같은 크기의 구간으로 데이터 범위를 나눈다.
- 각각의 구간에에 해당하는 데이터의 개수를 구한다.
- x축: 변수의 개수
- y축: 빈도 (각 구간마다의 개수)
- 문제점
- 큰 데이터셋에서는 분포의 일반적인 특성들을 보여주는 데 꽤 효과적이지만, 작은 데이터셋에서는 misleading할 수도 있다.
- 단일 변수일 때만 효과적이다.
- 범주형 변수들 탐구(Exploring)
- 범주형 데이터는 요약 통계보다는 표를 사용하여 조사된다.
- 예시: one-way table (일원배치표: 단 한 종류의 범주형 변수 자료를 표로 나타낸 것) - 중심적인 경향 측정 - 최빈값(mode)
- 가장 많이 발생하는 값이다.
- 범주형 데이터에서 자주 사용된다.
- 범주형 데이터는 요약 통계보다는 표를 사용하여 조사된다.
- 2D Scatter plot
- 두 개의 변수들 간에 관계를 보여주는 일반적인 도구이다.
- 아래의 질문들에 답할 때 유용하다.
- x와 y의 관계는?
- y의 분산이 x에 의존하는가?
- 이상치는?
- Spatial Data: 데이터가 지리적인 요소를 가질 경우, scatter plot을 이용할 수 있다.
(x축, y축을 위도, 경도로 설정) - 변수가 여러개일 경우 (Multivariate): 차원을 2개씩 잘라서 scatter plot으로 만든다.
- Jittering: 무작위적인 노이즈를 데이터에 추가하여, 겹치는 점들을 말 그대로 흔들어 (Jitter)버리는 것
겹치는 값이 많을 때, Jittering을 하여 밀집도를 쉽게 파악할 수 있다.
- Barchart(막대 그래프)와 Spineplot
- 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 |