- 범주형 데이터 : 명확한 그룹 등으로 구분 - 순서형 / 명목형
- 수치형 데이터 : 수로 나타남 - 이산형 / 연속형
순서형인지 수치형인지가 고민된다면 산술연산의 의미를 두면 된다.
(별점 4점은 별점 2점보다 2배 좋은건가?)
경우에 따라 순서형도 수치형처럼 치환하여 계산해볼 수 있다. (평균 별점)
범주형 데이터
명목형 데이터
- 순서가 상관없이 항목으로 구분되는 데이터
- 데이터 분석에 있어서는 집단 간 분석에 용이 / 범주 별 관계 분석에도 용이 (추천 알고리즘)
순서형 데이터에서는 오히려 적합할 수 있으나, 일반적으로 선형적인 연산이 들어가는 대부분 모델에서는 모델에 좋지 않은 영향
명목형 데이터 전처리
- Label Encoding
- 숫자로 1 대 1로 매핑
- 없는 레이블에 대해서 미리 전처리 필요 (기본값 -1로 설정한다거나)
- 다음의 2개 이상에서 [0,1,2]등으로 레이블링을 한다면 자체적인 순서 존재
- One-Hot Encoding
- 순서 정보를 모델에 주입하지 않기 위한 방법
- 추가로 다수 범주가 동시에 포함될 수 있는 경우에도 효과적인 인코딩
- 변수에 따라 데이터가 커질 수 있음.오히려 학습 속도와 퀄리티에 악영향
- Binary Encoding
- 범주가 너무 많다면(모델 학습 시간 또는 메모리 문제 등)
- 레이블링을 우선한다.(0,1,2,3…)
- 이를 이진수로 변환한다 (000,001,010,…111)
- 이를 컬럼 데이터로 변환한다 [0,0,0][0,0,1]
→ 범주의 개수가 k개일 때 k<2^N을 만족하는 최소 N만큼의 컬럼 생성
- 순서 정보를 없애며, 개수가 많은 범주에 효과적
- 범주의 의미가 거의 사라진다
- Embedding
- 자연어 처리에 있어 적절한 임베딩 모델을 사용하는 것도 하나의 방법
- Hashing
순서형 데이터
각 값이 우위 등의 순서가 존재하는 데이터
순환형 데이터
- 순서는 있지만 해당 값이 순환되는 경우 존재 (범주형/수치형 모두 포함)
- 삼각함수 등 값의 크기에 따라 순환되는 값을 사용할 수도 있음 (시계열 등에서도 사용 가능)
- sin(2pii/n), cos(2pii/n)등
- NeRF에서는 각도 값의 표현력을 넓히기 위해 한 값을 여러 개의 Sin,Cos값으로 치환해서 사용
수치형 데이터
- 이산형 데이터(Discrete) : 정수 형태 → 인구 수, 횟수 등
- 연속형 데이터(Continuous) : 실수 형태 → 키, 몸무게, 온도 등
- 구간형 데이터 : 구간의 값이 중요 → 온도, 시간 등
- 비율형 데이터 : 원점과의 거리가 중요 → 인구 수, 횟수, 밀도 등
정형 데이터 피쳐 엔지니어링
결측치 missing value
- 데이터셋에 누락된 값 (Null, NA)
- 대다수 모델에는 공백으로 값을 받지 않기 때문에 제외, 혹은 예측으로 처리함
결측치가 얼마나 있는가?
- 결측치가 과반수인 경우
- 결측치 유무만 사용
- 결측치 데이터 포함 열 제외
- 결측치가 유의미하게(>5%) 많은 경우
- 결측치 정보가 유의미한 정보임을 우선 파악
- 결측치를 채우기 위한 대푯값 전략
- 결측치의 개수가 매우 적은 경우
- 결측치가 포함된 행의 값을 미포함하는 경우도 고려 가능
- 결측치를 위한 대푯값 계산 필요
결측치를 채우기 위한 방법
- 규칙 기반
- 도메인 지식이나 논리적 추론에 의한 방법
- 지나치게 복잡하거나 단순한 경우 잘못된 편향이 반영될 수 있음
- 집단 대푯값
- 특정 집단의 대푯값(평균, 중앙값, 최빈값) 등 사용
- 집단 설계가 중요하고 이상치에 민감할 수 있음
- 모델 기반
- 회귀모델을 포함한 다양한 모델을 통해 예측
- 복잡한 패턴을 예측할 수 있으나 과적합 이슈 발생 가능
이상치 Outlier
- 관측된 데이터의 범위에서 과하게 벗어난 값을 의미함
- 사분위수(IQR), 표준편차, z-score 등의 기준이 대표적
- DBSCAN, Isolation Forest 등의 방법론 존재
IQR(Inter Quantile Range)
- IQR = 3분위수와 1분위수의 차이
- 1분위수 : 1.5 * IQR 이상
- 3분위수 : 1.5 * IQR 이상
피쳐 엔지니어링
- 보다 나은 특성을 통해 좋은 모델을 만들고, 해석에 용이하게 만드는 과정
- 특성 추출(Feature Extraction), 특성 선택(Feature Selection)
클러스터링 Clustering
- 클러스터링(Clustering)이란 유사한 성격을 가진 데이터를 그룹으로 분류하는 것
- 클러스터링 방법론
- K-Mean : 그룹을 K개로 그룹화하여, 각 클러스터의 중심점을 기준으로 데이터 분리
- Hierarchical Clustering : 데이터를 점진적으로 분류하는 방법
- DBSCAN : 밀도기반 클러스터링
- GMM : 가우시안 분포가 혼합된 것으로 모델링
차원 축소
- 차원 축소(dimensionreduction)란 특성 추출 방법 중 하나로 데이터의 특성(feature)N개를 M개로 줄이는 방법을 통칭
- 데이터의 복잡성 감소 : 고차원 데이터에서
- 시각화 : 패턴 발견에 용이 =>클러스터링과 매우 밀접한 관련
- 모델 성능 향상
- 차원 축소 방법
- 정보를 최대한 보유하고, 왜곡을 최소화해야 함.
- 가까운 데이터는 최대한 가깝게, 먼 데이터는 최대한 멀게
- PCA : 데이터의 공분산을 계산하여 고유 벡터를 찾아 투영
- t-SNE : 데이터 포인트 간 유사성 모델링하여, 저차원 공간에서 재현
- UMAP : 위상 구조의 정보를 최대화하여 저차원 공간에 재현
- LDA : 클래스간 분산을 최대화하고, 클래스 내 분산을 최소화하는 방식
- Isomap : 고차원에서 최단 경로 거리에 대한 정보를 저장
- Autoencoder : 인코더/디코더 구조로 고차원 데이터의 정보를 최대한 저장한 저차원 공간
특정 벡터들이 하나의 평면에 새롭게 투영된 것 → 많이 왜곡된 것
→ 차원 축소는 정답이 될 수는 없다?