Sự khác biệt giữa việc chọn các tính năng dựa trên hồi quy của F F và dựa trên các giá trị ?


14

Là so sánh các tính năng sử dụng F-regressiongiống như các tính năng tương quan với nhãn riêng lẻ và quan sát giá trị ?R2

Tôi thường thấy các đồng nghiệp của mình sử dụng một F regressionlựa chọn tính năng trong đường ống học máy của họ từ sklearn:

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

Một số xin vui lòng cho tôi biết - tại sao nó cho kết quả tương tự như chỉ tương quan với biến / nhãn phụ thuộc?

Tôi không rõ lợi thế của việc sử dụng F_regressiontrong lựa chọn tính năng.

Đây là mã của tôi: Tôi đang sử dụng mtcarsbộ dữ liệu từ 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'])

Như nghi ngờ, thứ hạng của các tính năng hoàn toàn giống nhau:

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

Như bạn có thể thấy, tính năng thứ hai được xếp hạng cao nhất, tính năng thứ nhất là thứ hai, tính năng thứ tư là thứ ba và tính năng thứ ba là cuối cùng, trong cả hai trường hợp.

Có bao giờ một trường hợp mà F_regressionsẽ cho kết quả khác nhau, hoặc sẽ xếp hạng các tính năng khác nhau theo một cách nào đó?

EDIT: Để tóm tắt, tôi muốn biết liệu hai bảng xếp hạng các tính năng này có cho kết quả khác nhau không:

1) tính năng xếp hạng theo thống kê F của họ khi hồi quy chúng với kết quả riêng lẻ (đây là những gì sklearn làm) VÀ,

2) xếp hạng các tính năng theo giá trị bình phương R của chúng khi hồi quy chúng với kết quả, một lần nữa riêng lẻ.


SO đã đi xuống ngay sau khi tôi đăng bài này, điều mà tôi chắc chắn làm tổn thương cơ hội nhận được bất kỳ sự chú ý nào.
Hunle 30/03/2016

1
Câu hỏi của bạn có thuật ngữ "Hồi quy F". Điều đó là gì và nó khác với hồi quy như thế nào? ... (Chỉnh sửa :) Một cái gì đó xảy ra với tôi ngay bây giờ: bạn đang đề cập đến một thử nghiệm F (hoặc có lẽ chỉ là một thống kê F) cho hồi quy tổng thể chống lại nil-null (tức là chỉ chặn)?
Glen_b -Reinstate Monica

Tôi đang đề cập đến bài kiểm tra F. Trong hồi quy, phép thử F và do đó là thống kê F, được sử dụng để kiểm tra giả thuyết null rằng không có mối quan hệ nào giữa biến hồi quy và kết quả / nhãn. sklearngọi nó là hồi quy F, có lẽ hơi sai lệch vì đây thực sự là một thử nghiệm. scikit-learn.org/urdy/modules/generated/ từ
Hunle

Nhận xét của bạn ở đó cho thấy bạn chỉ có một biến hồi quy (trong trường hợp đó tại sao bạn lại nói về lựa chọn tính năng?)
Glen_b -Reinstate Monica

2
Bạn có thể vui lòng chỉnh sửa lời giải thích đó vào câu hỏi của bạn?
Glen_b -Reinstate Monica

Câu trả lời:


12

TL: DR

Sẽ không có sự khác biệt nếu F-regressionchỉ tính toán thống kê F và chọn các tính năng tốt nhất. Có thể có một sự khác biệt trong bảng xếp hạng, giả sử F-regressionthực hiện như sau:

  • Bắt đầu với một mô hình không đổi, M0
  • Hãy thử tất cả các mẫu bao gồm một tính năng và chọn sản phẩm tốt nhất theo thống kê FM1
  • Hãy thử tất cả các mẫu bao gồm M 1 cộng với một tính năng khác và chọn ...M2M1

