ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [머신러닝] feature importance 의 특징과 장단점
    머신러닝 배우기 2023. 12. 4. 11:44

    보통 트리 기반의 모델을 학습한 후 feature importance 를 확인하는 코드를 많이 보셨을 겁니다! 직관적으로도 알 수 있듯 특성의 중요도를 나타내는 지표입니다. 뜻이 너무 직관적이기 때문에 오히려 자세히 알아보지 않고 넘어가는 경우가 많습니다. 하지만 feature importance의 특징을 통해 머신러닝의 특징까지 확장하여 개념을 단단히 할 수 있다는 사실! 오늘은 그런 feature importance 라는 지표에 대해 정확하게 알아보겠습니다!

     

    ▶︎ Feature Importance 란?

    : 머신 러닝 모델에서 독립변수가 종속 변수에 영향을 미치는 정도를 나타내는 지표

    : 모든 변수들이 정규화된 Linear Model에서는 y = a₁x + ax + a₃x₃ + ・・・ + b 변수들의 앞에 있는 계수의 크기로 변수의 중요도를 파악할 수 있습니다. 계수의 절댓값의 크기가 클수록 중요합니다! (릿지 라쏘 회귀에서도 계수의 크기로 변수 중요도를 판단)

    : 일반적으로 트리 기반 모델(Decision Trees, Random Forests, Gradient Boosted Trees 등)에서 자주 사용합니다. 왜냐하면 트리 모델은 하나의 노드에서 변수를 어떠한 기준을 가지고 나누어서 분할을 시키는데 잘 분할시킬수록 중요한 변수이므로 여러 방법을 통해 이 중요도를 계산합니다.

     

    ▶︎ Feature Importance 측정법

    : Linear Model에서는 훈련 데이터와 예측값 사이의 오차를 최소화하는 방향으로 가중치를 조절합니다. 일반적으로 평균 제곱 오차(Mean Squared Error, MSE)나 L2 norm 을 최소화하는 방향으로 학습을 합니다. 최적화 알고리즘(예: 경사 하강법)을 사용하여 이러한 비용 함수를 최소화하면서 가중치를 업데이트합니다. 

    : 변수들을 정규화하지 않아도 되고, 모델이 너무 복잡하여 과적합되는 것을 방지하기 위해, L1 규제(모델의 복잡도를 조절하기 위해 모델의 가중치(w)에 대한 패널티를 부여하는 방법)를 사용하는 LASSO 회귀가 있습니다. L1 규제를 사용하므로 좌표 경사 하강법(coordinate gradient descent)과 같은 최적화 알고리즘을 사용할 때, 가중치를 정확하게 0으로 만들기도 합니다. (깊숙히 들어가면 Ridge 회귀도 있지만, 어떤 규제를 선택할지는 주어진 문제의 특성과 데이터에 따라 다르며, 변수 선택이 중요한 경우에는 라쏘 회귀가 유용할 수 있습니다. Ridge 회귀는 변수 간의 상관관계가 큰 경우나 특정 변수를 강조하고 싶은 경우에 사용되고 종종 두 규제를 결합하여 Elastic Net이라는 모델도 사용됩니다.)

    : 기본적인 트리 기반 모델에서는 노드에서 특성으로 분할할 때, 불순도 점수의 평균 감소량을 측정하여 얼마나 노드를 깔끔하게 분할했는지를 나타냅니다. 불순도 점수는, 보통 Gini Impurity나 Entropy 등으로 측정합니다. 이들을 사용하여 Information Gain을 측정하는데, 현재 노드의 불순도에서 자식 노드들의 가중 평균 불순도를 뺀 값으로, 불순도가 작아질수록 Information Gain은 높아집니다. 의사결정 트리는 각 분할에서 불순도 감소(Information Gain 최대화)를 목표로 하고, 이를 통해 데이터를 더 잘 구분할 수 있는 특성과 분할점을 찾습니다. 이 과정을 반복하여 트리를 구성하게 됩니다. 

     

    하지만!! 모델 마다, 측정법마다 변수 중요도의 순서가 달라질 수 있습니다 (즉, 재현성이 보장되지 않습니다!)

    : 사용하는 모델은 알고리즘 계산식도, 분할 기준도, 하이퍼파라미터도 다를 수 있기 때문에 이러한 차이로 변수의 중요도가 달라질 수 있습니다.
    : 변수 중요도를 측정하는 방법에는 여러가지가 있는데 즉, Gini Impurity, Entropy, Permutation Importance 등 어떠한 측정법을 사용하는지에 따라 차이가 발생할 수도 있습니다.

    : 그래도 재현성의 차이를 줄이고 싶으면 (이러한 노력을 기울여도 완전한 재현성을 보장하기는 어렵습니다. 왜냐하면 변수 중요도는 모델의 내부 동작에 대한 지표이며, 이는 모델의 학습 데이터와 학습 과정에 민감하기 때문입니다.)

    • 랜덤 시드 고정: 일부 모델에서는 랜덤한 요소가 사용될 수 있습니다. 랜덤 시드를 고정하여 항상 동일한 결과를 얻을 수 있습니다.
    • 앙상블 모델 사용: 여러 모델의 예측을 결합한 앙상블 모델을 사용하면 일부 불안정성을 줄일 수 있습니다. 랜덤 포레스트나 그래디언트 부스팅과 같은 앙상블 모델은 변수 중요도가 안정적인 경향을 보이기도 합니다.
    • 측정법 통일: 가능하면 변수 중요도를 측정하는 방법을 통일하거나, 여러 측정법을 비교하면서 결과를 해석하는 것이 도움이 될 수 있습니다.

     

    ▶︎ Feature Importance 장점 (feature selection + feature engineering 측면에 큰 도움)

    1. 모델 해석성 향상: 특성 중요도를 통해 어떤 특성이 모델 예측에 가장 큰 영향을 미치는지를 확인할 수 있어 모델의 해석성을 향상시킵니다.
    2. 피처 엔지니어링 가이드: 어떤 특성이 모델에게 중요한 역할을 하는지 알아내면 해당 특성에 대한 피처 엔지니어링을 진행하여 모델 성능을 향상시킬 수 있습니다.
    3. 모델 최적화: 중요한 특성에 더 집중하여 모델을 최적화하거나 특성 선택을 수행할 수 있습니다.

     

    ▶︎ Feature Importance 단점

    1. 상관관계 무시: 특성 중요도는 특성 간의 상관관계를 고려하지 않고 독립적으로 측정됩니다. 따라서 상관된 특성이 있는 경우 정확한 중요도를 평가하기 어려울 수 있습니다.
    2. 모델 의존성: 특성 중요도는 사용된 모델에 의존적입니다. 서로 다른 모델을 사용하면 중요도 순위가 변경될 수 있습니다. (재현성 보장하지 못함)
    3. 과적합 위험: 특성 중요도는 학습 데이터에 의존하므로 과적합된 모델에서는 신뢰성이 떨어질 수 있습니다.
    4. 카테고리형 데이터 다루기 어려움: 일부 특성 중요도 계산 방법은 순서형이나 연속형 변수에 더 잘 작동할 수 있으며, 카테고리형 변수에 대한 중요도 측정은 다소 어려울 수 있습니다.

     

     

     

     

    참조 : 이 글은 ChatGPT를 활용해 검토 후에 작성하였습니다. 혹시 지피티가 본인의 글을 이용한 거라면, 참조에 넣도록 하겠습니다! 

Designed by Tistory.