Data Science 1.Data, measurements, and data preprocessing
본 데이터 사이언스는 Data Mining: Concepts and Techniques (4th edition) 을 기준해 학습한 것으로, 이번 블로그에서는 Chapter 1,2를 다룬다.
Chapter 1. Introduction
Data Science
Data Science란 무엇일까?
실제 데이터에서 의미 있는 패턴과 지식을 추출하는 과정 (KDD : Knowledge Discovery from Data)
-
pattern, association, knowledge 를 발견
-
전체 과정
- Data Sources, Preparation
- Data Mining
- Pattern/Knowledge Evaluation
Chapter 2. Data, measurements, and Data Preprocessing
1. Data Types and Statics
Data set = A set of data objects
- 여러 개의 데이터 객체
Data Object : 각 데이터 하나
Data Attribute : 데이터 객체의 특성
attribute = dimension = feature = variable
Data Type
1. Nominal Attribute
- 이름(name)만 의미를 가지는 범주형 데이터
categorical attribute라고도 부름- 순서, 크기 비교가 없다. 단순 category
- Ex) Hair color : black, brown, blond, red …
- 데이터 분석에서는 문자열 대신 숫자로 encoding을 한다.
- 하지만 이러한 수학적 연산은 의미가 없다. (카테고리형이기 때문)
2. Binary Attribute
- 두 가지 상태만 가지는 Nominal Attribute
Boolean attribute라고도 부름.- 두 가지의 종류가 있다.
- Symmetric : 두 값이 동등한 중요도
- Asymmetric : 두 값의 중요도가 다르다.
3. Ordinal Attribute
- 값들 사이에 의미 있는 순서가 존재
- 하지만 간격은 크게 의미가 없다.
4. Numeric Attribute
- 숫자로 표현되는 정량적 데이터
- 측정과 계산이 가능하다.
- 정수 또는 실수의 타입 형탱
- 두 가지의 종류가 존재
- Interval-Scaled Numeric Attribute : 값 사이의 차이가 의미 있어서 Difference 계산이 가능하지만 배수 비교는 할 수 없다.
- Ratio-Scaled Numeric Attribute : true zero가 존재하여 배수 비교가 가능하다.
따라서 데이터의 성질에 따라 적절한 타입을 결정하는 것은 중요한 작업이다.
Data Statics
데이터의 기본 통계 분석으로 데이터의 특성을 파악할 수 있다.
- 목적 : 데이터 구조 파악, missing value 처리, noise 제거, outlier detection, inconsistency 수정
Central tendency : 데이터의 중심 위치가 어디인가?
대표적인 방법 : Mean, Median, Mode
- 1. Mean (평균) : 전체 값 합 / 데이터 개수
- Weighted Mean : 데이터 마다 가중치 존재
Mean은 Outlier에 매우 취약
2. Median : 정렬했을 때 가운데 값
- skewed distribution을 띄는 데이터에서는 median 값이 더 좋다.
- outlier의 영향이 더 적다.
- 데이터의 수가 커지면 계산하기에 비효율적이다.
3. Mode : 가장 자주 등장하는 값
- Multimodal : 여러 개의 mode가 존재
Dispersion : 데이터가 얼마나 퍼져 있는가?
대표적인 방법 : Range, Quartiles, Percentiles, Interquartile Range
1. Range : max - min
2. Quartiles (4분위) : 데이터를 4개 구간으로 나눔
Q1 = 25%
Q2 = 50% (median)
Q3 = 75%
3. InterQuartile Range (IQR) \(IQR = Q3 - Q1\) 중간의 50%의 데이터 범위
4. Five-number summary
- minimum, Q1, Median, Q3, Maximum으로 5개로 나눔
- Boxplot : 5개의 값으로 데이터 분포 시각화
5. Variance : 분산
- 평균 기준으로 데이터가 얼마나 퍼져있는가?
6. Standard Deviation : 표준편차
- 분산의 제곱근
- 평균에서 평균적으로 얼마나 떨어져 있는가?
Covariance (공분산)
의미 : 두 변수 A,B가 같이 움직이는 정도 \(Cov(A,B)=\frac{\sum (a_i-\bar A)(b_i-\bar B)}{n}\) 결과 해석
Cov(A, B) > 0: 값이 같은 방향으로 움직임.Cov(A, B) < 0: 값이 반대 방향으로 움직임.- A가 증가하면, B는 감소
Cov(A, B) = 0: 두 변수는 서로 독립적
공분산은 Scale을 고려하지는 않기에 단위를 잘 반영해야 한다.
Correlation (상관계수)
Covariance에서 Scale의 문제를 해결한 것
- 공분산의 표준화한 값:
공분산 / (표준편차 * 표준편차)- Pearson correlation coeficient (PCC) 라고 부르기도 한다.
값 범위 : \(-1 \le r \le 1\)
| r 값 | 의미 |
|---|---|
| r = 1 | 완벽한 양의 상관 |
| r = 0 | 관계 없음 |
| r = -1 | 완벽한 음의 상관 |
Nominal Data Correlation (Chi-Square)
사용 목적 : 범주형 변수 관계 측정
- 예시 : gender, preferred reading
- 아래 교차표 (contingency table)
| male | female | |
|---|---|---|
| fiction | 250 | 200 |
| non-fiction | 50 | 1000 |
아이디어 : 실제 값 vs 예상 값 비교
- observed frequency : 실제 데이터
- expected frequency : 두 변수가 독립이라면
2. Similarity & Distance Measures
Similarity & Distance가 왜 중요한가?
정답 : 데이터마이닝 알고리즘 대부분이 거리 기반이다.
- 예시 : Clustering, Outlier Detection, Classification
Dissimilarity Matrix : 데이터끼리의 거리
- similarity는 반대로 같은 비율을 말한다.
특징
- 대칭
d(i,j) = d(j,i) - 자기 자신 거리
d(i,i) = 0
Nominal Attribute Proximity
Nominal Attribute : 순서가 없는 category 데이터
- 숫자에 대한 계산은 의미가 없음
- 따라서 같은 값이 몇 개냐를 기준으로 거리 계산을 진행
공식의 의미 : 전체 attribute 중 얼마나 다른가
Binary Attribute Proximity
Binary Attribute : 0 또는 1의 두 가지만 가지는 데이터
- 타입의 종류에 따라 Dissimilarity가 다르다.
- 아래의 비교표 기준 설명
| j=1 | j=0 | |
|---|---|---|
| i=1 | q | r |
| i=0 | s | t |
1. Symmetric Binary Attributes
- 0과 1이 동일하게 중요한 경우
- 예시 ) male / female
- 의미 :
다른 값 / 전체
2. Assymmetric Binary Attributes
- 0과 1이 중요도가 다르다.
- 예시 ) 질병의 유무
- Distance 공식
- similarity (Jaccard Coefficient)
Jaccard 직관
- 공통으로 존재하는 것 / 둘 중 하나라도 존재 하는 것
Dissimilarity Numeric Data
- 숫자형 데이터끼리는 얼마나 떨어져 있는가 계산
Minkowski Distance
- 여러 가지 공식을 하나로 묶어놓은 큰 틀
- Euclidean Distance / Manhattan Distance 를 값에 따라 가능
- 즉 거리의 일반형을 표현, 값에 따라 특수한 경우를 포함
Euclidean Distance
- 대각선으로 바로 가는 거리
- 가장 익숙한 직선거리
Manhattan Distance
- 직선으로 꺾여서 가는 거리
- 도시 블록 거리 : 도로가 격자형일 때, 대각선으로 못가고 길 따라서 꺾어 가야 하기 때문
거리 measure Properties
- Non-negativity : 거리니까 음수일 수 없다.
- Symmetry : A에서 B까지의 거리와 B에서 A까지의 거리는 같다
- Triangle inequality : 직접 가는 길이 돌아가는 길보다 길 수는 없다.
Cosine Similarity
- 문서 벡터 : 차원이 매우 크고 대부분 0 이고 문서 길이가 다른 경우
- 크기 보다는 방향이 더 중요
핵심 아이디어 : 두 벡터 사이의 각도 (angle)를 보는 것 \(sim(x,y)=\frac{x \cdot y}{\|x\|\|y\|}\)
두 벡터가 같은 방향이면 유사하다.
길이 자체보다 어떤 단어 패턴 방향이 비슷한지를 확인
KL Divergence
- 벡터가 아닌 확률분포끼리 얼마나 다른가를 보는 개념
- 진짜 분포 p를, 모델 q로 대신 설명할 때 얼마나 손해를 보느냐
- p(x) : 진짜 데이터 분포
- q(x) : 우리가 학습한 모델 분포
-
해석
KL = 0: 두 분포가 완전히 같다.KL이 클 때: 모델이 진짜 분포를 잘 못 따라간다.
-
특징
- Non-negativity
P = Q이면 0- Assymmetry
거리라면 대칭이 맞지만,
KL Divergence는 엄밀한 distance가 아니기 때문에 비대칭적
3. Data Preprocessing
Data Preprocessing : 데이터 전처리
- 데이터에서 지식을 찾기 전에 반드시 해야 하는 단계
데이터 품질이 좋아야 분석 결과도 좋다.
- 현실 데이터 특징 : 값이 비어 있음, 오타 있음, 형식이 제각각, 여러 파일에 흩어져 있음
- 3가지 핵심 단계
- Data cleaning : 오류, noise, inconsistency 를 제거하는 단계
- Data integration : 여러 출처의 데이터를 합치는 단계
- Data transformation : 데이터를 분석하기 좋은 형태로 바꾸는 단계
- 전체 흐름
원천 데이터 -> 전처리 -> 데이터 마이닝 -> 패턴 평가 -> 지식
Data Quality
좋은 데이터란 무엇인가?
- 데이터의 품질을 평가하는 기준
- Accuracy (정확성) : 데이터 값이 실제 세계를 정확하게 반영하는가
- Completeness (완전성) : 데이터가 빠짐없이 채워져 있는가
- Consistency (일관성) : 데이터끼리 서로 모순되지 않는가
- Timeliness (적시성, 최신성) : 데이터가 현재 목적에 맞게 충분히 최신인가
- 데이터 품질은 절대적인 것이 아니라, 사용 목적에 따라 달라진다.
- 같은 데이터라도 목적에 따라 좋은 데이터일수도 있고 아닐 수도 있다.
Data Cleaning
왜 Data Cleaning이 필요한가?
- 현실 데이터는 보통 incomplete, noisy, inconsistent 의 특성을 띈다.
- Missing Value (결측치) : 어떤 객체의 일부 속성이 비어있는 상태
- 분석 결과의 왜곡이 가능함.
- Nosiy Data : 측정 오차나 랜덤한 변동 때문에 생기는 이상한 값
- Inconsistent Data : 데이터 사이에 모순이 있는 경우
Data Cleaning
- 단순히 데이터를 지우는 것이 아니다.
- 데이터를 버리는 것보다, 쓸 수 있게 만드는 것
그러면 실제로 어떻게 처리하는가?
Addressing Missing Value
결측치는 어떻게 처리할 것인가?
가장 기본적인 방법 3가지
- Ignore the tuple (그냥 삭제하기)
- 결측치 이는 행을 통째로 제거하기
- 장점 : 구현이 쉽고, 데이터가 깨끗해진다.
- 단점 : 데이터가 많이 날라가서 정보 손실의 위험이 있다.
- Fill manually (수작업 입력)
- 사람이 직접 채우는 방법
- 장점 : 정확함
- 단점 : 시간이 많이 들어서 대용량에서는 거의 불가능
- Global constant
- 장점 : 빠르고, 모델 학습도 가능.
- 단점 : 의미 없는 값이 들어가 모델이 잘못 학습할 수 있음.
조금 더 똑똑하게 채우는 방법
1. Central tendency
- 평균 또는 중앙값으로 채움
- 정규분포의 양상을 보일 때 : 평균값 대체
- 치우친 분포를 띌 때 (Outlier 존재) : 중앙값 대체
2. Class-based filling
- 같은 class끼리의 평균/중앙값 사용
- 핵심 가정 : 같은 class끼리는 비슷한 값을 가진다.
- 장점 : 더 현실적이고, grouping을 반영
3. Most probable value
- 머신러닝으로 예측해서 채움
- 다른 변수들을 이용해서 missing 값을 예측
- 장점 : 관계를 유지할 수 있다.
- feature간 관계를 깨지 않아야 한다.
Addressing Noisy Data
noise(잡음)을 줄이는 방법
- 핵심 개념 : Binning
- 데이터를 구간(bin)으로 나누고 그 안에서 값을 평균화하는 방법
- 3가지의 smoothing 방식
- Bin mean : 각 bin을 평균으로 통일
- Bin median : 각 bin을 중간값으로 통일
- Bin boundaries : 가장 가까운 경계값으로 변경
Noise 자체는 “튀는 값”
- 비슷한 값끼리 묶어서 평균화 -> noise를 줄일 수 있다.
Binning보다 더 고급적인 방법
1. Regression Smoothing
- 데이터를 함수에 맞추는 것 : 데이터를 가장 잘 설명하는 함수로 맞춘다.
- 효과
- Noise 제거
- 패턴 유지
2. Outlier anlaysis
- 이상치 제거
- 데이터들을 클러스터링
- 군집 밖에 있는 값은 outlier : outlier를 제거하면 더 부드러워진다.
Data Integration
- 여러 데이터 소스를 하나로 합치는 과정
- 데이터의 중복을 제거가 가능
- 불일치 문제 해결 가능
- 데이터 마이닝의 성능을 향상
- Semantic, Structural 이질성으로 어려움
Entity Identification
- 서로 다른 데이터에서 같은 실제 객체를 찾는 것
- Schema integration : 컬럼 이름 맞추기
- Object matching : 실제 데이터 비교
- Metadata 활용 : 데이터에 대한 정보
- 이를 통해 이 컬럼이 무엇을 의미하는지를 알 수 있다.
Redundancy and Correlation Analysis
- 불피요한 데이터 제거
- Redundancy (중복) : 어떤 변수는 다른 변수로부터 계산이 가능
- 해결 방법
- Correlation 분석 : 변수 간의 관계 측정
- 두 변수가 강하게 연결되어 있으면 하나 제거 가능
- Numeric -> Pearson Correlation, Nominal -> Chi-square
Data Transformation
- 데이터를 모델이 잘 먹을 수 있는 형태로 바꾸는 과정
- 필요한 이유
- 알고리즘 성능 향상
- 패턴이 더 잘 보인다.
Normalization
Min-Max Normalization
-
값의 범위를 통일 \(x' = \frac{x - x_{min}}{x_{max} - x_{min}}\)
- 모든 값 :
0 ~ 1사이
- 모든 값 :
-
단점 :
- Min, Max 값을 모르면 사용할 수가 없다.
- 비율 기반 스케일링으로 Outlier에 매우 민감
Z-Score (Zero-mean) Normalization
- 평균 기준으로 데이터를 정규화
- 분포 중심 기준 정규화
- 결과 :
- 평균 = 0 / 표준편차 = 1
- outlier를 모르고, min/max를 모를 때 사용하기에 좋다.
Discretization
- 연속값을 구간값으로 변환한다.
- 숫자를 의미있는 그룹으로 변환한다.
- 모델 단수화, 해석이 쉽고, rule-based 모델에 유리하다.
- 세분화 -> 추상화
- Binning 방식 :
- Equal-width
- Bin 대표값 사용 : mean, median
Sampling
- 데이터를 줄인다.
- 데이터가 너무 많으면 느리고, 비용이 크다
- 따라서 전체를 대신하여 대표 샘플을 사용
- Without replacement : 뽑으면 다시 안 넣음 (일반적인 샘플링)
- With replacement : 뽑고 다시 넣음 (같은 데이터 여러 번 가능)
- Stratified sampling : 데이터를 그룹(starta)으로 나누고 각 그룹에서 샘플링
4. Dimensionality Reduction
Dimensionality Reduction = 차원 (Feature 수)를 줄이는 것
High-Dimension Data는 왜 문제일까?
- 불필요한 feature가 많다.
- 중복/의미 없는 변수가 존재
- Overfitting 위험
- feature가 많을수록 모델이 데이터를 외워버림
- 계산 비용 증가
- Curse of Dimensionality = 차원의 저주
- 차원이 커질수록 데이터가 희소해지고, 이는 거리 개념이 무너진다.
- 해석이 너무 어렵다.
Attribute Subset Selection
Motivation : 모든 feature가 중요한 게 아니다.
- Redundant (중복) : 서로 강하게 상관된 변수
- Irrelevant (무관) : 예측에 도움이 안되는 변수
목표
- 최소한의 feature로 최대 성능
- 가능한 경우의 수를 전부 탐색하기가 불가능하다. : Greedy 접근
- 기준 : 한 번에 하나씩 좋은 feature 선택
Stepwise Forward Selection
- 비어있는 상태에서 시작하여 하나씩 추가
S = {}
# 가장 좋은 feature 하나 추가
# 반복
- 단계
- 모든 feature를 하나씩 넣어보고 성능을 비교
- 기존 S에 하나씩 추가해서 테스트
- 성능이 더 이상 안 오를 때까지 반복
-
수식 \(성능 증가량 = f(S ∪ ai) - f(S)\)
- 가장 증가량이 큰 feature를 선택
- 하나씩 추가하면서 점점 모델을 키운다.
Stepwise Backward Selection
- 모든 feature에서 시작하여 하나씩 제거
S = {모든 feature}
# 하나씩 제거
- 단계
- 하나씩 제거하고 이를 반복한다.
- 더 제거하면 성능이 떨어질 때까지 반복
-
수식 \(성능 변화 = f(S - ai) - f(S)\)
- 성능이 안 떨어지거나 오히려 좋아지면 제거 :
- 제거해서 성능이 좋아진다는 의미 = 사실상 유용하지 않은 피처다.
- 쓸모없는 feature를 하나씩 제거
- 성능이 안 떨어지거나 오히려 좋아지면 제거 :
Forward + Backward
- Forward의 문제점 : 초기에 잘못 선택하면 지울 수가 없다.
-
Backward의 문제점 : 초기에 중요한 것을 제거할 수도 있다.
- 핵심 : 추가 + 제거를 동시에 한다.
Principal Component Analysis (PCA)
PCA란?
- 고차원 데이터(d)를 저차원(k)으로 줄이는 방법 (d > k)
- 정보를 최대한 유지하면서 차원을 축소
- 핵심 아이디어 : 좋은 축 (axis)를 찾는다.
- 좋은 축 : 데이터를 가장 잘 표현하는 방법
좋은 축이란?
-
데이터가 가장 넓게 퍼진 방향
-
즉, variance가 최대인 방향
- 퍼져있을수록 정보가 많다.
- 의미 : w 방향으로 projection을 했을 때, variance가 최대가 된다.
Mean Centering : x → (x - 평균)
-
먼저 진행되는 단계.
-
절대 위치를 제거하면서 분산을 확인할 수 있다. \(Var(w^T x) = w^T \Sigma w\)
Covariance Matrix Σ
- Σ = feature간 관계를 나타낸다.
- Var -> 퍼진 정도
- Cov -> 관계 (같이 움직임)
Lagrange Multiplier
\[\max_{|w|=1} w^T \Sigma w\]-
Lagrange Multiplier 사용 \(\Sigma w = \lambda w\)
-
핵심 결론
- Principal Component = Covariance matrix 의 eigenvector
- eigenvalue 의미
- λ = 그 축의 중요도 (분산 크기)
- 큰 λ : 중요한 축
-
최종 선택 : top-k eigenvectors 선택
- eigenvector = 방향
- eigenvalue = 중요도