5.3.1 Các Validation Set Approach
Chúng tôi khám phá việc sử dụng các phương pháp xác nhận thiết lập để ước tính
tỷ lệ lỗi thử nghiệm mà kết quả từ phù hợp mô hình tuyến tính khác nhau trên Auto
bộ dữ liệu.
Trước khi chúng tôi bắt đầu, chúng tôi sử dụng các set.seed () chức năng để thiết lập một hạt giống cho hạt giống
số ngẫu nhiên R, sao cho người đọc về cuốn sách này sẽ được
chính xác kết quả tương tự như những hình dưới đây. Nó thường là một ý tưởng tốt
để thiết lập một hạt giống ngẫu nhiên khi thực hiện một phân tích như cross-validation
có chứa một yếu tố ngẫu nhiên, do đó, các kết quả thu được có thể
được sao chép một cách chính xác tại một thời gian sau đó.
Chúng ta bắt đầu bằng cách sử dụng mẫu) chức năng ( để phân chia các tập hợp các mẫu quan sát () thành hai nửa, bằng cách chọn một tập hợp con ngẫu nhiên của 196 quan sát ra của
392 quan sát ban đầu. Chúng tôi đề cập đến những quan sát này là đào tạo
. Bộ
> thư viện (ISLR)
> set.seed (1)
> = tàu mẫu (392.196)
(Ở đây chúng tôi sử dụng một phím tắt trong lệnh mẫu;?. Xem mẫu để biết chi tiết)
sau đó chúng tôi sử dụng tùy chọn tập con trong lm () để phù hợp với mô hình hồi quy tuyến tính chỉ sử dụng
các quan sát tương ứng với tập huấn luyện.
> lm.fit = lm (mpg~horsepower, dữ liệu = Auto, tập hợp con = tàu)
Chúng tôi hiện đang sử dụng các dự đoán () để ước lượng đáp ứng cho tất cả 392
quan sát, và chúng tôi sử dụng trung bình () để tính toán MSE của
196 quan sát trong tập xác nhận. Lưu ý rằng chỉ số -train dưới đây
chọn chỉ quan sát mà không phải là trong tập huấn luyện.
> Đính kèm (Auto)
> có nghĩa là ((mpg -predict (lm.fit, Auto)) [- tàu] ^ 2)
[1] 26.14
Do đó, các thử nghiệm MSE ước tính cho phù hợp với hồi quy tuyến tính là 26.14. Chúng tôi
có thể sử dụng nhiều chức năng () để ước tính kiểm tra lỗi cho các đa thức
hồi quy và khối.
> Lm.fit2 = lm (mpg~poly (mã lực, 2), dữ liệu = Auto, tập hợp con = tàu)
> bình ((mpg - dự đoán (lm.fit2, Auto)) [- tàu] ^ 2)
[1] 19,82
> lm.fit3 = lm (mpg~poly (mã lực, 3), dữ liệu = Auto, tập hợp con = tàu)
> bình ((mpg - dự đoán (lm.fit3, Auto)) [- tàu] ^ 2)
[1] 19,78
Các tỷ lệ lỗi là 19,82 và 19,78, tương ứng. Nếu chúng ta chọn một khác nhau
đào tạo thiết thay vào đó, sau đó chúng ta sẽ có lỗi phần nào khác nhau trên các
thiết lập xác nhận.
> Set.seed (2)
> = tàu mẫu (392.196)
> lm.fit = lm (mpg~horsepower, tập hợp con = tàu)
192 5. cỡ ảnh Phương
> bình ((mpg -predict (lm.fit, Auto)) [- tàu] ^ 2)
[1] 23.30
> lm.fit2 = lm (mpg~poly (mã lực, 2), dữ liệu = Auto , tập hợp con = tàu)
> bình ((mpg -predict (lm.fit2, Auto)) [- tàu] ^ 2)
[1] 18.90
> lm.fit3 = lm (mpg~poly (mã lực, 3), dữ liệu = Auto , tập hợp con = tàu)
> bình ((mpg -predict (lm.fit3, Auto)) [- tàu] ^ 2)
[1] 19,26
Sử dụng phân chia này của các quan sát vào một tập huấn luyện và một xác nhận
thiết lập, chúng ta thấy rằng xác nhận thiết lập tỷ lệ lỗi cho các mô hình với tuyến tính,
. bậc hai, và các điều khoản khối là 23.30, 18.90, và 19,26, tương ứng
các kết quả này phù hợp với những phát hiện trước đây của chúng tôi: một mô hình
dự đoán mpg sử dụng một hàm bậc hai của mã lực thực hiện tốt hơn so với
một mô hình mà chỉ liên quan đến một hàm tuyến tính của mã lực, và có
rất ít bằng chứng ủng hộ một mô hình có sử dụng một phương trình bậc ba mã lực.
5.3.2 Leave-một-Out Cross-Validation
ước tính LOOCV có thể được tự động tính toán cho bất kỳ khái quát
mô hình tuyến tính bằng cách sử dụng () chức năng GLM () và cv.glm. Trong phòng thí nghiệm cho Chap- cv.glm () ter 4, chúng tôi sử dụng các GLM () để thực hiện hồi quy logistic bằng cách truyền
trong gia đình = luận "nhị thức". Nhưng nếu chúng ta sử dụng GLM () để phù hợp với một mô hình
mà không đi trong đối số gia đình, sau đó nó thực hiện hồi quy tuyến tính,
giống như lm function (). Vì vậy, ví dụ,
> = glm.fit GLM (mpg~horsepower, dữ liệu = Auto)
> coef (glm.fit)
(Intercept) mã lực
39,936 -0,158
và
> = lm.fit lm (mpg~horsepower, dữ liệu = Auto)
> coef (lm.fit)
(Intercept) mã lực
39,936 -0,158
năng suất giống hệt mô hình hồi quy tuyến tính. Trong thí nghiệm này, chúng tôi sẽ thực hiện tuyến tính
hồi quy sử dụng các chức năng GLM () thay vì hàm lm () bởi vì
sau này có thể được sử dụng cùng với cv.glm (). Các cv.glm () chức năng là
một phần của thư viện khởi động.
> Thư viện (khởi động)
> glm.fit = GLM (mpg~horsepower, dữ liệu = Auto)
> cv.err = cv.glm (tự động, glm.fit)
> cv.err đồng bằng $
1 1
24,23 24,23
Các cv.glm () chức năng sản xuất một danh sách với một số thành phần. Hai
con số trong vector đồng bằng có các kết quả qua xác nhận. Trong này
5.3 Lab: Cross-Validation và Bootstrap 193
trường hợp những con số giống hệt nhau (lên đến hai chữ số thập phân) và tương ứng
với các số liệu thống kê LOOCV cho trong (5.1). Dưới đây, chúng tôi thảo luận về một tình huống trong
đó hai con số này khác. Ước tính qua xác nhận của chúng tôi cho kiểm tra
lỗi là khoảng 24,23.
Chúng tôi có thể lặp lại quy trình này cho phù hợp đa thức ngày càng phức tạp.
Để tự động hóa quá trình này, chúng tôi sử dụng cho () để bắt đầu một vòng lặp for ()
vòng lặp đó lặp đi lặp lại phù hợp với đa thức hồi quy đa thức cho trật tự i = 1
i = 5, tính toán các lỗi cross-validation liên quan, và lưu nó trong
các yếu tố thứ i của cv.error vector. Chúng ta bắt đầu bằng cách khởi tạo các vector.
Lệnh này sẽ LDS
đang được dịch, vui lòng đợi..
