Il confronto delle funzionalità utilizza F-regression
le stesse funzionalità correlate con l'etichetta individualmente e l'osservazione del valore ?
Ho visto spesso i miei colleghi utilizzare una F regression
selezione di funzionalità nella loro pipeline di machine learning da sklearn
:
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
Alcuni, per favore, mi dicono: perché fornisce gli stessi risultati della semplice correlazione con la variabile label / depedendent?
Non mi è chiaro il vantaggio di utilizzare F_regression
nella selezione delle funzionalità.
Ecco il mio codice: sto usando il mtcars
set di dati da 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'])
Come sospettato, la classifica delle caratteristiche è esattamente la stessa:
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
Come puoi vedere, la seconda funzione è classificata come la più alta, la prima è la seconda, la quarta è la terza e la terza è l'ultima, in entrambi i casi.
Esiste mai un caso in cui F_regression
ciò darebbe risultati diversi o classificherebbe le caratteristiche in modo diverso in qualche modo?
EDIT: Per riassumere, vorrei sapere se queste due classifiche di funzionalità danno risultati diversi:
1) classifica le caratteristiche in base alla loro statistica F quando le regredisce individualmente con il risultato (questo è ciò che fa sklearn) E
2) classificare le caratteristiche in base al loro valore R-quadrato quando si regrediscono con il risultato, sempre individualmente.
sklearn
si riferisce ad esso come regressione F, che è forse un po 'fuorviante poiché in realtà è un test. scikit-learn.org/stable/modules/generated/…