2022/04/11

jungkwanlee·2022년 4월 11일
0

코딩일지

목록 보기
14/108

1) 학습한 내용

Preprocessing(전처리)

데이터 전처리(Data Preprocessing)
      -데이터를 분석하기 용이하게 고치는 모든 작업
      -데이터 사이언스 전 과정에서 알고리즘 자체를 수행하는 것보다 더 많은 시간을 데이터 전처리 과정에서 소모하며 일반적으로 프로젝트 시간의 80~90%를 소모한다.
ㅁ 알고리즘이나 파라미터가 잘못된 경우에는 지속적인 실험으로 문제를 찾아서 개선해 나갈 수 있지만, 데이터 자체가 잘못된 경우에는 실험 결과가 개선되지 않음.

데이터의 경우 다음과 같은 문제점들이 있을 수 있다.
-결측치: 중요한 데이터가 빠져 있다.
-데이터 오류 : 잘못된 데이터가 입력되어 있다.
-이상치: 값의 범위가 일반적인 범위에서 벗어나 있다.
-데이터 형식: 데이터 형식이 분석하기에 적합하지 않다.
-범주형 데이터: 범주형으로 표현되어야 하는 데이터가 다른 형태로 되어 있다.

ㅁ 이를 해결하기 위해서 사용되는 대표적인 데이터 전처리 기법
- Scaling
- Sampling
- Dimensionality Reduction
- Categorical Variable to Numeric Variable

Scaling

변수의 크기가 너무 작거나 너무 큰 경우 결과에 미치는 영향력이 일정하지 않을 수 있음.-> 변수의 크기를 일정하게 맞추어 주는 작업 scikit-learn의 대표적인 스케일림 항수

- Min-Max 스케일링
- z-정규화를 이용한 Standard 스케일링
Min-Max 스케일리을 하면 범위가 0~1 사이로 변경된다. 이렇게 하는 이유는 특정 값들이 전체에 미치는 영향을 줄여서 모든 값들이 단위 크기와 상관없이 중요한 영향력을 가질수 있게 하기 위함이다. 즉, 전체적인 수치를 '1'기준으로 비율이 조정되기 때문에 모든 Feature들이 같은 조건에서 학습 될 수 있게 하는 기법이다.
ex)
from sklearn.preprocessing import MinMaxScaler
    mMscaler = MinMaxCaler()
    
    mMscaler.fit(data)
    
    mMscaled_data = mMscaler.transform(data)
    mMscaled_data = pd.DataFrame(mMscaled_data, columns=data.columns)

아래는 위에 사용되는 공식이다.

data = (data - np.min(data)) / (np.max(data) - np.min(data))

Min-Max 스케일링

Standard Scaling
z-score 라고 부르는 데이터를 통계적으로 표준정규분포화 시켜 스케일링 하는 방식
-데이터의 평균이 0,
-표준 편차가 1이 되도록 스케일링 함.

사용하는 방식은 Min-Max Scaling과 동일

Sampling

-샘플링을 하는 이유는 클래스 불균형 문제를 해결하기 위함.
-클래스 불균형 문제란,
분류를 목적으로 하는 데이터 셋에 클래스 라벨의 비율이 균형적으로 맞지 않고 한쪽으로 치웉치게 되어 각 클래스의 데이터를 학습하기 어려워지는 경우

샘플링의 두가지 방법
- 적은 클래스의 수를 증가시키는 오버샘플링 많은 클래스의 수를 감소시키는 언더샘플링

랜덤 오버, 언더샘플링

ㅇ 가장 쉽게 샘플링 하는 방법은 임의로 데이터를 선택, 복제 혹은 제거하는 방식을 사용 할 수 있지만 이런 경우 아래와 같은 문제점이 있다.

-복제하는 경우, 선택된 데이터가 많아지게 되면서 데이터 자체가 과접합 될 수 있음.

-제거하는 경우, 데이터셋이 가지고 있는 정보 자체의 손실이 생길 수 있음

ㅇ 샘플링 알고리즘은 imblearn에서 제공

SMOTE(Synthetic Minority Oversampling Technique)

임의 Over,Under샘플링은 데이터 중복으로 ㅇ니한 과적합 문제와 데이터 손실의 문제가 있어 그런 문제를 최대한 해결할 수 있는 방법으로 SMOTE 알고리즘이 제시 됨.
-SMOTE알고리즘은 수가 적은 클래스의 점을 하나 선택해 k개의 가까운 데이터 샘플을 찾고 그 사이에 새로운 점을 생성하는 방식
-SMOTE의 장점은 데이터 손실이 없고 과적합을 완화 시킬 수 있음.

SMOTE를 테스트해 보기 위해서 전복 데이터 셋 사용

