Apakah membandingkan fitur menggunakan fitur F-regression
yang sama dengan yang berhubungan dengan label secara individual dan mengamati nilai ?
Saya sering melihat rekan-rekan saya menggunakan pilihan F regression
untuk fitur dalam pipa pembelajaran mesin mereka dari sklearn
:
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
Beberapa tolong beri tahu saya - mengapa itu memberikan hasil yang sama seperti hanya menghubungkannya dengan label / variabel dependen?
Tidak jelas bagi saya keuntungan menggunakan F_regression
pemilihan fitur.
Ini kode saya: Saya menggunakan mtcars
dataset dari 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'])
Seperti yang diduga, peringkat fitur-fiturnya persis sama:
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
Seperti yang Anda lihat, fitur kedua berada di peringkat tertinggi, fitur pertama adalah kedua, fitur keempat adalah ketiga, dan fitur ketiga terakhir, dalam kedua kasus.
Apakah pernah ada kasus di mana F_regression
akan memberikan hasil yang berbeda, atau akan memberi peringkat fitur yang berbeda dalam beberapa cara?
EDIT: Untuk meringkas, saya ingin tahu apakah kedua peringkat fitur ini pernah memberikan hasil yang berbeda:
1) peringkat fitur oleh F-statistik mereka ketika regresi mereka dengan hasilnya secara individual (inilah yang sklearn lakukan) DAN
2) memeringkat fitur berdasarkan nilai R-kuadratnya ketika melakukan regresi dengan hasilnya, sekali lagi secara individual.
sklearn
menyebutnya sebagai F-regresi, yang mungkin agak menyesatkan karena sebenarnya ini adalah tes. scikit-learn.org/stable/modules/generated/…