특성 자동 선택

  • 유용한 특성만 선택하고 나머지는 줄이는 방향이 좋음
  • 특성 선택 방법 : 일변량 통계, 모델 기반 선택, 반복적 선택

 

1. 일변량 특성선택 

타겟과 변수간의 통계적 의미를 기반으로 유의미한 변수 선택

 

  • chi2: 카이제곱 검정 통계값
  • f_classif: 분산분석(ANOVA) F검정 통계값
  • mutual_info_classif: 상호정보량(mutual information)

 

단일 변수 선택법은 각각의 독립변수를 하나만 사용한 예측모형의 성능을 이용하여 가장 분류성능 혹은 상관관계가 높은 변수만 선택하는 방법이다. 사이킷런 패키지의 feature_selection 서브패키지는 다음 성능지표를 제공한다.

하지만 단일 변수의 성능이 높은 특징만 모았을 때 전체 성능이 반드시 향상된다는 보장은 없다.

아래 일변량 변수선택 예제이다. 

 

from sklearn.feature_selection import SelectPercentile

# SelectPercentile을 사용하여 특성의 50%를 선택하는 모델 생성
select = SelectPercentile(percentile=50)

# 특성 선택
select.fit(X_train, y_train)
X_train_selected = select.transform(X_train)

 

 

feature_selection 서브패키지는 성능이 좋은 변수만 사용하는 전처리기인 SelectKBest 클래스도 제공한다. 

from sklearn.feature_selection import chi2, SelectKBest


%%time

selector1 = SelectKBest(chi2, k=14330)
X_train1 = selector1.fit_transform(X_train, y_train)
X_test1 = selector1.transform(X_test)

model = BernoulliNB()
model.fit(X_train1, y_train)
print("train accuracy:{:5.3f}".format(accuracy_score(y_train, model.predict(X_train1))))
print("test accuracy :{:5.3f}".format(accuracy_score(y_test, model.predict(X_test1))))

2. 모델 기반 특성선택

 

  • 지도 학습 머신러닝 모델을 사용하여 특성의 중요도를 평가, 가장 중요한 것만 선택 (최종학습과는 무관함, 모델이 같을 필요 없음)
  • 해당 모델은 각 특성의 중요도를 측정하여 순서로 매길 수 있어야 함
  • 결정트리 기반의 모델들은 각 특성의 중요도를 featureimportances에 저장하므로 이를 활용할 수 있음
from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import RandomForestClassifier

# (지도 학습 모델로 계산된) 중요도가 지정한 임계치보다 큰 모든 특성 선택하는 모델제작
# 절반 가량의 특성이 선택될수 있도록 중간값을 임계치로 사용
select1 = SelectFromModel(RandomForestClassifier(n_estimators=100, random_state=0),
                         threshold='median')

# 특성 선택
select1.fit(X_train, y_train)
X_train_selected1 = select1.transform(X_train)

 

3. 반복적 특성선택

 

  • 특성을 하나도 선택하지 않은 상태로 시작해 어떤 종료 조건을 도달할 때까지 하나씩 추가하는 방법
  • 모든 특성을 가지고 시작해 어떤 종료 조건이 될 때까지 하나씩 제거하는 방법
  • 두 가지 방법 중 하나를 활용해 특성을 결정한다.

 

from sklearn.feature_selection import RFE

# 특성 선택
select2 = RFE(RandomForestClassifier(n_estimators=100, random_state=0),
             n_features_to_select=40)

# 특성 선택
select2.fit(X_train, y_train)
X_train_selected2 = select2.transform(X_train)

 

 

reference: https://inuplace.tistory.com/618

 

[scikit-learn 라이브러리] 특성 자동 선택

특성 자동 선택 특성이 너무 많아지면 모델이 복잡해지고 과대적합 가능성이 올라간다. 따라서 유용한 특성만 선택하고 나머지는 무시해서 특성의 수는 줄이는 것이 좋다. 특성 선택 방법 : 일

inuplace.tistory.com

https://datascienceschool.net/03%20machine%20learning/14.03%20%ED%8A%B9%EC%A7%95%20%EC%84%A0%ED%83%9D.html

 

특징 선택 — 데이터 사이언스 스쿨

.ipynb .pdf to have style consistency -->

datascienceschool.net

https://dyddl1993.tistory.com/18

 

변수 선택 기법(Feature Selection Method)

변수 선택 기법(Feature Selection Method) 모델을 돌릴 때 쓸모 없는 변수들을 제거함으로써 모델의 속도 개선, 오버피팅 방지 등의 효과를 얻기 위해 사용하는 방법. Feature Selection의 3가지 방법 1. Wrappe

dyddl1993.tistory.com

 

+ Recent posts