Sane từng bước hồi quy?


14

Giả sử tôi muốn xây dựng một bộ phân loại nhị phân. Tôi có vài ngàn tính năng và chỉ một vài 10 mẫu. Từ kiến ​​thức tên miền, tôi có lý do chính đáng để tin rằng nhãn lớp có thể được dự đoán chính xác chỉ bằng một vài tính năng, nhưng tôi không biết đó là tính năng nào. Tôi cũng muốn quy tắc quyết định cuối cùng dễ dàng để giải thích / giải thích, hơn nữa cần một số lượng nhỏ các tính năng. Một số tập hợp con của các tính năng của tôi có mối tương quan cao, do đó, việc chọn một vài dự đoán độc lập nhất sẽ không hiệu quả. Tôi cũng muốn có thể thực hiện kiểm tra giả thuyết một cách có ý nghĩa về các tính năng của tôi.

Là quy trình hồi quy từng bước sau đây có hợp lý trong các điều kiện sau:

  1. Với các tính năng đã có trong mô hình (hoặc chỉ là phần chặn trong lần lặp đầu tiên), hãy chọn tính năng tạo tỷ lệ khả năng ghi nhật ký lớn nhất khi được thêm vào mô hình. Sử dụng thử nghiệm chi bình phương tỷ lệ khả năng để tính giá trị P danh nghĩa cho mỗi thử nghiệm giả thuyết được thực hiện trong lựa chọn này. Null ở đây là việc thêm biến phụ vào mô hình không cung cấp khả năng dự đoán bổ sung. Thay thế là nó làm tăng khả năng dự đoán

  2. Xử lý các giả thuyết được thử nghiệm trong Bước 1 của mỗi lần lặp như một gia đình và tính tỷ lệ phát hiện sai cho giá trị P nhỏ nhất (đối với tính năng được chọn) bằng cách sử dụng một cái gì đó giống như Stewamini-Hochberg.

  3. Goto 1 trừ khi một số tiêu chí dừng được đáp ứng.

  4. Báo cáo tỷ lệ phát hiện sai cho các tính năng riêng lẻ, nhưng không phải là giá trị P cho toàn bộ mô hình (vì điều này sẽ bị thổi phồng ồ ạt). Mỗi trong số nhiều giá trị P được hiệu chỉnh thử nghiệm này biểu thị tầm quan trọng thống kê của tính năng đó với tất cả các tính năng được thêm trước đó vào mô hình.

Liệu làm một cái gì đó như thế này trong những trường hợp này thành công tránh được tất cả những lời chỉ trích điển hình về hồi quy từng bước? Là tỷ lệ phát hiện sai được tính theo cách này có hợp lý?


3
Có một lý do để không đi với một phương pháp hồi quy bị phạt (lasso, thunnet, v.v.)?
Ben Bolker

Câu trả lời:


11

Tôi sẽ không khuyên bạn nên sử dụng thủ tục đó. Đề nghị của tôi là: Từ bỏ dự án này. Chỉ cần từ bỏ và bỏ đi. Bạn không có hy vọng làm việc này.

Dore illustration of Dante's Inferno "Abandon hope" nguồn cho hình ảnh

Đặt các vấn đề tiêu chuẩn sang một bên với lựa chọn từng bước (xem, ở đây ), trong trường hợp của bạn, bạn rất có khả năng có những dự đoán hoàn hảo do sự tách biệt trong một không gian nhiều chiều như vậy.

Tôi không có thông tin cụ thể về tình huống của bạn, nhưng bạn nói rằng bạn "chỉ có vài mẫu 10". Hãy từ thiện và nói rằng bạn có 90. Bạn còn nói thêm rằng bạn có "vài nghìn tính năng". Hãy tưởng tượng rằng bạn 'chỉ' có 2.000. Để đơn giản, hãy nói rằng tất cả các tính năng của bạn là nhị phân. Bạn "tin rằng nhãn lớp có thể được dự đoán chính xác chỉ bằng một vài tính năng", giả sử rằng bạn sẽ tìm kiếm tối đa 9 tính năng tối đa. Cuối cùng, hãy tưởng tượng rằng mối quan hệ là xác định, do đó mối quan hệ thực sự sẽ luôn hiện diện hoàn hảo trong dữ liệu của bạn. (Chúng ta có thể thay đổi những con số và giả định này, nhưng điều đó chỉ làm cho vấn đề tồi tệ hơn.) Bây giờ, Làm thế nào tốt bạn có thể phục hồi mối quan hệ đó trong các điều kiện (hào phóng)? Đó là, bao lâu thì bộ chính xác sẽ là bộ duy nhất mang lại độ chính xác hoàn hảo? Hoặc, đặt một cách khác, bao nhiêu bộ chín tính năng cũng sẽ phù hợp chỉ có cơ hội?

