Chọn alpha tối ưu trong hồi quy logistic đàn hồi


22

Tôi đang thực hiện hồi quy logistic mạng đàn hồi trên bộ dữ liệu chăm sóc sức khỏe bằng cách sử dụng glmnetgói trong R bằng cách chọn các giá trị lambda qua lưới từ 0 đến 1. Mã viết tắt của tôi ở bên dưới:α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

đưa ra lỗi xác thực chéo trung bình cho từng giá trị của alpha từ đến với mức tăng :1,0 0,10.01.00.1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

Dựa trên những gì tôi đã đọc trong tài liệu, lựa chọn tối ưu của là nơi giảm thiểu lỗi cv. Nhưng có rất nhiều biến thể trong các lỗi trong phạm vi của bảng chữ cái. Tôi nhìn thấy một vài tối thiểu địa phương, với một lỗi cực tiểu toàn cục của cho .α0.1942612alpha=0.8

Có an toàn để đi với alpha=0.8? Hoặc, với biến thể, tôi có nên chạy lại cv.glmnetvới nhiều lần xác thực chéo hơn (ví dụ thay vì ) hoặc có thể là số gia tăng lớn hơn giữa và để có được hình ảnh rõ ràng về đường dẫn lỗi cv?10 α2010αalpha=0.01.0


5
Bạn sẽ muốn xem qua caretgói có thể thực hiện lặp lại cv và điều chỉnh cho cả alpha & lambda (hỗ trợ xử lý đa lõi!). Từ bộ nhớ, tôi nghĩ rằng glmnettài liệu khuyên không nên điều chỉnh alpha theo cách bạn làm ở đây. Nó khuyến nghị giữ cố định các nếp gấp nếu người dùng đang điều chỉnh alpha ngoài việc điều chỉnh cho lambda được cung cấp bởi cv.glmnet.

1
À, tìm thấy bài đăng này ở đây: stats.stackexchange.com/questions/69638/ triệt
RobertF

2
đừng quên để sửa chữa foldid khi bạn đang cố gắng khác nhau α
user4581

1
Đối với khả năng tái tạo, không bao giờ chạy cv.glmnet()mà không chuyển vào foldidsđược tạo từ một hạt giống ngẫu nhiên đã biết.
smci

1
@amoeba hãy xem câu trả lời của tôi - đầu vào của sự đánh đổi giữa l1 và l2 đều được chào đón!
Xavier Bourret Sicotte

Câu trả lời:


7

Làm rõ ý nghĩa của các tham số α và Elastic Net

Các thuật ngữ và tham số khác nhau được sử dụng bởi các gói khác nhau, nhưng ý nghĩa nói chung là giống nhau:

Các gói R Glmnet sử dụng định nghĩa sau đây

minβ0,β1Ni=1Nwil(yi,β0+βTxi)+λ[(1α)||β||22/2+α||β||1]

Sklearn sử dụng

minw12Ni=1N||yXw||22+α×l1ratio||w||1+0.5×α×(1l1ratio)×||w||22

Cũng có các tham số thay thế sử dụng và ..ab

Để tránh nhầm lẫn tôi sẽ gọi

  • λ tham số cường độ hình phạt
  • L1ratio tỷ lệ giữa hình phạt và , từ 0 (sườn núi) đến 1 (lasso)L1L2

Hình dung tác động của các tham số

Hãy xem xét một tập dữ liệu mô phỏng trong đó bao gồm một đường cong hình sin nhiễu và là một tính năng hai chiều bao gồm và . Do mối tương quan giữa và , hàm chi phí là một thung lũng hẹp.yXX1=xX2=x2X1X2

Đồ họa dưới đây minh họa đường dẫn giải pháp của hồi quy đàn hồi với hai tham số tỷ lệ khác nhau , như là một hàm của tham số cường độ.L1λ

  • Đối với cả hai mô phỏng: khi thì giải pháp là giải pháp OLS ở phía dưới bên phải, với hàm chi phí hình thung lũng liên quan.λ=0
  • Khi tăng lên, chính quy hóa bắt đầu và giải pháp có xu hướngλ(0,0)
  • Sự khác biệt chính giữa hai mô phỏng là tham số tỷ lệ .L1
  • LHS : đối với tỷ lệ nhỏ , hàm chi phí thường xuyên trông rất giống với hồi quy Ridge với các đường viền tròn.L1
  • RHS : đối với tỷ lệ lớn , hàm chi phí trông rất giống với hồi quy Lasso với các đường viền hình dạng kim cương điển hình.L1
  • Đối với tỷ lệ trung gian (không hiển thị), hàm chi phí là kết hợp của cả haiL1

