Có sai không khi chọn các tính năng dựa trên giá trị p?


12

Có một số bài viết về cách chọn tính năng. Một trong những phương pháp mô tả tầm quan trọng của tính năng dựa trên thống kê t. Trong R varImp(model)áp dụng trên mô hình tuyến tính với các tính năng được tiêu chuẩn hóa , giá trị tuyệt đối của thống kê t cho từng tham số mô hình được sử dụng. Vì vậy, về cơ bản, chúng tôi chọn một tính năng dựa trên thống kê t của nó, nghĩa là hệ số chính xác đến mức nào. Nhưng sự chính xác của hệ số của tôi có cho tôi biết điều gì về khả năng dự đoán của tính năng không?

Có thể xảy ra rằng tính năng của tôi có độ chính xác thấp nhưng vẫn sẽ cải thiện độ chính xác (giả sử) của mô hình? Nếu có, khi nào người ta muốn loại trừ các biến dựa trên thống kê t? Hay nó chỉ đưa ra một điểm khởi đầu để kiểm tra khả năng dự đoán của các biến không quan trọng?


3
Đối với thử nghiệm một mẫu về giá trị trung bình, thống kê t chỉ đơn giản là giá trị trung bình mẫu chia cho sai số chuẩn ước tính (độ lệch chuẩn mẫu chia cho căn bậc hai của cỡ mẫu). Thống kê đó tự nó không phụ thuộc vào bất kỳ giả thuyết cụ thể. Lấy giá trị ap từ thống kê đó phụ thuộc vào một giả thuyết.
Dan Hicks

@DanHicks Tôi đã chỉnh sửa câu hỏi của mình.
Alina

Tôi không quen thuộc với caret, nhưng có vẻ như đó varImp()là một chức năng chẩn đoán hoặc thông tin và không được sử dụng trực tiếp để lựa chọn hoặc loại bỏ tính năng.
david25272

Câu trả lời:


11

Thống kê t có thể không có gì để nói về khả năng dự đoán của một tính năng và chúng không nên được sử dụng để sàng lọc dự đoán ra hoặc cho phép các dự đoán thành mô hình dự đoán.

Giá trị P cho biết các tính năng giả là quan trọng

Hãy xem xét thiết lập kịch bản sau đây trong R. Hãy tạo hai vectơ, đầu tiên chỉ đơn giản là lần lật đồng xu ngẫu nhiên:5000

set.seed(154)
N <- 5000
y <- rnorm(N)

Vectơ thứ hai là quan sát, mỗi quan sát được gán ngẫu nhiên cho một trong lớp ngẫu nhiên có kích thước bằng nhau:5005000500

N.classes <- 500
rand.class <- factor(cut(1:N, N.classes))

Bây giờ chúng tôi phù hợp với một mô hình tuyến tính để dự đoán yđưa ra rand.classes.

M <- lm(y ~ rand.class - 1) #(*)

Các đúng giá trị cho tất cả các hệ số là số không, ai trong số họ có bất kỳ sức mạnh tiên đoán. Không hơn không kém, nhiều trong số chúng có ý nghĩa ở mức 5%

ps <- coef(summary(M))[, "Pr(>|t|)"]
hist(ps, breaks=30)

Biểu đồ giá trị p

Trên thực tế, chúng ta nên kỳ vọng khoảng 5% trong số chúng là đáng kể, mặc dù chúng không có sức mạnh dự đoán!

Giá trị P không phát hiện được các tính năng quan trọng

Đây là một ví dụ theo hướng khác.

set.seed(154)
N <- 100
x1 <- runif(N)
x2 <- x1 + rnorm(N, sd = 0.05)
y <- x1 + x2 + rnorm(N)

M <- lm(y ~ x1 + x2)
summary(M)

Tôi đã tạo ra hai yếu tố dự đoán tương quan , mỗi yếu tố có sức mạnh dự đoán.

