데이터 분석

Sylen·2024년 5월 21일

Dive to Machine Learning

목록 보기
1/12
post-thumbnail

Data Cleaning

Missing Value 처리

  • Zero 비율이 0.95 이상인 경우 -> 분석에 의미가 없으므로 drop
  • 독립변수 간 상관관계가 높은 경우 -> 다중공선성 의심

Class Imbalance

  • Class Imbalance 체크 -> 비율이 0.9 이상인 경우, 샘플링 고려
  • 실제 데이터는 Imabalance 하므로, 데이터를 drop하기 보단 밸런스를 맞출 수 있는 방법을 사용
  • 데이터의 분포를 유지하면서 샘플링

Feature Engineering

Encoding

  • 컴퓨터는 정보의 개념이 없다.
  • 문자, 카테고리 데이터를 모두 숫자로 변환해야 함

Label Encoding

  • 알파벳 순서대로 숫자를 할당

One-Hot Encoding

  • 등장하는 데이터의 사전을 만들고, 이진수와 유사하게 표현

이산화

  • 연속형 변수는 왜도가 높거나 정규분포가 아닐 가능성이 높음
  • 데이터에 따라 변수의 값들을 몇 개의 그룹(Bin)으로 나누는게 효율적
  • 왜도가 작은 경우, |왜도| < 1 = 동일 너비 분할 (Equal Width Binning)
  • 왜도가 큰 경우, |왜도| > 1 = 동일 빈도 분할 (Equal Frequency Binning)

Scaling

  • 확률에서 연산은 곱셈연산이 많기 때문에 값의 범위가 클 경우, 너무 값이 커져서 연산 결과가 발산할 위험
  • MinMaxScaler, MaxABS Scaler, Standard Scaler, Robust Scaler

Transforming

  • 데이터 셋의 분포를 변화시키는 것
  • 선형회귀, 가우시안 나이브베이즈 같은 ML알고리즘은 연속형 변수에 대한 정규분포를 가정하는 경우가 많음
  • 정규분포가 아닌 변수들을 Power Transforming을 사용하여 정규분포 또는 정규분포에 가까운 데이터로 변환 가능
  • 변수에 0과 음수가 없는 경우 -> Box-Cox Transforming
  • 변수에 0과 음수가 포함된 경우 -> YeoJohnson Transforming

Extracting

  • 시계열 데이터에서 특징변수 추출 -> 날짜형 데이터에서 년,월,일,요일,주말여부,휴일여부 등을 추출
  • 구간별 평균 합계, 기울기 등 구하기
  • Convolution으로 데이터를 원하는 형태로 추출하기

Feature Selection

  • 패턴이 가지고 있는 다수의 특징 중, 당면한 결정을 하는데 필요충분하다고 생각되는 소수의 특징만 골라내는 것

운영적 관점
1) 적재하는 데이터의 양이 적어지므로 시스템을 운영하는 비용 감소
2) 적은 변수를 사용할 경우, 그렇지 않는 경우보다 시스템의 속도가 빨라짐

통계적 관점
1) 데이터에 대한 해석력을 높여줌
2) 다중공선성의 문제에 대한 해결책으로 차원 축소를 이용할 수 있음
3) Robust 모델로 예측력의 향상을 기대할 수 있음 - Bias, Over Fitting 방지

상관분석

  • 두 변수가 얼마나 밀접하게 관련되어 있는지 알아보는 통계적 평가방법
    -> 상관계수가 매우 높을 때, 해당 독립변수가 종속변수에 유의미하다고 판단함

Pearson Correlation

: 공분산을 활용하여 이를 표준화 한 상관계수

Spearman Correlation

: 값의 Scale은 무시하고, X와 Y의 순위좌표로 전환하여 계산 (이상치에 대한 영향 감소)

