본문 바로가기
프로젝트/농진청

데이터 전처리

by 스꼬맹이브로 2023. 5. 2.
728x90
반응형
SMALL

기계학습을 위한 데이터 전처리 방법들 (feat. 사이킷런)

  • 이상치 및 결측치 대체 방법
    1. 0으로 대체
      np.isnan à np.nan_to_num
    2. 평균값 or 중앙값 or 최빈값으로 대체
      sklearnSimpleImputer 클래스 활용
    3. 회귀 대체
      IterativeImputer 클래스 및 LinearRegression 활용
    4. KNN 대체
      KNNImputer 클래스 활용
  • 이상치 탐지 방법
    • 이상치는 데이터 분석을 방해하거나 잘못된 결론을 내리는 원인이 될 수 있음
    • 이상치를 찾아내어 제거하거나 대체함으로써, 데이터 분석 결과의 신뢰성을 향상
이상치 탐지 특징 ​ 코드​
Isolation Forest 데이터 포인트들을 분리하기 위한 트리를 생성
- 각 데이터 포인트가 얼마나 적은 트리를 통과하는지를 이용하여 이상치를 탐지하는 방법
from sklearn.ensemble
import
IsolationForest
Local Outlier
Factor (LOF)
각 데이터 포인트를 기준으로 가까운 이웃들의 밀도(density)를 이용하여 이상치를 탐지하는 방법
- LOF 값이 1보다 큰 데이터 포인트는 이상치로 판별
from sklearn.neighbors
import
LocalOutlierFactor
One-Class SVM 특정 클래스에 속하는 데이터가 주어졌을 때, 해당 클래스에 대한 결정 경계(decision boundary)를 찾는 방법
- 이상치는 결정 경계에서 멀리 떨어져 있는 데이터 포인트로 판별
from sklearn.svm
import
OneClassSVM
Elliptic Envelope - 데이터가 타원형 분포를 가진다고 가정하고, 이 분포로부터 벗어난 데이터 포인트를 이상치로 판별 from sklearn.covariance
import
EllipticEnvelope
  • 정규화 방법
    • 피처(feature)마다 데이터 값의 범위가 다 다르므로 범위 차이가 클 경우 0으로 수렴 또는 무한으로 발산할 가능성이 있음​
    • 데이터 스케일링을 통해 모든 피처(feature)의 데이터 분포나 범위를 동일하게 조정
데이터 스케일링​ 특징 ​ 코드​
Standard Scaling​​ 모든 피처들을 평균이 0, 분산이 1인 정규분포를 갖도록 함​
데이터 내에 이상치가 있다면 데이터의 평균과 분산에 크게 영향을 주기 때문에 스케일링 방법으로 적절하지 않을 수 있음​
from sklearn.preprocessing import StandardScaler
Min-Max Scaling 모든 피처들이 0과 1사이의 데이터값을 갖도록 함​
- 이상치가 존재한다면이상치가 극값이 되어 데이터가 아주 좁은 범위에 분포하게 되기 때문에 스케일링 방법으로 적절하지 않을 수 있음​
from sklearn.preprocessing import MinMaxScaler
MaxAbs Scaling 모든 피처들의 절댓값이 0과 사이에 놓이도록 만듦​
- 0을 기준으로 절댓값이 가장 큰 수가 1또는 -1의 값을 가지게 됨​
이상치의 영향을 크게 받기 때문에 이상치가 존재할 경우 이 방법은 적절하지 않을 수 있음​
from sklearn.preprocessing import MaxAbsScaler
Robust Scaling (StandardScaler와 비슷)​
StandardScaler는 평균과 분산을 사용했지만 RobustScaler는 중간값(median)과 사분위값(quartile)을 사용​
from sklearn.preprocessing import RobustScaler
Normalizing - Normalizer 의 경우 각 (row)마다 정규화가 진행됨 (다른 스케일링의 경우열 단위)​
- 한 행의 모든 피처들 사이의 유클리드 거리가 1이 되도록 데이터값을 만듦​
from sklearn.preprocessing import Normalizer
  • 변수 선택 방법
    •  
    • 변수 선택은 과적합 방지, 모델 성능 향상, 계산 시간 단축 등의 이유로 필요함.
