소품집

[알고리즘] Boruta 알고리즘 기반 변수선택 본문

AI

[알고리즘] Boruta 알고리즘 기반 변수선택

sodayeong 2023. 1. 15. 15:34
728x90

Basic

보루타 알고리즘은 랜덤포레스트를 기반으로 변수를 선택하는 래퍼 방법(Wrapper Method)으로 기본적인 아이디어는 기존 변수를 복원 추출해서 만든 변수(shadow)보다 모형 생성에 영향을 주지 못했다고 하면 이는 중요도가 떨어지는 변수로 인식해 제거하는 방법.

Feature selection method

  • Filter Method : 모델링 기법에 의존하지 않고 데이터에 대한 통상적인 특성 예를 들면 상호 정보량, 상관계수로부터 변수 순위를 정하고 가장 높은 순위의 변수들을 선택하는 방법
  • Wrapper Method : 변수의 일부만을 사용해 모델링을 수행하고 그 결과를 확인하는 작업을 반복하여 변수를 선택하는 방법으로, 예측 정확도 측면에서 가장 좋은 성능을 보이는 부분 집합을 뽑아내는 방법. 일반적으로 필터링 방법보다 래퍼 방법의 정확도가 더 높음
  • Embedded Method : 모델링 기법 자체에 변수 선택이 포함되어 있는 방법

랜덤포레스트를 기반으로 변수 선택을 수행한다고 했는데, 랜덤포레스트는 다른 알고리즘과 비교했을 때 상대적으로 빠르며, 모수 튜닝 없이 수행될 수 있고 변수의 중요도를 수치로 산출해 준다는 장점이 있음. 연속형 변수 or 범주가 많은 변수일수록 변수 중요도가 높게 산출되는 단점이 있는데, 이를 개선한 방법이* Permutation Importance : 모델 예측에 영향을 미치는 가장 큰 feature를 뽑는 것.

 

변수의 중요도는 MDI(Mean Decrease in Impurity) 방법으로 특정 변수로 인해 분리되는 노드의 불순도를 계산

  1. classification: 지니계수, 엔트로피 
  2. regression : MSE

Boruta 알고리즘 동작방식 

  1. 모든 변수를 복사 ➔ shadow features or permuted copies. 
    • 원본 데이터의 독립 변수가 5개 미만인 경우 기존 변수를 복사본으로 만들어 5개 이상 만듦.
  2. 복사한 변수를 타겟 변수에 uncorrelated 하게 만들기 위해 랜덤하게 섞고 원 자료와 결합. 
  3. 결합된 데이터와 원 데이터에 대해 랜덤포레스트 모형을 생성하고, Z-score를 계산.
    • [(각 트리에 대한 정확도 손실값 - 전체 트리의 정확도 손실의 평균) / 정확도 손실 표준편차]
  4. shadow 변수들 중 가장 높은 Z-score를 찾는다. (MSZA, Max Z-score among shadow attributes) 
  5. 원 자료에 대한 Z-score > MSZA인 경우 Hit +1 (이는 MZSA보다 클 때 중요한 변수를 표시하는 수단)
    • 통계적으로 유의수준에서 Z-score < MSZA인 경우, 해당 피쳐를 중요하지 않은 피쳐로 드랍한다. 
    • 통계적으로 유의수준에서 Z-score > MSZA인 경우, 해당 피쳐를 중요한 변수로 둔다. 
  6. 위의 과정을 랜덤포레스트가 수행되는 횟수만큼 또는 모든 변수들이 중요한 변수와 중요하지 않은 변수로 tagged 될 때까지 반복.

Point

보루타 알고리즘의 장점은 분류/회귀 모두 잘 적용되며, 랜덤포레스트에서 산출되는 변수 중요도를 개선한 방법이다. 즉, 랜덤포레스트 방법은 수행할 때마다 변수의 중요도가 바뀔 수 있지만, 보루타 알고리즘은 랜덤포레스트를 반복하여 중요도가 변동되는 점을 개선했다. 

또한 all-relevant 방법으로 선택된 변수는 모두 반응변수와 관련성이 있다.

Boruta와 Random Foreset의 변수 선택 알고리즘의 차이점

  • 랜덤 포레스트에서 z-score는 평균 정확도 손실 값을 표준편차로 나누어 계산하고, 모든 변수에 대한 중요도 측정으로 사용됨
  • boruta는 원본 변수와 임의로 생성한 변수로 랜덤 포레스트 모델을 구성하고, 모든 변수의 중요도를 계산함. 

 

 

 

source

https://www.datasciencecentral.com/select-important-variables-using-boruta-algorithm/

 

Select Important Variables using Boruta Algorithm - DataScienceCentral.com

This article explains how to select important variables using boruta package in R. Variable Selection is an important step in a predictive modeling project. It is also called ‘Feature Selection’. Every private and public agency has started tracking dat

www.datasciencecentral.com

https://syj9700.tistory.com/50

 

Boruta 알고리즘

변수 선택은 예측 모델을 만드는데 있어서 중요한 단계이다. 데이터의 변수들을 모두 사용하는 것은 과적합(overfitting)을 발생시킬 수 있으며, 많은 시간과 비용이 든다. 실제로, 많은 머신러닝

syj9700.tistory.com

 

paramater

  • maxRuns : 랜덤포레스트 최대 실행 횟수, default = 100, tentative 변수가 남으면 횟수를 늘려도 됨.
  • doTrace: 0 = 추적하지 않음, 1 = 변수라 판정되면 결과를 즉각 보고함, 2 = 각 반복에서 hit+1을 추가로 보고함. 
  •  holdHistoy : True(dafault) = 중요도를 구하는 모든 과정을 저장하며 ImpHistory 요소를 통해 출력됨. 출력된 결과는 각 반복에 대한 변수의 중요도이며 기각된 변수, 즉 중요한 변수는 -inf로 표시됨. 

https://github.com/sodayeong/Boruta

 

728x90
Comments