Tại sao lasso trong matlab chậm hơn nhiều so với glmnet trong R (10 phút so với ~ 1 giây)?


9

Tôi quan sát thấy hàm lasso trong MATLAB tương đối chậm. Tôi chạy nhiều vấn đề hồi quy, với 1 đến 100 dự đoán và 200 đến 500 quan sát. Trong một số trường hợp, lasso hóa ra cực kỳ chậm (để giải quyết vấn đề hồi quy phải mất vài phút). Tôi phát hiện ra rằng đây là trường hợp khi các yếu tố dự đoán có mối tương quan cao (ví dụ: chuỗi thời gian nhiệt độ không khí tại các điểm lưới lân cận của mô hình khí quyển).

Tôi đã so sánh các màn trình diễn của ví dụ dưới đây trong matlab và R.

y là vectơ dự đoán có 163 phần tử (đại diện cho các quan sát) và x là ma trận dự đoán có 100 hàng và 163 quan sát tương ứng với các quan sát trong y. Tôi đã áp dụng hàm MATLAB lasso như sau:

[beta_L,stats]=lasso(x,y,'cv',4);

Tương tự trong R, sử dụng glmnet:

fit.lasso=cv.glmnet(predictor.ts,predictand.ts,nfolds=4)

Cả MATLAB và R đều dựa trên thuật toán gốc tọa độ. Giá trị mặc định cho số lượng giá trị lambda là 100 cho cả lasso và glmnet. Ngưỡng hội tụ cho gốc tọa độ là trên 10 ^ -4 mặc định trong matlab và thậm chí thấp hơn ở R (10 ^ -7).

Chức năng R mất một giây trên máy tính của tôi. Matlab mất vài phút, với phần lớn thời gian tính toán dành cho thuật toán gốc tọa độ.

Khi các yếu tố dự đoán ít tương quan hơn (ví dụ, các loại biến khác nhau của mô hình khí quyển số), Lasso trong Matlab không quá chậm, nhưng vẫn mất ~ 30 - so với ~ 1 s trong R).

Là Matlab lasso thực sự kém hiệu quả hơn nhiều so với glmnet, hay tôi bỏ lỡ điều gì?


dự
đoán.ts

Tốt nhất để cài đặt cổng glmnet Matlab có sẵn từ web.stanford.edu/~hastie/glmnet_matlab - nó sử dụng tất cả các loại thủ thuật tính toán để tăng tốc độ giảm dần phối hợp cơ bản (ví dụ: chiến lược sàng lọc tính năng nhanh).
Tom Wenseleers

Câu trả lời:


6

glmnetλ1,λmλ1λ2λ2λ3(n+1)n

glmnetλ?glmnetlambda

CẢNH BÁO: sử dụng cẩn thận. Không cung cấp một giá trị duy nhất cho lambda [...] Cung cấp thay vào đó là một chuỗi các giá trị lambda giảm. glmnetdựa vào sự ấm áp của nó bắt đầu cho tốc độ, và nó thường nhanh hơn để phù hợp với toàn bộ con đường hơn là tính toán một sự phù hợp duy nhất.

λλ


2
Để kiểm tra nhanh, nếu bạn xem các tài liệu tham khảo trong tài liệu Matlab so với glmnethọa tiết, tất cả chúng đều là cùng tác giả (Friedman, Hastie, Tibshirani, v.v.), ngoại trừ các glmnetbài báo gần đây hơn và sử dụng thuật toán theo chiều dọc. Ngoài ra, glmnetgói được duy trì bởi cùng các tác giả đó, vì vậy bạn có thể mong đợi nó sẽ hoạt động tốt hơn phiên bản Mathworks. Tuy nhiên, một phiên bản Matlab glmnetcũng tồn tại, được duy trì bởi Junyang Qian, có thể phù hợp với mục đích của bạn.
Chris Haug
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.