Linear Model

  • Linear Model을 활용한 Feature Selection은 전체 P-Value가 일정 수준보다 작아질 때 까지 p-value가 큰 변수를 제거하는 방법
    -> p-value는 X값과 Y값이 우연히 발생할 확률을 의미 -> 낮은 값일 수록 우연일 확률이 낮음

  • 모든 X에 대해 P-Value를 계산하고 각 스텝마다 p-value가 가장 높은 X를 제거 (반복)

Feature Importance

📢 Feature Importance은 예측에 가장 큰 영향을 주는 변수를 Permutation하며 찾는 기법
Feature간 상관관계가 존재하지 않는 경우에는 사용을 지양

  • Permutation Importance, SHAP 등이 사용됨

  • SHAP (Shapley Additive exPlanation) : 모든 가능한 조합에 대해 하나의 Feature의 기여도를 종합적으로 합한 값

Sampling

Undersampling

데이터 내 클래스 비율이 Imbalance할 경우, 타겟의 모수가 많은 쪽을 줄이는 기법

  • Random Undersampling : 지정한 종속변수의 Category 중 비율이 적은 Category를 기준으로 비율이 높은 Category의 데이터를 Random한 방법으로 제거
  • Near Miss Undersampling : Near-Miss 알고리즘을 사용하여 데이터를 제거, 제거할 대상을 선정하기 위해 이웃한 근접데이터 간의 거리를 계산하기 떄문에 오래 걸림
  • Tomek Links : 데이터의 중심 분포를 거의 유지하면서 분류 경계를 조정하기 때문에 제거되는 샘플이 한정적 -> Undersampling의 효과가 낮음 | 모델의 학습효과를 늘리기 위한 샘플링
  • ENN(Edited Nearest Neighbours) : 다수 클래스 데이터 중 가장 가까운 (Nearest Neighbours) k개의 데이터가 모두 다수 클래스가 아니면 삭제하는 방법 -> 소수 클래스 주변의 다수 클래스 데이터 삭제 | 모델의 학습효과를 늘리기 위한 샘플링

Oversampling

  • 데이터 내 클래스 비율이 Imbalance할 경우, 타겟의 모수가 많은 쪽을 줄이는 기법 (Random, SMOTE 등)

  • Random : Undersampling과 반대로 비율이 낮은 데이터를 Random으로 복제하여 데이터의 양을 늘림

  • SMOTE(Synthetic Minority Oversampling Technique) : 무작위로 선택한 데이터에 KNN을 수행, 수행한 X(KNN)와 X의 사이에 위치한 가상의 데이터를 생성
    -> SMOTE는 비율이 낮은 데이터도 생성하지만 높은 데이터도 생성할 수 있음

Combination

  • 실전에서는 한가지 방법만 시도하지 않음
  • SMOTE ENN : SMOTE+ENN 을 조합, SMOTE를 통해 소수 클래스 데이터를 Oversampling하고 ENN을 통해 다수 클래스의 데이터를 언더샘플링 하는 방법
  • SMOTE TOMEK : SMOTE를 통해 소수 클래스 데이터를 오버샘플링하고 TOMEK을 통해 다수 클래스의 데이터를 언더샘플링 하는 방법

Regression

장점

  • 모델이 간단하여 학습시간이 짧음
  • 선형데이터에 적합
  • 직관적 해석이 가능

단점

  • 비선형 데이터에 부적합
  • 다차원 데이터의 경우 결과의 신뢰도가 낮음

방법

Simple Linear RegressionPolynomial RegressionLogistic Regression

Classification

  • Regression이 데이터를 가장 잘 표현하는 함수를 찾는 방법이라면, Classification은 데이터를 가장 잘 나누는 함수를 찾는 방법

SVM(Support Vector Machine)은 Binary Classification 문제에 좋은 성능을 보이는 알고리즘. 2개 클래스의 데이터를 가장 잘 나눌 수 있는 경계를 찾는 알고리즘

SVMBinary vs MultiClass classificationOne Class Classification

