¿Comparar características usando F-regression
lo mismo que correlacionar características con la etiqueta individualmente y observando el valor ?
A menudo he visto a mis colegas usar una F regression
selección de funciones para su canal de aprendizaje automático de sklearn
:
sklearn.feature_selection.SelectKBest(score_func=sklearn.feature_selection.f_regression...)`
Algunos, por favor, díganme: ¿por qué da los mismos resultados que solo correlacionarlo con la etiqueta / variable dependiente?
No me queda claro la ventaja de usar F_regression
en la selección de funciones.
Aquí está mi código: estoy usando el mtcars
conjunto de datos de 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'])
Como se sospecha, la clasificación de las características es exactamente la misma:
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
Como puede ver, la segunda característica es la más alta, la primera es la segunda, la cuarta es la tercera y la tercera es la última, en ambos casos.
¿Hay algún caso en el F_regression
que darían resultados diferentes o clasificarían las características de manera diferente?
EDITAR: Para resumir, me gustaría saber si estas dos clasificaciones de características alguna vez dan resultados diferentes:
1) clasificar las características por su estadística F cuando las regresa con el resultado individualmente (esto es lo que hace sklearn) Y,
2) clasifica las características por su valor R cuadrado cuando las regresa con el resultado, nuevamente individualmente.
sklearn
se refiere a él como regresión F, lo cual es quizás un poco engañoso ya que en realidad es una prueba. scikit-learn.org/stable/modules/generated/…