-전복 데이터 셋은 imblearn 라이브러리의 over_sampling 패키지에 포함되어 있음
-전복 데이터 셋은 1000개의 데이터 샘플이 5:15:80의 비율로 되어 있고, 2차원 데이터가 생성됨.

Dimensionality Reduction

차원의 저주

차원의 저주는 저차원이 아닌 고차원에서 데이터를 분석하거나 다룰 때 발생한다.

원인
-고차원으로 올라갈수록 공간의 크기가 증가
-공간의 크기가 증가할 경우, 데이터가 존재하지 않는 빈공간이 생김
-이런 빈공간들이 데이터를 해석할 때 문제를 일으킨다.

해결법

-데이터의 차원이 불필요하게 큰 경우에는 필요 없는 변수를 제거하고 과적합을 방지하기 위해서 데이터 차원을 축소한다.

-과적합의 이유 말고도 높은 차원의 데이터는 사람이 해석하기에도 어려움이 있어 차원을 축소하는 작업을 하기도 한다.

Categorical Variable to Numeric Variable


데이터 전처리의 필요성
ㅇ 범주형 데이터란 차의 등급을 나타내는 소형, 중형, 대형과 같이 범주로 분류될 수 있는 변수를 의미
ㅇ 범주형 데이터는 주로 데이터 상에서 문자열로 표시되는데 문자와 숫자가 매핑 되는 형태로 표현되기도 함
ㅇ 컴퓨터가 data를 활용하여 모델화하고 학습하기 위해서는 data를 모두 수치화 해야함.
ㅇ 수치화
- Label Encoding
- One-hot Encoding

Label Encoding

Label Encoding은 n개의 범주형 데이터를 0 ~n-1의 연속적인 수치 데이터로 표현함 Label Encoding은 간단한 방법이지만 문제를 단순화 시킬 수 있음.

One-hot Encoding

ㅇ One-Hot-Encoding은 n개의 범주형 데이터를 n개의 비트 벡터로 표현함. ㅇ 위의 예처럼 고양이와 개 그리고 얼룩말을 표현하기 위해서는 3개의 비트가 필요 ㅇ One-hot encoding은 서로 다른 범주에 대해서는 벡터 내적을 취했을 때, 내적이 0이 나게 되면서 서로 다른 범주는 독립적이라는 것을 표현하게 함.
비지도 학습 -기계학습의 일종으로, 데이터가 어떻게 구성되었는지 알아내는 문제의 범주 -이 방법은 지도학습 혹은 강화학습 과는 달리 입력값에 대한 목표치가 주어지지 않음 -비지도 학습은 통계의 밀도추정과 깊은 연관이 있음, 이러한 비지도 학습은 데이터의 주요 특징을 요약하고 설명할 수 있음. 예) 클러스터링, 독립 성분 분석
클러스터링(군집) 크게 계층적 군집과 Point Assignment clustering 두 가지 방법으로 나뉠 수 있다.

k-Means Clustering

각 클러스터에 할당된 데이터 포인트의 평균 좌표를 이용해 중심점을 반복적으로 업데이트 하여 클러스터를 형성하는 알고리즘
단계적으로
1) 각 데이터 포인트에서 가장 가까운 중심점을 찾아 그 중심점에 해당되는 클러스터 할당
2) 할당된 클러스터를 기반으로 새로운 중심점 계산, 이 때 중심점은 클러스터 내부 점들의 좌표의 산술 평균
3)각 클러스터의 할당이 바뀌지 않을 때까지 반복
-Mnahattan Distance - 각 축에 대해 수직으로만 이동하는 방식

-Euclidean Distance - 점과 점사이의 가장 짧은 거리를 계산하는 거리 측정방식

Hierarchical Clustering

Hierarchical Clustering은 거리 또는 유사도를 기반을 클러스터를 형성하는 알고리즘
Hierarchical Clustering 진행 단계

1) 각 데이터 포인트를 클러스터로 할당(n개의 클러스터)
2) 가까운 클러스터끼리 병합
3) 1개의 클러스터가 될 때까지 반복

Hierarchical Clustering의종류

Single Linkage - 두 클러스터 내의 가장 가까운 점 사이의 거리

Complete Linkage - 두 클러스터 내의 가장 먼 점 사이의 거리

Average Linkage - 두 클러스터 내의 모든 점 사이의 평균 거리

2) 학습내용 중 어려웠던 점

어려운 점은 구글코랩과 아나콘다에 사용되는 문법이다. 파이썬을 기반으로 한다고는 하지만 그걸 제대로 알아야 할 필요가 있다.

3) 해결방법

결국 연습과 반복이 실력을 늘리는 비결이다.

4) 학습소감

이번 수업은 대체적으로 무난했었으나 강사가 중간에 수업과 상관없는 말을 한것이 옥의 티다.

0개의 댓글

관련 채용 정보