Vì sự tương quan sẽ không giống nhau ở mỗi lần lặp. Nhưng bạn vẫn có thể có được thứ hạng này bằng cách chỉ tính toán tương quan ở mỗi bước, vậy tại sao lại F-regressioncần thêm một bước? Nó làm hai việc:

  • Lựa chọn tính năng: Nếu bạn muốn chọn tính năng tốt nhất trong đường ống học máy, nơi bạn chỉ quan tâm đến độ chính xác và có các biện pháp điều chỉnh dưới / quá mức, bạn có thể chỉ quan tâm đến xếp hạng và tính toán bổ sung không hữu ích.k
  • Kiểm tra mức độ quan trọng: Nếu bạn đang cố gắng hiểu tác động của một số biến đối với đầu ra trong một nghiên cứu, bạn có thể muốn xây dựng một mô hình tuyến tính và chỉ bao gồm các biến đang cải thiện đáng kể mô hình của bạn, đối với một số giá trị . Ở đây, có ích.pF-regression

Bài kiểm tra F là gì

Một chiếc F-test (Wikipedia) là một cách để so sánh tầm quan trọng của việc cải thiện một mô hình, liên quan đến việc bổ sung các biến mới. Bạn có thể sử dụng nó khi có một mô hình cơ bản và một mô hình M 1 phức tạp hơn , chứa tất cả các biến từ M 0 và một số biến khác. Thử nghiệm F cho bạn biết nếu M 1 tốt hơn đáng kể so với M 0 , liên quan đến giá trị p .M0M1M0M1M0p

Để làm như vậy, nó sử dụng tổng bình phương còn lại làm thước đo lỗi và so sánh mức giảm lỗi với số lượng biến được thêm và số lượng quan sát (chi tiết hơn trên Wikipedia ). Việc thêm các biến, ngay cả khi chúng hoàn toàn ngẫu nhiên, được kỳ vọng sẽ luôn giúp mô hình đạt được lỗi thấp hơn bằng cách thêm một chiều khác. Mục tiêu là tìm hiểu xem các tính năng mới có thực sự hữu ích hay chúng là số ngẫu nhiên nhưng vẫn giúp mô hình vì chúng thêm một thứ nguyên.


Điều gì f_regressionlàm

Lưu ý rằng tôi không quen với việc triển khai tìm hiểu Scikit, nhưng hãy thử tìm hiểu xem f_regressionđang làm gì. Các tài liệu nói rằng các thủ tục là tuần tự. Nếu từ tuần tự có nghĩa giống như trong các gói thống kê khác, chẳng hạn như Lựa chọn tính năng tuần tự Matlab , thì đây là cách tôi mong đợi nó sẽ tiếp tục:

  • Bắt đầu với một mô hình không đổi, M0
  • Hãy thử tất cả các mẫu bao gồm một tính năng và chọn sản phẩm tốt nhất theo thống kê FM1
  • Hãy thử tất cả các mẫu bao gồm M 1 cộng với một tính năng khác và chọn ...M2M1

Hiện tại, tôi nghĩ rằng đó là một xấp xỉ đủ gần để trả lời câu hỏi của bạn; có sự khác biệt giữa xếp hạng f_regressionvà xếp hạng theo tương quan.

Nếu bạn bắt đầu với mô hình không đổi và cố gắng tìm mô hình tốt nhất chỉ có một tính năng, M 1 , bạn sẽ chọn tính năng tương tự cho dù bạn sử dụng hoặc phương pháp dựa trên tương quan của bạn, vì cả hai đều là thước đo của sự phụ thuộc tuyến tính. Nhưng nếu bạn đi từ M 0 đến M 1 và sau đó đến M 2 , sẽ có một sự khác biệt trong cách tính điểm của bạn.M0M1f_regressionM0M1M2

Giả sử bạn có ba tính năng, , trong đó cả x 1x 2 có tương quan cao với đầu ra y , nhưng cũng tương quan cao với nhau, trong khi x 3 chỉ tương quan trung bình với y . Phương pháp tính điểm của bạn sẽ chỉ định điểm số tốt nhất cho x 1x 2 , nhưng phương pháp tuần tự có thể không. Trong vòng đầu tiên, nó sẽ chọn tính năng tốt nhất, giả sử x 1 , để tạo M 1 . Sau đó, nó sẽ đánh giá cả haix1,x2,x3x1x2yx3yx1x2x1M1 x 3 cho M 2 . Vì x 2 tương quan cao với một tính năng đã được chọn, hầu hết thông tin chứa trong đó đã được tích hợp vào mô hình và do đó, quy trình có thể chọn x 3 . Mặc dù nó ít tương quan với y , nhưng nó tương quan nhiều hơn với phần, phần mà x 1 chưa giải thích, so với x 2 . Đây là cách hai thủ tục bạn đề xuất là khác nhau.x2x3M2x2x3yx1x2

