본문 바로가기

Upstage AI Lab 2기

Upstage AI Lab 2기 [Day067] ML Advanced - CH02. 파생 변수 생성 ~ CH03. 변수 선택

Upstage AI Lab 2기
2024년 3월 19일 (화) Day_067

  • 오늘의 todo
  • [ o ] 데이터 전처리 수업 내용 정리
  • [ o ] 파생변수 실습 (1) - 남은 10분
  • [ o ] 파생변수 실습 (2)
  • [ o ] 파생변수 선택 (이론)
  • [ ] 파생변수 선택 (실습)

 

CH02. 파생 변수 생성

도메인에 기반하여 생성!
(변수 생성으로 끝나는 것이 아니라 로직이 중요)

변환 함수변환
스케일링
구간화
기타변수
변수간 관계 활용 상호작용 변수
통계 기반 변수

성능적 관점

해석적 관점

메모리 관점

 

  • 변환
    • 함수변환 
    • 스케일링
    • 구간화
    • 기타변수 : 분할(split) / 시간변수(시간요소 분리 추출 or time delta)
      pd.to_datetime()
      dt.year / dt.month / dt.day
  • 변수간 관계 활용
    • 상호작용 변수 - 변수 결합 : 변수 도출의 객관성이 중요
      .apply(lambda x : 1 if x > 0 else 0)
    • 통계 기반 변수 : 평균, 중앙값, 최대, 최소 등. 상대적인 위치 표현도 가능. but 다중공선성 주의
      df["loan_date_diff"] = (df["loan_end"] - df["loan_start"]).dt.days

 

CH03. 변수 선택

변수 선택의 의미 : 기존 변수와 생성한 파생 변수 중 일부만 선택하겠다.

변수 선택의 목적 :

  • 과적합/차원의 저주 방지 → 성능 ↑
  • 학습/추론 속도 ↑
  • 메모리 ↓ (배포)
  • 데이터 수집 비용 ↓

 

중요도의 정의 및 평가 방법·기준에 따른 변수 선택 방법론

    장점 단점
filter method 변수들간 통계적 관계
(상관관계, 분산 등)
   
wrapper method ML 모델의 성능    
embedded method 모델이 변수의 중요도 설정
(Feature Importance -  트리기반)
   

 


1. filter method : 통계적 관계(상관관계, 분산 등)를 기반으로 변수의 중요도를 결정

주의 : 학습의 결과가 변수 선택에 영향을 미치지 않음

상관관계가 높은 것 제거 - 상관관계가 높은 변수1과 변수2가 있다면 변수1로 변수2를 유추 가능

분산이 낮은 것 제거 - 변동성이 낮음 - 설명력이 낮음

다른 방법들보다 상대적으로 빠르게 계산 가능

 

1-1 상관계수 기반 선택 - 두 연속형 변수간 비교

두 연속형 변수간 correlation이 높은 변수들 중 선택해서 제거

 

1-2 카이제곱 테스트 기반의 변수 선택 - 두 범주형 변수간 비교

target 변수와 독립변수간 관계가 있는지 p-value를 확인해 유의수준이 낮은 변수 제거

과정 1. Y-X에 대해 카이제곱통계량 계산

과정 2. 카이제곱 통계량 -> p-value 계산


2. wrapper method - 모델 성능 기준

★ 모델학습의 결과가 변수 선택에 영향

최적의 변수 조합를 찾는 방식 - but 여러번 반복작업이 필요하기 때문에 속도가 느림

 

2-1. Forward Selection (Sequential Feature Selection) - 꽤 좋은 성능을 보장하긴 함.

2-2. Backward Elimination (Recursive Feature Elemination)

 


 

3. embedded method

훈련과정에서 모델이 자체적으로 변수 중요도 평가

- 트리모델의 feature importance 기반

- 규제(regularization) - l1, l2 등

=> 모델의 특성 잘 반영, 변수의 중요도와 모델의 복잡성을 동시에 고려 가능

 

3-1. Feature Importance 기반

node split의 기준은 gini 계수 또는 entropy

대략적인 설명 : node split의 기준으로 변수가 몇 번 사용되는지....?

상대적으로 Feature Importance가 낮은지 높은지

트리의 순도가 높은(불순도가 낮은) 분할을 만드는 feature -> 중요도가 높음

gini 계수 : 

엔트로피 : 

(수식 그려서 넣기)

gini계수와 entropy를 낮추는게 중요하고 계수를 낮추는 변수가 트리의 분할 기준이 된다.

 

 

 

 

 

 

Permutation Importance

 

 

 

 

Target Permutation

 

 

 

 

 

Adversarial Validation