2. 데이터 전처리
전처리(preprocessing)
데이터 분석 성능을 높이고자 데이터를 수정하거나 형태를 변경하는 것
데이터 분석 유형
데이터 정제(cleaning) : 빠진 값/오류값을 체우는 것
데이터 변형 시 로그 혹은 역수를 취하여 정규분포에 맞게 구간 설정
수치가 아닌 데이터는 수치값으로
ex. 월~일을 0~6으로
혹은 수치 데이터 분포를 정규화할 수 있음
3. 데이터 전처리
결측치(missing value) : 데이터 전처리 중 가장 중요한 과정
버리기
결측치가 있는 데이터를 버림
결측치가 있는 데이터 비중이 큰 경우 사용 불가
결측치는 입력되지 않은 것인지, 측정되지 않은 것인지를 확인해야 함
대체
평균, 0, 지정한 값 등
어떤 값으로 대체하는가에 따라 결과에 영향을 줄 수 있음
대체되었음을 나타내는 범주형 변수를 정의하면 추적에 용이
NA
전처리 단계에서 빠진 데이터를 처리하지 않음
4. 데이터 전처리
틀린 값(Invalid value) : 잘못 입력된 값
양수 데이터에 음수 / 숫자 데이터에 문자
ex. 키(m) 데이터에 1.7(O) / 1.7m(X)
결측치는 발견이 쉬우나 틀린 값은 잘못된 값이므로 명확한 기준에 따라 프로
그램을 통해 찾아야 함
이상치(Outlier) : 데이터의 일반적인 범위를 벗어나는 값
ex. 사람의 키
2m : 드물지만 있을 수 있는 값 = 이상치
5m : 사람 키로 있을 수 없는 값 = 틀린 값
검출 : 이상치를 찾아내는 것
데이터 전처리가 아닌 분석 단계에서 시행
5. 데이터 변환
데이터를 다른 형태로 바꾸어 사용하는 것
범주형으로 변환
수치 데이터를 구간으로 나누어 사용(10대 / 20대 등)
내신과 같이 데이터 범위는 같을 수도, 다를수도 있음
One-Hot Encoding
모든 범주를 column으로 추가
해당 범주에 속하면 1, 아니면 0으로 값 설정
컴퓨터가 범주형 데이터를 확실히 인식 가능
스케일링 : 데이터 범위를 조정
7. 유사도 계산
클러스터링 : 새 데이터가 속하는 유사도(similarity), 데이터 간의 거리(distance)
새 메일이 일반 메일과 스팸 중 어디에 가까운가?
각 데이터 간의 성격과 단위가 다르므로, 표준 스케일링 후 유사도 계산
Euclidian distance
두 점 간의 거리를 계산하는 가장 일반적 방법
2차원
n차원
dist = (X − X ) + (Y − Y )
2 1
2
2 1
2
dist = (p − q )
∑i=1
n
i i
2
8. 유사도 계산
코사인 유사도
두 점의 각도가 작을수록(벡터가 가리키는 방향이 같을수록) 가깝다고 판단
자카드(Jaccard) 유사도
데이터 간의 공통점을 찾는 유사도
추천 시스템에 주로 사용
데이터 X,Y의 교집합 원소 수를 전체 원소 수로 나눈다.
s (x, y) =
cos ∣X∣∣Y ∣
X⋅Y
J(X, Y ) = ∣X∪Y ∣
∣X∩Y ∣
9. K-means : 거리 기반 클러스터링
임의 중앙점에서 최소 거리를 갖는 점들을 같은 클러스터로 정의
from sklearn.cluster import KMeans
k = KMeans(n_cluster=2).fit_predict(data)
10. DBSCAN : 밀도 기반 클러스터링
Density-Based Clustering of Applications with Noise
임의 데이터에서 시작하여 가까이 있는 점들을 같은 클러스터로 정의
k-means 대비 클러스터 수의 지정이 필요가 없는 장점
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps = 0.2, min_samples = 10, metric = 'euclidian').fit_predict(data)
# eps : 거리 정의
# min_samples : 클러스터 중심 데이터가 이웃해야 하는 데이터 개수