Một số (quá mức) toán học đơn giản và mô phỏng nên cung cấp một số manh mối cho câu hỏi này. Đầu tiên, với 9 biến, mỗi biến có thể là 0 hoặc 1, số mẫu mà một quan sát có thể hiển thị là , nhưng bạn sẽ chỉ có 90 quan sát. Do đó, hoàn toàn có thể, với một bộ 9 biến nhị phân nhất định, mỗi quan sát có một bộ giá trị dự đoán khác nhau, không có bản sao. Nếu không có các bản sao với cùng các giá trị dự đoán trong đó một số có y = 0 và một số y = 1, bạn sẽ có sự phân tách hoàn toàn và dự đoán hoàn hảo của mọi quan sát sẽ có thể. 29=512

Dưới đây, tôi có một mô phỏng (được mã hóa bằng R) để xem tần suất bạn có thể không có các mẫu giá trị x với cả 0 và 1. Cách thức hoạt động là tôi nhận được một tập hợp các số từ 1 đến 512, đại diện cho các mẫu có thể và xem liệu có bất kỳ mẫu nào trong 45 đầu tiên (có thể là 0) khớp với bất kỳ mẫu nào trong 45 giây thứ hai không (đó có thể là 1s). Điều này giả định rằng bạn có dữ liệu phản hồi cân bằng hoàn hảo, mang lại cho bạn sự bảo vệ tốt nhất có thể chống lại vấn đề này. Lưu ý rằng việc có một số vectơ x được sao chép với các giá trị y khác nhau sẽ không thực sự đưa bạn ra khỏi rừng, điều đó có nghĩa là bạn sẽ không thể dự đoán hoàn hảo mọi quan sát trong tập dữ liệu của mình, đó là tiêu chuẩn rất nghiêm ngặt của tôi Tôi đang sử dụng ở đây.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

Mô phỏng cho thấy bạn sẽ gặp vấn đề này với khoảng 1,8% trong số 9 biến x. Bây giờ, có bao nhiêu bộ 9? Nghiêm túc, đó sẽ là (vì chúng tôi đã quy định rằng 9 biến nhân quả xác định thực sự nằm trong tập hợp của bạn). Tuy nhiên, nhiều bộ trong số đó sẽ bị chồng chéo; sẽ có năm 1991 / 9 221 bộ không chồng chéo của 9 trong một phân vùng nhất định của các biến của bạn (với nhiều phân vùng như vậy có thể). Như vậy, trong một số phân vùng nào đó, chúng ta có thể mong đợi sẽ có 221 × 0,018 41991 choose 9=1.3×10241991/9221221×0.0184 bộ 9 biến x sẽ dự đoán hoàn hảo mọi quan sát trong tập dữ liệu của bạn.

Lưu ý rằng các kết quả này chỉ dành cho các trường hợp bạn có bộ dữ liệu tương đối lớn hơn (trong "hàng chục"), số lượng biến tương đối nhỏ hơn (trong "hàng nghìn"), chỉ tìm kiếm các trường hợp mà mọi quan sát đơn lẻ có thể dự đoán hoàn hảo ( sẽ còn nhiều bộ nữa gần như hoàn hảo), v.v ... Trường hợp thực tế của bạn không có khả năng giải quyết 'cái này tốt'. Hơn nữa, chúng tôi quy định rằng mối quan hệ là hoàn toàn xác định. Điều gì sẽ xảy ra nếu có một số tiếng ồn ngẫu nhiên trong mối quan hệ? Trong trường hợp đó, bạn vẫn sẽ có ~ 4 (null) dự đoán hoàn hảo dữ liệu của mình, nhưng bộ đúng có thể không nằm trong số đó .

Tl; dr , điểm cơ bản ở đây là tập hợp các biến của bạn quá lớn / chiều cao và lượng dữ liệu của bạn quá nhỏ, cho mọi thứ đều có thể. Nếu thực sự đúng là bạn có "hàng chục" mẫu, "hàng ngàn" biến và hoàn toàn không biết biến nào có thể đúng, thì bạn không có hy vọng có được bất kỳ quy trình nào. Đi làm một cái gì đó khác với thời gian của bạn.