Clustering

  • 비슷한 특성을 가진 데이터들을 하나의 그룹으로 묶는 작업
    : 특성의 유사도를 판단하는 기준 : Distance, Connectivity, Distribution, Density, ETC.

좋은 Clustering의 기준은?

  • 같은 클러스터 내의 데이터는 서로 높은 유사도를 나타내야 함
  • 다른 클러스터 간의 데이터는 서로 낮은 유사도를 나타내야 함
K-meansDBSCAN vs K-MeansHierachial Clustering

Train_Validation_Test

  1. 전체 데이터를 Train 데이터와 Test 데이터로 나눔
    -> Train 데이터와 Test 데이터는 겹치는 부분이 있으면 안됨
    -> 둘은 가능한한 최대한 독립적인 관계를 갖는 것이 좋음
  2. Train 데이터를 이용해서 다양한 모델을 생성
  3. Test 데이터를 이용하여 생성된 모델을 검증
  4. Test 데이터에서 가장 좋은 성능을 보인 모델을 선택

좋은 모델 선택

-> Valdation 학습과정에서 Unseen data에 대한 성능 측정 가능
-> 학습 과정에서 Overfitting에 대한 감지 가능 -> Early Stop 가능

CrossValidation

  • 결과에 대한 분산을 줄이기 위해 사용하는 기법
    -> K-Fold Cross Validation이 대표적으로 많이 사용됨

  • K-fold Cross Validation?
    -> 전체 데이터를 K개의 fold로 나눔
    -> fold간 데이터는 서로 겹치지 않게 나눠야 함

OverUnderFitting

  • 주어진 데이터를 정확하게 맞춰야 하는 TASK

  • Unknown데이터를 최대한 정확하게 맞춰야 하는 TASK

Model Metric

  • 모델이 잘 학습되었는가를 확인할 수 있는 평가수준이 필요
  • 공통적으로 공감할 수 있는 지표가 필요

분류 척도

  • Accuracy : 분류의 전체적인 정확도
  • Recall : 분류하고자 하는 클래스를 분류하였는지
  • Precision : 분류한 클래스가 제대로 분류하였는지
  • F1 : Recall과 Precision의 조화 평균

병원에 다시 오게 될 사람을 맞추는 문제

  • 실제로 온사람 전체 = 맞춰야 할 정답
  • 적확도 Precision : 올 거로 예측했는데(50) 실제로 온사람(40)

회귀 척도

  • MAE(MEAN Average Error): 실제 값과 예측 값의 차이 평균 (해석하기 어려움)
  • MAPE(Mean Average Percentile Error) : 실제 값과 예측값의 비율차이의 평균
  • MSE(Mean Squared Error) : 실제 값과 예측 값의 차이를 제곱하고 평균
  • RMSE(Root Mean Squared Error) : MSE에 제곱근

특수한 척도

  • 클래스가 명확히 나눠지지 않고 순위로 평가하는 경우 (추천모델)
    Precision@k : 예측한 결과의 상위 K개와 실제 결과의 상위 k개의 매칭 정도
    Recall@k : 예측한 결과 k 개 중에 실제 결과에서 나왔어야 하는 정도

겹치는 정도를 측정하기 위해 사용하는 척도 IOU

데이터 간의 거리를 측정하기 위해 사용하는 척도 Distance(Euclidean,Cosine,Manhattan)

Visualization

모델링 후 성능 모니터링 대시보드 구성
-> 분석가에게 시각화는 뗄래야 뗄 수 없는 도구

  • Histogram(bar chart) : 데이터의 분포 확인
  • Line Chart : 시계열 데이터의 추세, 계절성 확인
  • Pir Chart : 타겟 비율 확인
  • Box Plot : 변수별 최대 최소 사분위수 비교
  • Heatmap : 2개 카테고리 값에 대한 값 변화 모니터링
profile
AI가 재밌는 걸

0개의 댓글