728x90
반응형
SMALL
기계학습을 위한 데이터 전처리 방법들 (feat. 사이킷런)
- 이상치 및 결측치 대체 방법
-
0으로 대체np.isnan à np.nan_to_num
-
평균값 or 중앙값 or 최빈값으로 대체sklearn의 SimpleImputer 클래스 활용
-
회귀 대체IterativeImputer 클래스 및 LinearRegression 활용
-
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과 1 사이에 놓이도록 만듦 - 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 |