Làm thế nào là đánh chặn được tính toán trong GLMnet?


8

Tôi đã triển khai phiên bản GLMNET của mạng đàn hồi để hồi quy tuyến tính với một phần mềm khác ngoài R. Tôi đã so sánh kết quả của mình với glmnet của chức năng R ở chế độ Lasso trên dữ liệu bệnh tiểu đường .

Lựa chọn biến là ok khi thay đổi giá trị của tham số (lambda) nhưng tôi thu được các giá trị hệ số hơi khác nhau. Vì lý do này và các lý do khác, tôi nghĩ rằng nó xuất phát từ việc chặn trong vòng cập nhật, khi tôi tính toán mức độ phù hợp hiện tại, vì tôi không thay đổi mức chặn (mà tôi lấy là giá trị trung bình của biến mục tiêu) trong toàn bộ thuật toán: như được giải thích trong bài viết của Trevor Hastie ( Đường dẫn chính quy cho các mô hình tuyến tính tổng quát thông qua việc điều phối gốc , Trang 7, mục 2.6):

việc chặn không được chuẩn hóa, [...] cho tất cả các giá trị của [...] lambda [tham số ràng buộc L1]

Nhưng bất chấp bài viết, glmnet của hàm R cung cấp các giá trị khác nhau cho phần chặn dọc theo đường dẫn chính quy (các giá trị khác nhau của lambda). Có ai có manh mối về cách các giá trị của Chặn được tính toán không?

Câu trả lời:


8

Tôi thấy rằng việc chặn trong GLMnet được tính toán sau khi các bản cập nhật hệ số mới được hội tụ. Việc đánh chặn được tính toán với các phương tiện củayivà ý nghĩa của xij'S. Công thức tương tự như công thức trước tôi đã đưa ra nhưng vớiβjSau vòng cập nhật: β0=y¯j=1pβj^xj¯.

Trong python điều này cung cấp một cái gì đó như:

        self.intercept_ = ymean - np.dot(Xmean, self.coef_.T)

mà tôi tìm thấy ở đây trên trang scikit-learn.

EDIT: các hệ số phải được chuẩn hóa trước:

        self.coef_ = self.coef_ / X_std

β0= =y¯-Σj= =1pβj^xj¯ΣTôi= =1nxTôij2.


Tôi nên thêm rằng đây là một cách tiêu chuẩn để tính toán chặn, giả sử rằng mô hình là tuyến tính và các lỗi không có nghĩa.
mpiktas

Thật vậy, tuy nhiên các tác giả đã nói rõ ràng trong bài viết của họ: β0= =y¯ cho tất cả các giá trị của αλvà hơn nữa, họ không nói tại thời điểm thuật toán được tính toán
yelh

Vì các tác giả cho rằng x¯= =0thì đây là sự thật. Lưu ý ở phần đầu của trang 3, họ nói rằng chúng tôi giả định rằng các yếu tố dự đoán là trung tâm, nhưng điều này không hạn chế, vì "... kết quả tổng quát hóa một cách tự nhiên ..." cho trường hợp không thể hiểu được. Công thức bạn tìm thấy là sự khái quát tự nhiên này.
mpiktas

Tuy nhiên, ngay cả khi tiêu chuẩn hóa được áp dụng (và do đó có nghĩa là định tâm) trên các yếu tố dự đoán trong thuật toán, chúng vẫn lấy dữ liệu không chuẩn (do đó x¯0, nói chung) để phù hợp với các phần chặn khác nhau được hiển thị bởi glmnet. Họ sử dụng như nhauβ0= =conStmộtnt= =y¯để cập nhật các hệ số nhưng phù hợp với việc chặn dữ liệu thô và họ thực hiện điều đó một posteriori.
yelh

3

mà tôi lấy là giá trị trung bình của biến mục tiêu

Tôi nghĩ rằng đây có thể là nơi bạn đang sai: không giống như mô hình tuyến tính, bạn không thể xác định lại các yếu tố dự đoán sao cho chúng luôn luôn trực giao với giao thoa, do đó, việc chặn có thể chỉ được tính là trung bình.


Tôi lấy giá trị trung bình của biến được giải thích vì trong bài viết tôi đã trích dẫn, các tác giả của phương pháp này viết rằng họ sử dụng giá trị trung bình của Y_i (các quan sát biến được giải thích) cho tất cả các giá trị của alpha và lambda. Bây giờ, nhìn vào đầu ra của chức năng glmnet, tôi đoán đó không phải là trường hợp của tất cả lambdas. Vì vậy, điều đó không cho tôi biết làm thế nào để tính toán các chặn cho từng tham số chính quy lambda.
yelh

Tôi đoán là họ sử dụng trung bình có trọng số (vì trọng lượng sẽ thay đổi theo λ).
Simon Byrne

Bạn có thể chính xác ý tưởng của bạn xin vui lòng? Những biểu hiện của trọng lượng tôi nên xem xét?
yelh

Trong bài báo, mỗi "vòng lặp bên trong" là một vấn đề bình phương nhỏ nhất có trọng số, với các trọng số được xác định bởi giá trị được trang bị trước đó thông qua phương trình 17.
Simon Byrne

1
Không sao, tôi đã tìm thấy câu trả lời khi xem mã trăn scikit-learn (vì mã nguồn glmnet nằm ở Fortran và nó không phải là tách trà của tôi). Tôi sẽ chia sẻ nó sau nếu có ai quan tâm. Dù sao cũng cảm ơn bạn !
yelh
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.