λđăng nhập( λ )Σtôi| βtôi|
Cuối cùng, tôi đã tạo ra một số dữ liệu tương quan và không tương quan để chứng minh:
x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]
sigma <- matrix(c( 1, -.5, 0,
-.5, 1, -.5,
0, -.5, 1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]
Dữ liệu x_uncorr
có các cột không tương thích
> round(cor(x_uncorr), 2)
[,1] [,2] [,3]
[1,] 1.00 0.01 0.00
[2,] 0.01 1.00 -0.01
[3,] 0.00 -0.01 1.00
trong khi x_corr
có mối tương quan đặt trước giữa các cột
> round(cor(x_corr), 2)
[,1] [,2] [,3]
[1,] 1.00 -0.49 0.00
[2,] -0.49 1.00 -0.51
[3,] 0.00 -0.51 1.00
Bây giờ hãy xem xét các ô Lasso cho cả hai trường hợp này. Đầu tiên là dữ liệu không tương thích
gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)
Một vài tính năng nổi bật
- Các dự đoán đi vào mô hình theo thứ tự độ lớn của hệ số hồi quy tuyến tính thực sự.
- Σtôi| βtôi|Σtôi| βtôi|
- Khi một yếu tố dự đoán mới đi vào mô hình, nó sẽ ảnh hưởng đến độ dốc của đường hệ số của tất cả các yếu tố dự đoán đã có trong mô hình theo cách xác định. Ví dụ, khi bộ dự đoán thứ hai đi vào mô hình, độ dốc của đường hệ số thứ nhất bị cắt làm đôi. Khi dự đoán thứ ba đi vào mô hình, độ dốc của đường hệ số là một phần ba giá trị ban đầu của nó.
Đây là tất cả các sự kiện chung áp dụng cho hồi quy lasso với dữ liệu không tương quan, và tất cả chúng có thể được chứng minh bằng tay (bài tập tốt!) Hoặc được tìm thấy trong tài liệu.
Bây giờ hãy làm dữ liệu tương quan
gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)
Bạn có thể đọc một số điều ngoài cốt truyện này bằng cách so sánh nó với trường hợp không tương thích
- Các đường dẫn dự đoán thứ nhất và thứ hai có cấu trúc giống như trường hợp không tương thích cho đến khi dự đoán thứ ba đi vào mô hình, mặc dù chúng có tương quan với nhau. Đây là một tính năng đặc biệt của hai trường hợp dự đoán, mà tôi có thể giải thích trong một câu trả lời khác nếu có sự quan tâm, nó sẽ đưa tôi đi xa hơn một chút về cuộc thảo luận hiện tại.
- ∑ | βtôi|
Vì vậy, bây giờ hãy xem xét âm mưu của bạn từ bộ dữ liệu xe hơi và đọc một số điều thú vị (Tôi đã tái tạo âm mưu của bạn ở đây để cuộc thảo luận này dễ đọc hơn):
Một lời cảnh báo : Tôi đã viết phân tích sau đây dựa trên giả định rằng các đường cong cho thấy các hệ số được tiêu chuẩn hóa , trong ví dụ này chúng không như vậy. Các hệ số không được chuẩn hóa không phải là không thứ nguyên, và không thể so sánh được, vì vậy không có kết luận nào có thể được rút ra từ chúng về tầm quan trọng dự đoán. Để phân tích sau đây hợp lệ, vui lòng giả vờ rằng âm mưu là của các hệ số được tiêu chuẩn hóa, và vui lòng thực hiện phân tích của riêng bạn trên các đường dẫn hệ số chuẩn.
- Như bạn nói, người
wt
dự đoán có vẻ rất quan trọng. Nó đi vào mô hình đầu tiên, và có tốc độ chậm và ổn định đến giá trị cuối cùng của nó. Nó có một vài tương quan làm cho nó một chuyến đi hơi gập ghềnh, am
đặc biệt dường như có một tác động mạnh mẽ khi nó đi vào.
am
cũng quan trọng Nó đến sau, và có tương quan với wt
, vì nó ảnh hưởng đến độ dốc của wt
một cách bạo lực. Nó cũng tương quan với carb
và qsec
, bởi vì chúng ta không thấy độ mềm có thể dự đoán được khi độ dốc đi vào. Sau khi bốn biến này đã được nhập, chúng ta sẽ thấy mô hình không tương quan tốt đẹp, vì vậy nó dường như không tương thích với tất cả các dự đoán ở cuối.
- Một cái gì đó đi vào khoảng 2,25 trên trục x, nhưng bản thân đường dẫn của nó là không thể chấp nhận được, bạn chỉ có thể phát hiện ra nó bởi ảnh hưởng của nó đến các tham số
cyl
và wt
.
cyl
là khá mặt. Nó bước vào thứ hai, vì vậy rất quan trọng đối với các mô hình nhỏ. Sau các biến khác, và đặc biệt là am
nhập, nó không còn quá quan trọng nữa và xu hướng của nó đảo ngược, cuối cùng bị loại bỏ. Có vẻ như hiệu ứng của cyl
có thể được ghi lại hoàn toàn bởi các biến nhập vào cuối quá trình. Cho dù nó phù hợp hơn để sử dụng cyl
, hoặc nhóm các biến bổ sung, thực sự phụ thuộc vào sự đánh đổi sai lệch. Có nhóm trong mô hình cuối cùng của bạn sẽ làm tăng đáng kể phương sai của nó, nhưng có thể là trường hợp sai lệch thấp hơn bù cho nó!
Đó là một giới thiệu nhỏ về cách tôi đã học cách đọc thông tin về các lô này. Tôi nghĩ rằng họ là rất nhiều niềm vui!
Cảm ơn cho một phân tích tuyệt vời. Để báo cáo một cách đơn giản, bạn có nói rằng wt, am và xi lanh là 3 yếu tố dự đoán quan trọng nhất của mpg. Ngoài ra, nếu bạn muốn tạo một mô hình để dự đoán, bạn sẽ bao gồm mô hình nào dựa trên hình này: wt, am và xi lanh? Hoặc một số kết hợp khác. Ngoài ra, bạn dường như không cần lambda tốt nhất để phân tích. Nó không quan trọng như trong hồi quy sườn núi?
Tôi muốn nói trường hợp wt
và am
được cắt rõ ràng, chúng rất quan trọng. cyl
tinh tế hơn nhiều, nó quan trọng trong một mô hình nhỏ, nhưng hoàn toàn không liên quan trong một mô hình lớn.
Tôi sẽ không thể đưa ra quyết định về những gì chỉ bao gồm dựa trên hình, điều đó thực sự phải được trả lời theo bối cảnh của những gì bạn đang làm. Bạn có thể nói rằng nếu bạn muốn có một mô hình dự đoán ba, thì wt
, am
và cyl
là những lựa chọn tốt, vì chúng có liên quan trong sơ đồ lớn của mọi thứ, và cuối cùng nên có kích thước hiệu ứng hợp lý trong một mô hình nhỏ. Điều này được khẳng định dựa trên giả định rằng bạn có một số lý do bên ngoài để mong muốn một mô hình ba dự đoán nhỏ mặc dù.
Đó là sự thật, kiểu phân tích này xem xét toàn bộ phổ lambdas và cho phép bạn loại bỏ các mối quan hệ qua một loạt các mô hình phức tạp. Điều đó nói rằng, đối với một mô hình cuối cùng, tôi nghĩ rằng việc điều chỉnh một lambda tối ưu là rất quan trọng. Trong trường hợp không có các ràng buộc khác, tôi chắc chắn sẽ sử dụng xác nhận chéo để tìm nơi lambda dự đoán nhất, và sau đó sử dụng lambda cho mô hình cuối cùng và phân tích cuối cùng.
λ
Theo hướng khác, đôi khi có những hạn chế bên ngoài về mức độ phức tạp của một mô hình (chi phí thực hiện, hệ thống kế thừa, tối giản giải thích, khả năng giải thích kinh doanh, thẩm mỹ thẩm mỹ) và loại kiểm tra này thực sự có thể giúp bạn hiểu được hình dạng của dữ liệu của bạn và sự đánh đổi bạn đang thực hiện bằng cách chọn một mô hình nhỏ hơn tối ưu.
-1
vàoglmnet(as.matrix(mtcars[-1]), mtcars[,1])
.