nhập mô tả hình ảnh ở đây


Hiểu ảnh hưởng của các tham số

ElasticNet được giới thiệu để khắc phục một số hạn chế của Lasso, đó là:

  • Nếu có nhiều biến hơn điểm dữ liệu , , lasso chọn tối đa biến.pnp>nn
  • Lasso không thực hiện lựa chọn theo nhóm, đặc biệt là khi có các biến tương quan. Nó sẽ có xu hướng chọn một biến từ một nhóm và bỏ qua các biến khác

Bằng cách kết hợp hình phạt và hình phạt bậc hai, chúng tôi có được những lợi thế của cả hai:L1L2

  • L1 tạo ra một mô hình thưa thớt
  • L2 loại bỏ giới hạn về số lượng biến được chọn, khuyến khích nhóm và ổn định đường dẫn chính quy .L1

Bạn có thể thấy điều này một cách trực quan trên sơ đồ ở trên, các điểm kỳ dị ở các đỉnh khuyến khích sự thưa thớt , trong khi các cạnh lồi nghiêm ngặt khuyến khích nhóm .

Dưới đây là một hình ảnh được lấy từ Hastie (người phát minh ra ElasticNet)

nhập mô tả hình ảnh ở đây

đọc thêm


2

Hãy để tôi thêm một số nhận xét rất thực tế mặc dù tuổi của câu hỏi. Vì tôi không phải là người dùng R, tôi không thể để mã nói chuyện, tuy nhiên nó vẫn có thể hiểu được.

  1. Thông thường, bạn chỉ nên chọn các siêu đường kính (ở đây: ) với điểm CV tốt nhất. Ngoài ra, bạn có thể chọn các mô hình tốt nhất và tạo thành một tập hợp bằng cách tính trung bình số học của hàm quyết định. Điều này, tất nhiên, cung cấp cho bạn sự gia tăng độ phức tạp thời gian chạy. Gợi ý: đôi khi tính trung bình hình học hoạt động tốt hơn . Tôi cho rằng điều này là do ranh giới quyết định kết quả mượt mà hơn.αkf1,...,fkf(x)=1kifi(x)f(x)=kf(x)=i=1kfi(x)k

  2. Một lợi thế của việc lấy mẫu lại là bạn có thể kiểm tra chuỗi điểm kiểm tra, đây là điểm của cv. Bạn phải luôn luôn không chỉ nhìn vào mức trung bình mà còn ở độ lệch chuẩn (nó không được phân phối bình thường, nhưng bạn hành động như thể). Thông thường, bạn hiển thị thông báo này là 65,5% (± 2,57%) cho độ chính xác. Bằng cách này, bạn có thể biết liệu "độ lệch nhỏ" có nhiều khả năng là do tình cờ hay về mặt cấu trúc. Thậm chí tốt hơn là kiểm tra các trình tự hoàn chỉnh . Nếu luôn có một lần tắt vì một số lý do, bạn có thể muốn suy nghĩ lại về cách bạn đang thực hiện việc phân tách của mình (nó gợi ý một thiết kế thử nghiệm bị lỗi, cũng: bạn đã xáo trộn?). Trong scikit-learn các GridSearchCVcửa hàng chi tiết về các lần hết hạn trong cv_results_( xem tại đây ).

  3. Liên quan đến : càng cao, lưới đàn hồi của bạn sẽ càng có tính năng thưa thớt . Bạn có thể kiểm tra trọng số của các mô hình kết quả, càng cao , càng nhiều sẽ được đặt thành không. Đây là một mẹo hữu ích để loại bỏ các thuộc tính có trọng số được đặt thành 0 từ đường ống của bạn cùng nhau (điều này cải thiện đáng kể hiệu năng thời gian chạy). Một mẹo khác là sử dụng mô hình mạng đàn hồi để lựa chọn tính năng và sau đó đào tạo lại một biến thể . Thông thường, điều này dẫn đến việc tăng hiệu suất mô hình mạnh mẽ vì sự xen kẽ giữa các tính năng đã được lọc ra.αL1αL 2L2

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.