M <- lm(y ~ x1 + x2)
summary(M)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   0.1271     0.2092   0.608    0.545
x1            0.8369     2.0954   0.399    0.690
x2            0.9216     2.0097   0.459    0.648

Các giá trị p không phát hiện được khả năng dự đoán của cả hai biến vì mối tương quan ảnh hưởng đến mức độ chính xác của mô hình có thể ước tính hai hệ số riêng lẻ từ dữ liệu.

Số liệu thống kê suy luận không có để nói về sức mạnh dự đoán hoặc tầm quan trọng của một biến. Đó là lạm dụng các phép đo này để sử dụng chúng theo cách đó. Có nhiều tùy chọn tốt hơn có sẵn để lựa chọn biến trong các mô hình tuyến tính dự đoán, xem xét sử dụng glmnet.

(*) Lưu ý rằng tôi đang bỏ qua một cuộc đánh chặn ở đây, vì vậy tất cả các so sánh là về đường cơ sở của số 0, không phải là ý nghĩa nhóm của lớp đầu tiên. Đây là đề xuất của @ whuber.

Vì nó dẫn đến một cuộc thảo luận rất thú vị trong các bình luận, mã ban đầu là

rand.class <- factor(sample(1:N.classes, N, replace=TRUE))

M <- lm(y ~ rand.class)

dẫn đến biểu đồ sau

Biểu đồ xiên của giá trị p


2
Hmm, tại sao phân phối giá trị p này không đồng nhất?
amip nói phục hồi Monica

4
Wow, làm thế nào bạn chọn số hạt giống? Bất kỳ kết quả nào khác trong ps gần như thống nhất ...
psychOle

3
Tôi cố gắng luôn luôn sử dụng cùng một hạt giống cho loại điều này: en.wikipedia.org/wiki/154_(album)
Matthew Drury

9
Bạn đang tiến hành các bài kiểm tra sai: bạn đang so sánh nghĩa của nhóm 499 với nghĩa của nhóm đầu tiên. Với hạt giống 154, giá trị trung bình nhóm đầu tiên là 1,18 ... cao bất thường (điều này có thể xảy ra do kích thước nhóm 5 quá nhỏ), vì vậy hầu hết các nhóm khác đều có tác động tiêu cực đáng kể. Sửa nó bằng cách chạy mô hình lm(y ~ rand.class - 1). Điều này không thay đổi tính hợp lệ của tất cả các nhận xét của bạn (+1). Để thậm chí thuyết phục hơn, hãy cân bằng các kích thước nhóm:rand.class <- cut(1:N, N.classes)
whuber

1
Tất nhiên: / Tôi mong đợi 100% @whuber sẽ tham gia và nói điều gì đó hoàn toàn rõ ràng và rõ ràng mà tôi đã bỏ lỡ. Tôi sẽ sửa nó ngay bây giờ.
Matthew Drury

2

Thống kê t bị ảnh hưởng bởi kích thước hiệu ứng và kích thước mẫu. Nó có thể là trường hợp kích thước hiệu ứng khác không nhưng kích thước mẫu không đủ lớn để làm cho nó đáng kể.

t= =(x¯S)n

x¯Sn

Trong trường hợp của bạn, bất kỳ tính năng nào có hiệu ứng khác không sẽ cải thiện hiệu suất nhưng bạn có thể không có đủ dữ liệu để làm cho giá trị p của giá trị đó trở nên quan trọng.


4
Tôi không nghĩ đúng là bất kỳ tính năng nào có hiệu ứng khác không sẽ cải thiện hiệu suất. Có thể điều này đúng với dữ liệu huấn luyện, nhưng chắc chắn nó không có trên dữ liệu thử nghiệm .
Matthew Drury

@MatthewDrury Bạn có nói rằng chúng tôi thiếu các phương pháp để suy ra các phép đo dân số từ các mẫu?
Todd D

Không, nhưng sự thật là các tính năng giả có thể can thiệp vào khả năng của bạn để làm điều đó tốt.
Matthew Drury
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.