2016-12-26 1 views
1

sklearn의 RFECV 모듈을 사용하여 2 배로 높은 교차 유효성 검증을 수행하는 최적의 기능 수를 찾습니다. 나는 산정 인자로 능선 회귀 분석기를 사용하고있다.특징을 제거하면 Sklearn의 재귀 특성 제거 CV가 변경됩니다.

rfecv = RFECV(estimator=ridge,step=1, cv=KFold(n_splits=2)) 
rfecv.fit(df, y) 

표준 데이터 조정기를 사용하여 표준화 한 데이터 세트에는 5 가지 기능이 있습니다.

데이터에 RFECV를 실행하면 2 가지 기능이 최적이라고합니다. 그러나 회귀 계수가 가장 낮은 피쳐 중 하나를 제거하고 RFECV를 다시 실행하면 이제 3 가지 피쳐가 최적이라고합니다.

한 번에 하나씩 모든 기능을 수행 할 때 (재귀가 수행해야하는 것처럼) 나는 실제로 3이 최적이라는 것을 알았습니다.

다른 데이터 세트를 사용하여이를 테스트했으며 RFECV를 한 번에 하나씩 제거하고 RFECV를 다시 실행하면 최적의 기능 수가 변경된다는 사실을 발견했습니다.

RFECV가 해결해야 할 것이 있지만 뭔가 빠져있을 수도 있습니다. RFECV에 대한 추가 정보가 제공됩니다.

답변

0

실제로 이것은 의미가 있습니다. RFECV는 사용 가능한 데이터를 기반으로 일정 수의 기능을 권장합니다. 이 기능을 제거하면 채점 범위가 변경됩니다. docs에서

:

# Determine the number of subsets of features by fitting across 
# the train folds and choosing the "features_to_select" parameter 
# that gives the least averaged error across all folds. 

...

n_features_to_select = max(
    n_features - (np.argmax(scores) * step), 
    n_features_to_select) 

n_features_to_select는 내 (특정 반복에 대해 RFE에 사용되어야하는 기능을 결정하는 데 사용됩니다/후드 아래 RFECV의).

rfe = RFE(estimator=self.estimator, 
      n_features_to_select=n_features_to_select, 
      step=self.step, verbose=self.verbose) 

그래서 이것은 초기 rfecv.fit

또한 회귀 계수가 가장 낮은 피쳐를 제거하는 것이 피쳐를 트림하는 가장 좋은 방법은 아닙니다. 계수는 모델의 정확도가 아닌 종속 변수에 미치는 영향을 반영합니다.

관련 문제