Bạn vẫn có thể mô phỏng hiệu ứng tương tự với ý tưởng của mình bằng cách xây dựng mô hình của mình một cách tuần tự và đo lường sự khác biệt về mức tăng cho từng tính năng bổ sung thay vì so sánh chúng với mô hình không đổi như bạn hiện đang làm. Kết quả sẽ không khác với kết quả. Lý do cho chức năng này tồn tại là để cung cấp lựa chọn tính năng tuần tự này và bổ sung chuyển đổi kết quả thành thước đo F mà bạn có thể sử dụng để đánh giá tầm quan trọng.M0f_regression


Mục tiêu của F-test là cung cấp mức ý nghĩa. Nếu bạn muốn đảm bảo các tính năng mà bạn đang đưa vào có ý nghĩa đối với giá trị của bạn , bạn sử dụng F-test. Nếu bạn chỉ muốn bao gồm các k tính năng tốt nhất, bạn có thể chỉ sử dụng các mối tương quan.pk


Tài liệu bổ sung: Dưới đây là phần giới thiệu về F-test mà bạn có thể thấy hữu ích


OK, bây giờ tôi thấy làm thế nào phương pháp lựa chọn tính năng này có thể bảo vệ chống lại đa cộng đồng. Tôi cho rằng nếu tôi đang chạy một cái gì đó như Rừng ngẫu nhiên, không nhạy cảm với tính đa hình, thì phương pháp chọn tính năng này có thể không được áp dụng. cảm ơn bạn @Winks
Hunle

Coi chừng chỉ sử dụng tương quan như một thước đo tầm quan trọng của tính năng. Nó đo lường sự phụ thuộc tuyến tính giữa các biến và cho bạn biết một tính năng (có thể) là tốt cho mô hình tuyến tính . Đây không phải là một giả định bạn có thể thực hiện cho rừng ngẫu nhiên, vì cây có thể học được nhiều hơn so với quan hệ tuyến tính. Tương quan không phải là tất cả (xem Anscombe Dataset (Wikipedia) .
Winks

" Vấn đề nhỏ với giá trị p " mà bạn đề cập đến là gì? Và, có vấn đề về nhiều so sánh vì chúng tôi đang thử nghiệm trên cùng một dữ liệu mỗi lần không?
Hunle

M2R2

1
p

16

Tôi đã dành một chút thời gian để xem qua mã nguồn Scikit để hiểu những gì f_regressionnó làm, và tôi muốn đăng những quan sát của mình ở đây.

Câu hỏi ban đầu là:

Q : Có SelectKBest(f_regression, k = 4)tạo ra kết quả giống như sử dụng LinearRegression(fit_intercept=True)và chọn 4 tính năng đầu tiên có điểm số cao nhất không?

Câu trả lời là . Hơn nữa, thứ tự tương đối được đưa ra bởi điểm số là như nhau.

f_regressionXyX[:,Tôi]y

ρi=(X[:,i]mean(X[:,i]))(ymean(y))std(X[:,i])std(y).
Fi=ρi21ρi2(n2),
n=len(y)centerFalsen1SelectKBestkXvới số điểm cao nhất. Không có ứng dụng tuần tự hoặc bất cứ điều gì và giá trị p cũng không được sử dụng.

Ri2LinearRegressionX[:,i]yRi2=ρi2

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

2
Wow, vì vậy` ChọnKBest` không xây dựng mô hình tuần tự.
Hunle

Đối với những gì nó có giá trị, tôi đồng ý với giải thích của người dùng43451. Và, tôi ước sklearn sẽ gọi nó là xếp hạng tương quan của các tính năng đơn lẻ. F-test, đối với tôi, mang đến khái niệm về các mô hình tuần tự khi Winks ám chỉ trong câu trả lời được chấp nhận của anh ấy.
MrDrFenner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.