フィーチャをF-regression
ラベルと個別に関連付け、値を観察するのと同じ方法を使用してフィーチャを比較していますか?
私は同僚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
ご覧のとおり、どちらの場合も、2番目の機能が最高ランク、1番目の機能が2番目、4番目の機能が3番目、3番目の機能が最後です。
がF_regression
異なる結果をもたらしたり、何らかの方法で機能を異なるランク付けしたりするケースはありますか?
編集: 要約すると、機能のこれら2つのランキングが異なる結果を与えるかどうかを知りたいです:
1)結果を個別に回帰する際に、F統計によって機能をランク付けする(これがsklearnの機能です)および、
2)結果で回帰する場合、R乗値で特徴をランク付けします。
sklearn
これは実際にはテストであるため、F回帰と呼ばれます。scikit-learn.org/stable/modules/generated/...