EASY2DIGITAL

Scikit 학습, Random Forest를 사용하여 기능 중요도 생성

랜덤 포레스트 알고리즘은 여러 산업에 걸쳐 적용되어 더 나은 비즈니스 결정을 내릴 수 있게 되었습니다. 일부 사용 사례에는 높은 신용 위험 분석 및 교차 판매 목적을 위한 상품 추천이 포함됩니다.

이 글에서는 전통적인 레드 와인 품질 검사기 데이터세트를 사용하여 기능 중요도를 생성하는 여러 가지 방법을 간략하게 안내하겠습니다. 이 장을 마치면 프로젝트에 Random Forest를 적용하고 다양한 방법으로 결과를 비교하는 기본 개념을 갖게 됩니다.

목차: 기계 학습에서 Scikit learn 및 Random Forest를 사용하여 객체 기능 중요도 생성

레드 와인 데이터 세트 및 데이터 교육 분할

모든 기계 학습 모델의 경우 적절한 데이터 세트를 얻거나 데이터를 전처리하는 것이 중요합니다. Kaggle은 적절한 데이터 세트를 찾는 데 가장 인기 있는 플랫폼 중 하나입니다. 레드 와인 품질 프로젝트에 대한 링크는 다음과 같습니다.

https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009

가장 먼저, Pandas와 Sklearn train_test_split을 사용하여 데이터를 처리하는 것이 첫 번째 단계입니다.

url = "winequality-red.csv"

wine_data = pd . read_csv ( url , sep = ";" )

x = wine_data . drop ( 'quality' , axis = 1 )

y = wine_data [ 'quality' ]

x_train , x_test , y_train , y_test = train_test_split ( x , y , test_size = 0.5 , random_state = 50 )

Scikit-learn의 내장 기능 중요성

Scikit-learn은 Random Forest 모델에 대한 내장된 기능 중요도 방법을 제공합니다. 문서에 따르면 이 방법은 노드 불순물의 감소를 기반으로 합니다.

Random Forest에서 질문은 모델의 기능과 같습니다. 일부 질문은 다른 질문보다 더 많은 가능성을 제거하는 데 도움이 됩니다. 더 많은 가능성을 빠르게 제거하는 데 도움이 되는 기능이 정답에 더 빠르게 가까워지는 데 도움이 되기 때문에 더 중요하다고 가정합니다. Scikit-learn을 사용하면 이러한 기능 중요성을 얻는 것이 매우 간단합니다.

rf = RandomForestRegressor ( n_estimators = 100 , random_state = 50 )

rf . fit ( x_train , y_train )

inbuilt_importances = pd . Series ( rf . feature_importances_ , index = x_train .columns)

inbuilt_importances . sort_values ( ascending = True , inplace = True )

inbuilt_importances . plot . barh ( color = 'black' )

무작위 기능을 갖춘 내장된 Scikit-learn 방법

이 방법을 발전시키는 가장 간단한 방법은 데이터 세트에 무작위 특성을 추가하고 결과가 무작위 없이 첫 번째 것보다 더 많이 벗어날 수 있는지 확인하는 것입니다.

실제 특성이 무작위 특성보다 중요도가 낮다면 그 중요성이 단지 우연에 의한 것임을 나타낼 수 있습니다.

def randomMethod ():

   X_train_random = x_train .copy()

   X_train_random [ "RANDOM" ] = np . random . RandomState ( 42 ). randn ( x_train .shape[ 0 ])

   rf_random = RandomForestRegressor ( n_estimators = 100 , random_state = 42 )

   rf_random . fit ( X_train_random , y_train )

   importances_random = pd . Series ( rf_random . feature_importances_ , index = X_train_random .columns)

   importances_random . sort_values ( ascending = True , inplace = True )

   importances_random . plot . barh ( color = 'blue' )

   plt . xlabel ( "Importance" )

   plt . ylabel ( "Feature" )

   plt . title ( "Feature Importance - Scikit Learn Built-in with random" )

   plt . show ()

   return

순열 기능의 중요성

순열 특성 중요도는 특성 값이 무작위로 섞일 때 모델 성능의 변화를 측정하여 Random Forest 모델에서 각 특성의 중요도를 추정하는 또 다른 기술입니다.

이 방법의 장점 중 하나는 Random Forests뿐만 아니라 모든 모델에 사용할 수 있어 모델 간 결과를 더 비교할 수 있다는 것입니다.

SNAP의 랜덤 포레스트 기능 중요성

SHAP은 게임 이론을 기반으로 머신러닝 모델의 출력을 해석하는 방법입니다.

순열 중요도와 마찬가지로 모든 모델에 적용할 수 있는 기능 중요도에 대한 통합된 측정값을 제공합니다.

가장 큰 단점은 특히 대규모 데이터 세트나 복잡한 모델의 경우 계산 비용이 많이 들 수 있다는 것입니다.

랜덤 포레스트 경로 기능 중요성

각 기능이 Random Forest 예측에 어떻게 기여하는지 이해하는 또 다른 방법은 각 인스턴스가 취하는 의사결정 트리 경로를 살펴보는 것입니다.

리프 노드의 예측 값과 그 이전 노드의 예측 값 간의 차이를 계산하여 각 특성의 예상 기여도를 얻습니다.

기능 중요도 생성기의 전체 Python 스크립트

76장 – Scikit learn 및 Random Forest를 사용하여 객체 기능 중요도 생성에 관심이 있다면, 'Chapter 75 + notion api' 메시지를 추가하여 뉴스레터를 구독 하세요. . 우리는 즉시 귀하의 사서함으로 스크립트를 보내드립니다.

76장 – Scikit learn 및 Random Forest를 사용하여 객체 기능 중요도 생성을 재미있게 읽으시기 바랍니다. 그렇게 했다면 아래 나열된 일 중 하나를 수행하여 우리를 지원해 주세요. 이는 항상 우리 채널에 도움이 되기 때문입니다.

데이터 과학 및 기계 학습 Courseresa 추천 과정

Exit mobile version