전처리

chkkkky·2024년 7월 27일

범주형 변수 인코딩

1. One-Hot Encoding

: 비순서형 범주형 변수

ex) sex, race ..

모델 가정 : 로지스틱 회귀같은 선형 모델은 입력 변수들이 서로 독립적이라고 가정을 하기에 가정 유지하는데 도움이 됨

다중 공선성 방지 : 첫번째 범주 제거, drop_first = True

2. Label Encoding

: 순서형 범주형 변수

ex) 초 -> 중 -> 고 -> 대

트리 기반 모델 : 결정 트리, 랜덤 포레스트, XGBoost와 같은 트리 기반 모델은 label encoding된 변수를 더 잘 처리 할 수 있음
-> 트리기반 모델이 변수 간의 순서를 처리할 수 있기 때문

3. get dummies

: 원-핫 인코딩을 수행하는 함수
: 비순서형 범주형 변수

pandas에서 제공하는 함수
df를 직접다루는데 유용

<< one-hot vs get dummies >>

제공 sklearn pandas
입력데이터 numpy, df df, series
출력 형식 numpy df
파이프라인 통합 가능 어려움

=================================

이상치

Q1 = .quantile(0.25)
Q3 = .quantile(0.75)

IQR = Q3 - Q1

대상이되는 열 < Q1 - 1.5 * IQR

or

대상이 되는 열 > Q3 + 1.5 * IQR

=> 이상치라고 판단

df.drop(이상치.index)

이상치 처리 여부 판단
평균 제곱 오차(MSE)가 향상(감소)되지만 이상값을 제거한 후 R-제곱 점수가 약간 나빠지는 것을 관찰하면 이는 회귀 모델에 대한 이상값의 미묘한 영향을 나타낸다.

최선의 조치를 해석하고 결정하는 방법

MSE 및 R-제곱 이해:

MSE는 관찰된 실제 결과와 모델 예측 간의 평균 제곱 차이를 측정. MSE가 낮을수록 평균 오류가 더 작다는 것을 의미하므로 더 나은 적합성을 나타낸다.
R-제곱은 독립 변수에서 예측 가능한 종속 변수의 분산 비율을 측정. 이는 실제 값에 대한 예측 세트의 적합도를 나타낸다. 그러나 R-제곱이 더 높다고 해서 반드시 모델이 더 좋다는 의미는 아니다.
이상치의 영향:

이상값을 제거하면 대부분의 데이터 포인트에 대해 모델이 더 정확해져서 MSE가 줄어들 수 있다. 그러나 이상치가 데이터의 특정 측면(이상치가 아님)을 나타내는 경우 이를 제거하면 모델의 일반화가 어려워져 R-제곱이 약간 낮아질 수 있다.
결정 기준:

모델 목적: 모델의 목적이 일반적인 사례를 정확하게 예측하는 것이고 이상값이 드물거나 예외적인 경우에는 낮은 MSE에 우선순위를 두는 것이 더 적절할 수 있다.
데이터 표현: 이상값이 실제 값이고 데이터의 중요한 변동을 나타내는 경우 더 높은 MSE에도 불구하고 모든 데이터에서 모델 예측 능력의 무결성을 유지하려면 이상값을 유지해야 할 수 있다.
도메인 지식:

도메인을 이해하면 이상값이 변칙인지 아니면 데이터의 필수 부분인지에 대한 통찰력을 얻을 수 있다. 예를 들어, 부동산에서는 가치가 매우 높은 부동산이 드물지만 여전히 고려해야 할 중요한 자산이다. 대체 접근 방식:
결론적으로 이상값을 제거하거나 유지하는 결정은 통계적 증거, 모델의 목적, 도메인 지식, 모델 사용에 대한 실제 고려 사항의 조합을 기반으로 해야 한다. 모든 경우에 적용되는 일률적인 답변은 없으며, 종종 가장 좋은 접근 방식은 여러 요소를 고려하고 도메인 전문가와 상담하는 것이다.

=================================

다중공선성

독립변수들 간에 높은 상관관계가 있을 때 발생하는 현상

->하나 또는 그 이상의 독립변수와 선형적으로 매우 밀접하게 관련되어있음을 의미
  • 문제점:
  1. 계수 추정의 불안정성 : 회귀 계수(회귀 모델에서 독립 변수의 가중치)의 추정치가 불안정하게 되어,

    작은 데이터 변경에 의해 추정치가 크게 변동될 가능성

  2. 해석의 어려움 : 개별적으로 분리하여 해석하기 어려움

    -> 어떤 변수가 종속 변수에 미치는 영향을 파아갛기 어려움

  3. 과적합 : 새 데이터에 대해서는 예측 성능 떨어질 수도

  • 진단:
  1. 분산팽창인자 : VIF는 독립변수가 다른 독립변수에 의해 얼마나 설명되는지를 측정하는 지표

-> 10이상일시 높은 다중공산성으로 판단

  1. 상관 행렬 : 0.8 이상
  • 해결법:
  1. 차원 축소

  2. 변수 제거

  3. 릿지,라쏘 회귀 : 정규화 기법 사용

    ===============================

차원 축소

  1. PCA

    데이터의 공분산 행렬을 이용하여 주성분을 찾고, 데이터의 분산을 최대한 보존하면서 차원을 축소

    -> 공분산 행렬의 고유값과 고유벡터를 찾아서 고유벡터를 주성분으로 사용하여 데이터를 변환

    => 데이터의 변동성을 설명하는데 직관적

  1. SVD

1) svd

행렬을 세 개의 행렬의 곱으로 분해하는 방법으로 원본 정보가 보존되며 행렬의 구조 분석이 가능

=> 차원 축소 외에도 데이터 압축, 노이즈 제거 등에 사용

2) truncatedsvd

상위 k개의 특이값만을 사용하여 데이터의 근사치를 구함

-> 데이터의 주요 정보를 보존하면서 차원을 축소

=> 대규모 데이터에 대해 계산 효율성이 좋음

  1. NMF

비음수 행렬 W와 H를 사용하여 원래 행렬 V를 근사하는 방법

-> 비음수 제약으로 인해 데이터의 구성 요소를 직관적으로 해석

=> 주로 이미지, 텍스트 데이터에서 특징 추출 및 차원 축소에 사용

  1. 선형대수식

  2. LDA

    pca와 유사하나 입력 데이터의 결정값 클래스를 최대한 분리할 수 있는

    축을 찾는 방식으로 차원축소함

    1 축소할 열 선택(df)
    2 standardscaler
    3 PCA, TruncatedSVD,NMF

    원하는 요소 수만큼 (n_components)

    ex) pca = PCA(n_components=2)

    4 스케일링 한 데이터에 차원축소

    ex) pca.fit_transform(스케일링 한 데이터)

    5 원래 데이터와 합침

0개의 댓글