본문 바로가기

반응형

Machine Learning Models/Classic

(14)
Feature Selection - Random Forest (2) Feature Selection - Random Forest (1) 지난 포스트에서 Random Forest 에서의 Gini impurity를 기반으로 한 feature importance 계산을 알아봤습니다. 그렇다면 계산된 feature importance 를 얼마만큼 신뢰할 수 있을까요? Example 다음 데이터에 대해 Random Forest 분류/회귀를 수행해보도록 하겠습니다. 먼저 price 열을 RandomForestRegressor 함수로 예측한 뒤 feature importance를 보도록 하겠습니다. 이때 random 이란 열을 만들어 무작위로 값을 넣습니다. Fitting이 되더라도 random 열의 feature importance는 낮아야 합니다. from sklearn.ense..
Feature Selection - Random Forest (1) 의사결정나무 (Decision Tree) 는 데이터를 나무와 같이 특정 feature로 지속적으로 분기하면서 목표 변수를 예측하는 머신러닝 모델의 하나로 간단함과 좋은 설명력으로 굉장히 많이 쓰이는 모델입니다. 분기를 하는 방법에 따라 여러 알고리즘이 있지만 대표적으로 CART (Classification And Regression Trees) 라는 알고리즘이 주로 사용되며 수치형/범주형 feature에 대해 gain이 가장 크도록 노드를 두 개로 분할하는 binary tree 형태를 가집니다. 따라서 의사결정나무 훈련 시에는 노드를 분할할 때 어떠한 feature를 사용해서 어떠한 기준으로 나눌지 결정하는 것이 제일 중요한 작업입니다. 일반적으로 분류 시에는 Gini impurity라는 개념을 사용하고..
Feature Selection - Recursive Feature Elimination Recursive feature elimination (rfe)는 매우 직관적인 feature selection 방법으로 먼저 전체 feature에 대해 훈련 후 중요하지 않은 feature 들을 제거하면서 원하는 개수의 feature 수만 남기도록 하는 방법입니다. 따라서 원하는 수의 feature 만 사용하는 minimal optimal feature subset 을 구하는 간단한 방법이라 볼 수 있으며 중요하지 않은 feature 를 매 스텝마다 하나씩 줄이면서 모델을 새로 빌딩하는 과정을 반복합니다. Example 파이썬에서는 scikit-learn 패키지의 RFE 함수로 구현할 수 있습니다. Scikit-learn의 메소드이니 만큼 1) 클래스 선언 2) fit 3) transform 의 과정으..
Feature Selection - Permutation Feature Importance 이번 포스트에서 다룰 permutation feature importance는 모델을 재학습시킬 필요 없이 학습시킨 후에 feature 의 값을 랜덤하게 섞은 이후의 (permute) 성능 감소를 통해 feature importance를 측정하는 방법으로 매우 직관적입니다. 어떠한 feature를 랜덤하게 섞었을 때의 모델의 예측 에러가 증가했다면 중요한 feature로 판단할 수 있고 모델의 예측 에러가 거의 변동이 없다면 중요하지 않은 feature라 판단할 수 있습니다. 훈련된 모델 $f$와 feature matrix $X$, 타겟 변수 $y$, 원래의 에러 $e_{org}=L(y,f(X))$가 있을때, 각 feature $j$에 대한 $X$에서 $j$번째 열을 임의로 섞어 만든 permuted f..
Feature Selection - BORUTA (2) 이전 포스트 [Machine Learning/Data Analysis] - Feature Selection - BORUTA (1) 지난 포스트에서 feature selection 방법 중 하나인 BORUTA 알고리즘에 대해 살펴봤습니다. BORUTA는 본래 R 패키지로 개발된 알고리즘이지만 파이썬에서도 BorutaPy 라는 패키지를 통해 사용할 수 있습니다. BorutaPy BorutaPy는 feature importance를 계산할 수 있는 Random forest, XGBoost 등의 모델과 함께 사용이 가능합니다. BorutaPy의 파라미터는 다음과 같습니다. Parameter Description estimator fit 함수를 통해 feature_importance_ 속성을 가진 모든 regre..
Feature Selection - BORUTA (1) 최적의 머신러닝 모델을 위한 feature selection (특징 추출)은 매우 중요한 작업입니다. Feature의 수가 불필요하게 많게 되면 모델의 과적합이 발생하게 되고 불필요한 feature들은 모델의 예측력에 안좋은 영향을 미치게 됩니다. 직관적인 방법은 feature를 하나씩 제거하였을 때 성능에 거의 영향이 없는 feature를 중요하지 않다고 생각하여 제거하거나 도메일 지식을 활용하여 중요하지 않은 feature를 제거하거나 중요한 feature를 선택할 수 있습니다. 하지만, feature의 개수가 매우 많거나 도메인 지식이 부족한 경우에도 쉽게 feature selection 할 수 있는 방법이 있을까요? 이번 포스트에서는 대표적인 feature selection 방법 중에 하나인 BO..

반응형