"F 회귀"및


15

피쳐를 F-regression레이블과 개별적으로 상관시키고 값을 관찰하는 것과 동일한 피쳐를 사용하여 피쳐를 비교 합니까?R2

나는 종종 동료 F regression들이 다음의 머신 러닝 파이프 라인에서 기능 선택을 위해 사용하는 것을 보았습니다 sklearn.

sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`  

일부는 말해주십시오-왜 레이블 / 종속 변수와 상관 관계가있는 것과 동일한 결과를 제공합니까?

F_regression기능 선택에서 사용하는 이점이 명확하지 않습니다 .

여기에 내 코드입니다 : 내가 사용하고 있습니다 mtcars에서 데이터 세트를 R:

import pandas as pd
import numpy as np
from sklearn import feature_selection
from sklearn.linear_model import LinearRegression

#....load mtcars dataset into a pandas dataframe called "df", not shown here for conciseness

# only using these numerical columns as features ['mpg', 'disp', 'drat', 'wt']
# using this column as the label:  ['qsec']

model = feature_selection.SelectKBest(score_func=feature_selection.f_regression,\
                                      k=4)

results = model.fit(df[columns], df['qsec'])

print results.scores_
print results.pvalues_

# Using just correlation coefficient:

columns = ['mpg', 'disp', 'drat', 'wt']
for col in columns:
    lm = LinearRegression(fit_intercept=True)
    lm.fit(df[[col]], df['qsec'])
    print lm.score(df[[col]], df['qsec'])

의심되는대로 기능의 순위는 정확히 동일합니다.

scores using f_regression:

[ 6.376702    6.95008354  0.25164249  0.94460378]


 scores using coefficient of determination:

0.175296320261  
0.18809385182
0.00831830818303
0.0305256382746

보시다시피 두 번째 기능은 가장 높은 순위가 매겨지고 첫 번째 기능은 두 번째이며 네 번째 기능은 세 번째이며 세 번째 기능은 두 경우 모두 마지막입니다.

(가) 경우 지금까지 거기에 F_regression다른 결과를 줄 것이다, 또는 어떤 방법으로 다른 기능을 순위 것은?

편집 : 요약하면,이 두 기능 순위가 다른 결과를 낳는 지 알고 싶습니다.

1) 결과를 개별적으로 회귀 할 때 F 통계로 기능 순위를 매기고 (이것은 sklearn 이하는 것입니다),

2) 결과와 함께 다시 개별적으로 회귀 할 때 R- 제곱 값으로 피쳐 순위를 매 깁니다.


내가 이것을 게시 한 직후 SO가 내려 갔으므로 관심을 끌 가능성이 커졌습니다.
Hunle

1
귀하의 질문에는 "F- 회귀"라는 용어가 포함됩니다. 그것은 무엇이며 회귀와 어떻게 다른가요? ... (편집 :) 지금 나에게 무슨 일이 생기는가? 널 널 (null-null)에 대한 전반적인 회귀에 대해 F- 검정 (또는 아마도 F- 통계)을 언급하고 있습니까?
Glen_b-복지 주 모니카

나는 F 테스트를 언급하고 있습니다. 회귀 분석에서 F- 검정과 F- 통계량은 회귀 분석과 결과 / 라벨간에 관계가 없다는 귀무 가설을 검정하는 데 사용됩니다. sklearnF- 회귀라고합니다. 실제로 테스트이기 때문에 약간 오해의 소지가 있습니다. scikit-learn.org/stable/modules/generated/…
Hunle

귀하의 의견에 한 가지 회귀 변수가 있다고 제안합니다 (이 경우 왜 피처 선택에 대해 이야기하고 있습니까?)
Glen_b -Reinstate Monica

2
질문에 대한 설명을 편집 해 주시겠습니까?
Glen_b-복지 주 모니카

답변:


15

TL : DR

F-regressionF 통계량을 계산하고 최상의 기능을 선택하면 차이가 없습니다 . 다음을 가정하면 순위에 차이가있을 수 있습니다 F-regression.

  • M0
  • M1
  • M2M1

상관 관계는 각 반복에서 동일하지 않습니다. 그러나 각 단계에서 상관 관계를 계산하여이 순위를 계속 얻을 수 있으므로 F-regression추가 단계 가 필요한 이유는 무엇입니까? 두 가지 작업을 수행합니다.

  • k
  • pF-regression

F- 테스트 란?

M0M1M0M1M0p

이를 위해 잔차 제곱합을 오차 측정으로 사용하고 오차 감소를 추가 된 변수 수 및 관측치 수와 비교합니다 ( Wikipedia에 대한 자세한 내용 ). 변수가 완전히 무작위 임에도 불구하고 변수를 추가하면 다른 차원을 추가하여 모델이 오류를 낮추는 데 항상 도움이 될 것으로 예상됩니다. 새로운 기능이 실제로 유용한 지 또는 임의의 숫자인지 확인하지만 치수를 추가하기 때문에 모델에 여전히 도움이 되는 것이 목표입니다 .


무엇 않습니다 f_regression

Scikit learn 구현에 익숙하지 않지만 f_regression수행중인 작업 을 파악하려고합니다 . 문서는 절차가 순차적 것을 말한다. 순차적이라는 단어가 Matlab Sequential Feature Selection 과 같은 다른 통계 패키지와 같은 의미라면 다음과 같이 진행됩니다.

  • M0
  • M1
  • M2M1

지금은 귀하의 질문에 대답하기에 충분한 근사치라고 생각합니다. f_regression상관 관계에 의한 순위와 순위 사이에 차이 가 있습니까?

M0M1f_regressionM0M1M2

x1,x2,x3x1x2yx3yx1x2x1M1x2x3M2x2x3yx1x2

M0f_regression


pk


추가 자료 : 다음은 도움이 될 수 있는 F- 테스트에 대한 소개입니다.


자, 이제이 기능 선택 방법이 다중 공선 성을 막을 수있는 방법을 봅니다. 다중 공선성에 취약하지 않은 임의 포리스트와 같은 것을 실행하는 경우이 기능 선택 방법이 적용되지 않을 수 있습니다. 감사합니다 @Winks
Hunle

기능 중요도의 척도로만 상관 관계를 사용하십시오. 변수 간의 선형 의존성을 측정하고 선형 모델에 적합한 기능 (아마도)을 알려줍니다 . 나무가 선형 관계보다 훨씬 많은 것을 배울 수 있기 때문에 이것은 임의의 포리스트에 대해 가정 할 수있는 것은 아닙니다. 상관 관계는 모두 (이 참조되어 있지 않으며 Anscombe 데이터 집합 (위키 백과) .
윙크

당신이 말하는 " p- 값에 대한 약간의 문제 "는 무엇입니까 ? 그리고 매번 동일한 데이터를 테스트하기 때문에 여러 비교 문제가 있습니까?
Hunle

M2R2

1
p

16

무엇을 이해하기 위해 Scikit 소스 코드를 살펴 보는 데 시간을 보냈으며 f_regression여기에 내 관찰 내용을 게시하고 싶습니다.

원래 질문은 다음과 같습니다.

Q : 가장 높은 점수를받은 첫 4 가지 기능을 SelectKBest(f_regression, k = 4)사용 LinearRegression(fit_intercept=True)하고 선택 하는 것과 동일한 결과를 생성 합니까 ?

대답은 ' 예' 입니다. 또한, 점수에 의해 주어진 상대 순서는 동일합니다.

f_regressionXyX[:,i]y

ρi=(X[:,i]mean(X[:,i]))(ymean(y))std(X[:,i])std(y).
Fi=ρi21ρi2(n2),
n=len(y)centerFalsen1SelectKBestkX가장 높은 점수. 순차 적용 또는 아무것도 없으며 p- 값도 사용되지 않습니다.

Ri2LinearRegressionX[:,i]yRi2=ρi2

Ri2<Rj2ρi21ρi2<ρj21ρj2Fi<Fj.
f_regressionLinearRegressionSelectKBest

2
자, SelectKBest는 모델을 순차적으로 구성하지 않습니다.
Hunle

가치있는 것에 대해서는 user43451의 해석에 동의합니다. 그리고 sklearn이 단일 기능의 상관 관계 순위라고 부르기를 바랍니다. F-test는 Winks가 그의 대답에서 언급 한 것처럼 순차적 인 모델의 개념을 도입했습니다.
MrDrFenner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.