Theo mặc định, glmnet () chức năng thực hiện hồi quy sườn núi cho một tự động
phạm vi lựa chọn các giá trị λ. Tuy nhiên, ở đây chúng tôi đã lựa chọn để thực hiện
các chức năng trên một mạng lưới các giá trị khác nhau, từ λ = 1010 để bước sóng = 10-2, về cơ bản
bao gồm đầy đủ các kịch bản từ mô hình rỗng chứa
chỉ đánh chặn, với phương tối thiểu phù hợp. Như chúng ta sẽ thấy, chúng ta cũng có thể tính toán
mô hình phù hợp cho một giá trị cụ thể của λ đó không phải là một trong những nguyên
giá trị lưới. Lưu ý rằng theo mặc định, các glmnet () chức năng chuẩn hóa các
biến để họ có trên quy mô tương tự. Để tắt thiết lập mặc định,
sử dụng các Chuẩn hóa tranh luận = FALSE.
Liên kết với mỗi giá trị của λ là một vector của các hệ số hồi quy sườn núi,
được lưu trữ trong một ma trận có thể được truy cập bởi coef (). Trong trường hợp này, nó là 20 × 100
252 6. Linear Model Selection và Hợp thức
ma trận, với 20 hàng (một cho mỗi yếu tố dự báo, cộng với một đánh chặn) và 100
cột (một cho mỗi giá trị của λ).
> Dim (coef ( ridge.mod))
[1] 20 100
Chúng tôi hy vọng các tính toán hệ số nhỏ hơn nhiều, về mặt? 2 mức,
khi một giá trị lớn của λ được sử dụng, so với khi một giá trị nhỏ của λ được
sử dụng. Đây là các hệ số khi λ = 11.498, cùng với họ 2 mức:?
> Ridge.mod $ lambda [50]
[1] 11.498
> coef (ridge.mod) [50]
(Intercept) AtBat Hits HmRun Chạy
407,356 0,037 0,138 0,525 0,231
RBI Walks năm CAtBat CHITS
0,240 0,290 1,108 0,003 0,012
CHmRun CRuns CRBI CWalks LeagueN
0,088 0,023 0,024 0,025 0,085
DivisionW PutOuts Giúp lỗi NewLeagueN
-6,215 0,016 0,003 -0,021 0,301
> sqrt (sum (coef (ridge.mod) [- 1,50 ] ^ 2))
[1] 6.36
Ngược lại, ở đây là các hệ số khi λ = 705, cùng với họ? 2
mức. Lưu ý các tiêu chuẩn của các hệ số liên quan với điều này lớn hơn nhiều? 2
giá trị nhỏ hơn λ.
> Ridge.mod $ lambda [60]
[1] 705
> coef (ridge.mod) [60]
(Intercept) AtBat Hits HmRun Chạy
54,325 0,112 0,656 1,180 0,938
RBI Walks năm CAtBat CHITS
0,847 1,320 2,596 0,011 0,047
CHmRun CRuns CRBI CWalks LeagueN
0,338 0,094 0,098 0,072 13,684
DivisionW PutOuts Giúp lỗi NewLeagueN
-54,659 0,119 0,016 -0,704 8,612
> sqrt (sum (coef (ridge.mod) [- 1 , 60] ^ 2))
[1] 57.1
Chúng tôi có thể sử dụng các dự đoán () chức năng cho một số mục đích. Ví dụ,
chúng ta có thể có được các hệ số hồi quy sườn núi cho một giá trị mới của λ, nói 50:
> dự đoán (ridge.mod, s = 50, type = "hệ số") [1:20,]
(Intercept) AtBat Hits HmRun Chạy
48,766 -0,358 1,969 -1,278 1,146
RBI Walks năm CAtBat CHITS
0,804 2,716 -6,218 0,005 0,106
CHmRun CRuns CRBI CWalks LeagueN
0,624 0,221 0,219 -0,150 45,926
DivisionW PutOuts Giúp lỗi NewLeagueN
-118,201 0,250 0,122 -3,279 -9,497
6.6 Lab 2: Ridge Regression và Lasso 253
Bây giờ chúng ta chia mẫu thành một tập huấn luyện và thử nghiệm thiết lập nhằm
ước lượng kiểm tra lỗi của hồi quy sườn núi và Lasso. Có hai
cách phổ biến để chia ngẫu nhiên một tập dữ liệu. Đầu tiên là để tạo ra một cách ngẫu nhiên
vector của TRUE, FALSE yếu tố và chọn các quan sát tương ứng với
TRUE cho dữ liệu huấn luyện. Thứ hai là để chọn ngẫu nhiên một tập hợp con của
các số từ 1 đến n; này sau đó có thể được sử dụng như các chỉ số cho các
quan sát đào tạo. Hai phương pháp làm việc tốt như nhau. Chúng tôi sử dụng các
phương pháp cũ trong Mục 6.5.3. . Ở đây chúng tôi chứng minh sự tiếp cận thứ hai
đầu tiên Chúng tôi đặt một hạt giống ngẫu nhiên, do đó kết quả thu được sẽ được tái sản xuất.
> Set.seed (1)
> = tàu mẫu (1: nrow (x), nrow (x) / 2)
> test = (- đào tạo)
> y.test = y [thử nghiệm]
Tiếp theo chúng ta phù hợp với một mô hình hồi quy vân trên tập huấn luyện và đánh giá
MSE của nó trên các thiết lập kiểm tra, sử dụng λ = 4. Lưu ý việc sử dụng các dự đoán ()
chức năng một lần nữa . Lần này chúng ta có được những dự đoán cho một bộ kiểm tra, bằng cách thay thế
type = "hệ số" với các đối số newx.
> Ridge.mod = glmnet (x [tàu,], y [tàu], alpha = 0, lambda = lưới,
đập lúa = 1e-12)
> ridge.pred = dự đoán (ridge.mod, s = 4, newx = x [kiểm tra,])
> bình ((ridge.pred -y.test) ^ 2)
[1] 101.037
Các MSE thử nghiệm là 101037. Lưu ý rằng nếu chúng ta thay vì chỉ đơn giản là phù hợp với một mô hình
chỉ với một đánh chặn, chúng ta có thể dự đoán mỗi quan sát thử nghiệm sử dụng
trung bình của các quan sát đào tạo. Trong trường hợp đó, chúng ta có thể tính được
kiểm tra thiết MSE như thế này:
> bình ((trung bình (y [tàu]) - y.test) ^ 2)
[1] 193.253
Chúng tôi cũng có thể nhận được cùng một kết quả bằng cách lắp một mô hình hồi quy sườn núi với
một giá trị rất lớn của λ. Lưu ý rằng 1e10 nghĩa 1010.
> ridge.pred = dự đoán (ridge.mod, s = 1e10, newx = x [kiểm tra,])
> bình ((ridge.pred -y.test) ^ 2)
[1] 193.253
Vì vậy phù hợp một mô hình hồi quy sườn núi với λ = 4 dẫn đến một bài kiểm tra thấp hơn nhiều
MSE hơn lắp một mô hình chỉ với một đánh chặn. Bây giờ chúng ta kiểm tra xem
có bất kỳ lợi ích để thực hiện hồi quy sườn núi với λ = 4 thay vì
chỉ thực hiện hình vuông hồi quy nhất. Nhớ lại rằng phương nhỏ nhất chỉ đơn giản là
hồi quy sườn núi với λ = 0,5
5in Để glmnet () để mang lại hình vuông hệ số nhất chính xác khi λ = 0,
chúng tôi sử dụng các lập luận chính xác = T khi gọi các dự đoán () chức năng. Nếu không, các
dự đoán () chức năng sẽ suy qua lưới của λ val
đang được dịch, vui lòng đợi..