Ai đó có thể giải thích những gì đối số Foldid trong glmnet không?


8

Tôi đang cố xác định sử dụng alpha nào trong glmnetchức năng của mình , nhưng tệp trợ giúp cho tôi biết:

Lưu ý rằng cv.glmnet KHÔNG tìm kiếm giá trị cho alpha. Một giá trị cụ thể phải được cung cấp, mặc định khác alpha = 1 được giả sử. Nếu người dùng cũng muốn xác thực chéo alpha, họ nên gọi cv.glmnet bằng một vectơ được tính toán trước , sau đó sử dụng cùng một vectơ gấp này trong các lệnh gọi riêng đến cv.glmnet với các giá trị alpha khác nhau.

Tuy nhiên, tôi không hiểu:

  1. Các vectơ / đối số là gì.
  2. Làm thế nào để tạo vector gấp
  3. Làm thế nào để sử dụng đối số Foldid.

Bất kỳ trợ giúp với điều này sẽ được đánh giá rất cao!


Tôi nghĩ thông số này có ý nghĩa khi bạn so sánh các mô hình khác nhau. vì vậy bạn muốn kiểm soát các nếp gấp và chỉ định trước chúng. Để chọn alpha, bạn phải thử các giá trị khác nhau của tham số.
marbel

Câu trả lời:


6

fold.idcho phép người dùng chỉ định trước các nếp gấp xác thực chéo cho cv.glmnet. Ví dụ: nếu tôi có một số dữ liệu

x    | y    | fold.id
-----+------+--------
0    | 1    | 1
1    | 1    | 1
0    | 0    | 2
1    | 2    | 2
.    | .    | .

Sau đó chuyển qua cột được chỉ định làm fold.idđối số cv.glmnetsẽ khiến (ví dụ) hai quan sát đầu tiên cư trú trong cùng một nếp gấp, và các quan sát thứ ba và thứ tư nằm trong cùng một nếp gấp (khác nhau).

Các tác giả đang đề xuất rằng nếu bạn muốn chọn giữa một số bộ sưu tập rời rạc dựa trên ước tính xác thực chéo của một số lỗi tại một tối ưu , thì cách tốt nhất là sử dụng cùng một cấu trúc gấp trong mỗi xác thực chéo của bạn khi xác định mỗi .bước sóng alpha bước sóng alphaαλαλα


Vì vậy, Fold.id cần phải là một ma trận có cùng số lượng hàng với ma trận đầu vào của tôi (x)? Có đúng không?
bác sĩ lâm sàng

Có một cách chiến lược để thiết lập Fold.id, hoặc nó hoàn toàn tùy ý? Nói cách khác, làm thế nào để tôi xác định một Fold.id phù hợp?
bác sĩ lâm sàng

2
Tôi chỉ là một vectơ số nguyên. Nhưng có, vectơ nên có một mục nhập cho mỗi hàng của ma trận thiết kế của bạn.
Matthew Drury

Điều đó phụ thuộc vào dữ liệu của bạn, nhưng trường hợp đơn giản nhất được bao phủ bởi một cái gì đó như rbinom(now(X), n.folds, rep(1/n.folds, n.folds)).
Matthew Drury

Cách tốt nhất để thiết lập này cho dữ liệu chuỗi thời gian là gì?
Frank

1

Theo Glmnet Vignette , một cách để thiết lập foldidglmnet là:

foldid<-sample(1:10,size=length(y),replace=TRUE)

Và sau đó áp dụng cho một loạt các bảng chữ cái:

cv1=cv.glmnet(x,y,foldid=foldid,alpha=1)
cv.5=cv.glmnet(x,y,foldid=foldid,alpha=.5)
cv0=cv.glmnet(x,y,foldid=foldid,alpha=0)

Các sample()chức năng cơ bản cho phép bạn tạo ra một vector của các con số ngẫu nhiên trong phạm vi bạn cung cấp (= 1: nfolds) cho độ dài của biến phản ứng ma trận y . Theo cách này, bạn chỉ định mỗi hàng ma trận đầu vào của mình thành một nếp gấp ngẫu nhiên (nhưng hiện được đặt).


Bất cứ ai cũng hiểu làm thế nào các tác giả của họa tiết quyết định rằng alpha = 1 là tốt nhất dựa trên 4 biểu đồ họ in? Trích dẫn của họ: Chúng tôi thấy rằng lasso (alpha = 1) làm tốt nhất ở đây. Chúng ta cũng thấy rằng phạm vi của lambdas được sử dụng khác với alpha. "... Tôi không hiểu làm thế nào họ xác định alpha = 1 là tốt nhất ??
bác sĩ lâm sàng

Tôi tin rằng lý do là nó sử dụng số lượng biến ít nhất. Có nghĩa đó là mô hình "đơn giản nhất" và nên khái quát hóa tốt hơn.
marbel
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.