데이터 스케일링​ 특징 ​ 코드​
SelectKBest - k개의 최상의 변수 선택 from sklearn.feature_selection import SelectKBest
SelectPercentile 지정한 백분율의 변수 선택 from sklearn.feature_selection import SelectPercentile
Recursive Feature Elimination (RFE) - 재귀적으로 변수를 제거하며, 제거 후 남은 변수만을 사용하여 모델을 학습하고 평가
- 이후 모델 성능이 가장 높은 변수들을 선택
from sklearn.feature_selection import RFE
Tree-based feature selection - 의사결정나무(Decision Tree) 기반으로 변수를 선택 from sklearn.ensemble import RandomForestClassifier
  • 차원 축소 방법
    • 분석을 위한 데이터 전처리 과정에 사용되는 기술 중 하나​
    • 많은 피처로 구성된 다차원의 데이터셋의 차원을 축소하여 새로운 차원의 데이터셋을 생성
데이터 스케일링​ 특징 ​ 코드​
PCA()
N차원의 데이터 공간에서 가장 분산이 큰 방향의 k차원으로 이동(mapping)
분산이 큰 방향은 데이터 scale에 민감하므로 PCA를 적용하기 전 표준화 작업이 선행되어야 함
From​
sklearn.decomposition
Import PCA
LDA()
PCA와 유사한 방법론​
PCA는 비지도학습 계열인 반면, LDA는 Target에 대한 정보가 필요한 지도학습 계열에 속함.
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis ​
as LDA
KernalPCA()
주어진 데이터에서 바로 차원을 축소하면 분류가 쉽지 않은 경우가 발생​
비선형 케이스들은 먼저 고차원으로 mapping한 후분류가 가능한 차원으로 변형하여 다시 차원을 축소​
많이 활용되는 kernal​(다항 커널​, 시그모이드 커널​, 가우시안 커널​)
From​
sklearn.decomposition
Import KernalPCA
  • 이상치 탐지 방법
    • 이상치는 데이터 분석을 방해하거나 잘못된 결론을 내리는 원인이 될 수 있음
    •  
      이상치들을 찾아내어 제거하거나 대체함으로써, 데이터 분석 결과의 신뢰성을 향상
이상치 탐지 특징 ​ 코드​
Isolation Forest 데이터 포인트들을 분리하기 위한 트리를 생성
- 각 데이터 포인트가 얼마나 적은 트리를 통과하는지를 이용하여 이상치를 탐지하는 방법
from sklearn.ensemble
import
IsolationForest
Local Outlier
Factor (LOF)
각 데이터 포인트를 기준으로 가까운 이웃들의 밀도(density)를 이용하여 이상치를 탐지하는 방법
- LOF 값이 1보다 큰 데이터 포인트는 이상치로 판별
from sklearn.neighbors
import
LocalOutlierFactor
One-Class SVM 특정 클래스에 속하는 데이터가 주어졌을 때, 해당 클래스에 대한 결정 경계(decision boundary)를 찾는 방법
- 이상치는 결정 경계에서 멀리 떨어져 있는 데이터 포인트로 판별
from sklearn.svm
import
OneClassSVM
Elliptic Envelope - 데이터가 타원형 분포를 가진다고 가정하고, 이 분포로부터 벗어난 데이터 포인트를 이상치로 판별 from sklearn.covariance
import
EllipticEnvelope
728x90
반응형
LIST

'프로젝트 > 농진청' 카테고리의 다른 글

pandas요약  (0) 2022.11.01
ssh 접속 실패 원인들  (0) 2022.01.24