1
Bây giờ đó là một giới thiệu ban đầu cho một câu trả lời, tôi thích nó.
Łukasz Tốt nghiệp

1
Từ bỏ một dự án thường là một lựa chọn hợp lý. Mặc dù chắc chắn một tỷ lệ nhỏ các trường hợp, tôi đã hơn một lần khuyên khách hàng rằng các dự án họ có trong đầu sẽ không thể thực hiện được.
gung - Phục hồi Monica

1

Đối với mục đích trả lời của tôi, tôi sẽ biểu thị biến nhị phân quan tâm là và dự đoán X i j  ; ( J = từ 1 , ... , p ) và cho rằng Y có giá trị của Y = 0Y = 1 . Cũng sẽ thuận tiện khi xác định γ m để chỉ ra mô hình m  ; ( m = 1Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γm , sao cho γ T m X i j bằng X i j nếubiếnthứ jnằm trongmô hìnhmth 0 nếu không.m ;(m=1,..,M)γmTXijXij0

Tôi sẽ sửa đổi phương pháp của bạn và đưa ra một lý do hợp lý. Bạn đang sử dụng mô hình phân loại, có nghĩa là bạn muốn dự đoán giá trị của biến phân loại trong tương lai - vì vậy bạn thực sự nên xác định quy tắc dự đoán (đưa ra một bộ dự đoán mới , bạn sẽ dự đoán liệu Y = 1 hoặc Y = 0 ).XjY=1Y=0

Vì vậy, tôi sẽ đề nghị đánh giá dự đoán trực tiếp, thay vì tỷ lệ khả năng. Tuy nhiên, quan sát dự đoán không nên được đưa vào ước tính của mô hình (vì đây chính xác là tình huống bạn sẽ gặp phải khi thực sự sử dụng mô hình của mình). Vì vậy, có một bước 1 mới (đậm là thay đổi được đề xuất của tôi). 1) Đưa ra các tính năng đã có trong mô hình (hoặc chỉ chặn trong lần lặp đầu tiên), chọn tính năng tạo dự đoán tốt nhất khi thêm vào mô hình.

Bây giờ bạn cần phải quyết định

  1. những gì bạn muốn "tốt nhất" có nghĩa là về mặt toán học
  2. làm thế nào để phân chia dữ liệu của bạn thành các phần "phù hợp" và "dự đoán"

Tôi sẽ đưa ra một gợi ý cho mỗi:

  1. Y=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

Bước khôn ngoan có thể gặp rủi ro vì bạn có thể tìm thấy "mức tối đa cục bộ" thay vì "mức tối đa toàn cầu", đặc biệt là vì bạn có số lượng dự đoán lớn như vậy (đây là một "không gian" lớn để tối ưu hóa và có thể là đa phương thức - có nghĩa là có nhiều mô hình "tốt nhất")

100F

Tôi nghĩ rằng bạn sẽ thấy điều này dễ dàng hơn nhiều để chứng minh sự lựa chọn mô hình cuối cùng của bạn cho một người không thống kê, thay vì cố gắng giải thích tại sao giá trị p cho thấy mô hình đó tốt.

Y

Hai nhận xét cuối cùng:

  1. Bạn cũng có thể sử dụng máy móc này để quyết định xem bước khôn ngoan hơn lựa chọn chuyển tiếp (chỉ thêm biến) hay lựa chọn lùi (bắt đầu từ mô hình đầy đủ và chỉ loại bỏ biến).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ

Cảm ơn vì lời khuyên. Có ba vấn đề với điều này, mặc dù: 1. Tôi quan tâm đến việc định lượng độ không đảm bảo trong dự đoán của tôi và sự đóng góp của từng biến, không chỉ độ chính xác dự đoán nhị phân. 2. Với bản chất của bộ dữ liệu của tôi, nó quá chuyên sâu về mặt tính toán. 3. Từ kiến ​​thức tên miền, tôi tin rằng vấn đề tối ưu cục bộ không quan trọng.
dsimcha

100nF

Thật ra bạn đúng. Quy trình này sẽ là một phần của một cơ sở mã lớn hơn và tôi quên rằng một số phần còn lại của mã sẽ không cần phải chạy lại cho mỗi lần lặp jackknife. Hai điểm khác vẫn được áp dụng, mặc dù.
dsimcha

FFFchosenF(j)biến trên độ chính xác dự đoán do từng biến)
xác suất

F
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.