Is correct. Same as above, Less flexible and hence will give improved prediction accuracy when its increase in bias is less than its decrease in variance. The Ridge regression adds an L2 penalty that shrinks coefficients toward zero but typically does not eliminate them entirely.
The non-linear methods, relative to least squares, is:
Is correct. More flexible and hence will give improved prediction accuracy when its increase in bias is less than its decrease in variance. This is because Non-linear methods are more flexible than least squares because they do not assume a linear relationship between the predictors and the response variable.
Import libraries & packages
x <- model.matrix(Apps ~ ., College)[, -1]
y <- College$Apps
set.seed(10)
train <- sample(1:nrow(College), nrow(College)/2)
test <- setdiff(1:nrow(College), train)
College.train <- College[train, ]
College.test <- College[test, ]
y.train <- y[train]
y.test <- y[test]##
## Call:
## lm(formula = Apps ~ ., data = College.train)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5139.5 -473.3 -21.1 353.2 7402.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -629.36179 639.35741 -0.984 0.325579
## PrivateYes -647.56836 192.17056 -3.370 0.000832 ***
## Accept 1.68912 0.05038 33.530 < 2e-16 ***
## Enroll -1.02383 0.27721 -3.693 0.000255 ***
## Top10perc 48.19124 8.10714 5.944 6.42e-09 ***
## Top25perc -10.51538 6.44952 -1.630 0.103865
## F.Undergrad 0.01992 0.05364 0.371 0.710574
## P.Undergrad 0.04213 0.05348 0.788 0.431373
## Outstate -0.09489 0.02674 -3.549 0.000436 ***
## Room.Board 0.14549 0.07243 2.009 0.045277 *
## Books 0.06660 0.31115 0.214 0.830623
## Personal 0.05663 0.09453 0.599 0.549475
## PhD -10.11489 7.11588 -1.421 0.156027
## Terminal -2.29300 8.03546 -0.285 0.775528
## S.F.Ratio 22.07117 18.70991 1.180 0.238897
## perc.alumni 2.08121 6.00673 0.346 0.729179
## Expend 0.07654 0.01672 4.577 6.45e-06 ***
## Grad.Rate 9.99706 4.49821 2.222 0.026857 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1092 on 370 degrees of freedom
## Multiple R-squared: 0.9395, Adjusted R-squared: 0.9367
## F-statistic: 338 on 17 and 370 DF, p-value: < 2.2e-16
lm.pred <- predict(lm.fit, newdata = College.test)
lm.test.error <- mean((lm.pred - y.test)^2)
lm.test.error## [1] 1020100
The test error is 1020100
##
## The downloaded binary packages are in
## /var/folders/43/50tq8sf173g3h31yf1vx8v5r0000gn/T//RtmpKnUG74/downloaded_packages
library(glmnet)
grid <- 10^seq(10, -2, length = 100)
ridge.mod <- glmnet(
x[train, ],
y[train],
alpha = 0,
lambda = grid
)cv.college.out <- cv.glmnet(
x[train, ],
y[train],
alpha = 0
)
bestlam <- cv.college.out$lambda.min
bestlam## [1] 411.3927
ridge.pred <- predict(
ridge.mod,
s = bestlam,
newx = x[test, ]
)
ridge.test.error <- mean((ridge.pred - y.test)^2)
ridge.test.error## [1] 985020.1
The test error is 985020.1
## Length Class Mode
## a0 100 -none- numeric
## beta 1700 dgCMatrix S4
## df 100 -none- numeric
## dim 2 -none- numeric
## lambda 100 -none- numeric
## dev.ratio 100 -none- numeric
## nulldev 1 -none- numeric
## npasses 1 -none- numeric
## jerr 1 -none- numeric
## offset 1 -none- logical
## call 5 -none- call
## nobs 1 -none- numeric
## [1] 24.66235
## [1] 1008145
MSE for the lasso model is 1005357
out=glmnet(x,y,alpha=1,lambda = grid)
lasso.coef=predict(out,type="coefficients",s=bestlam)[1:18,]
lasso.coef[lasso.coef!=0]## (Intercept) PrivateYes Accept Enroll Top10perc
## -6.324960e+02 -4.087012e+02 1.436837e+00 -1.410240e-01 3.143012e+01
## Top25perc P.Undergrad Outstate Room.Board Personal
## -8.606536e-01 1.480293e-02 -5.342495e-02 1.205819e-01 4.379135e-05
## PhD Terminal S.F.Ratio perc.alumni Expend
## -5.121245e+00 -3.371192e+00 2.717231e+00 -1.039648e+00 6.838161e-02
## Grad.Rate
## 4.700317e+00
MSE for the lasso model is
##
## The downloaded binary packages are in
## /var/folders/43/50tq8sf173g3h31yf1vx8v5r0000gn/T//RtmpKnUG74/downloaded_packages
## Data: X dimension: 388 17
## Y dimension: 388 1
## Fit method: svdpc
## Number of components considered: 17
##
## VALIDATION: RMSEP
## Cross-validated using 10 random segments.
## (Intercept) 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps
## CV 4347 4345 2371 2391 2104 1949 1898
## adjCV 4347 4345 2368 2396 2085 1939 1891
## 7 comps 8 comps 9 comps 10 comps 11 comps 12 comps 13 comps
## CV 1899 1880 1864 1861 1870 1873 1891
## adjCV 1893 1862 1857 1853 1862 1865 1885
## 14 comps 15 comps 16 comps 17 comps
## CV 1903 1727 1295 1260
## adjCV 1975 1669 1283 1249
##
## TRAINING: % variance explained
## 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps 7 comps 8 comps
## X 32.6794 56.94 64.38 70.61 76.27 80.97 84.48 87.54
## Apps 0.9148 71.17 71.36 79.85 81.49 82.73 82.79 83.70
## 9 comps 10 comps 11 comps 12 comps 13 comps 14 comps 15 comps
## X 90.50 92.89 94.96 96.81 97.97 98.73 99.39
## Apps 83.86 84.08 84.11 84.11 84.16 84.28 93.08
## 16 comps 17 comps
## X 99.86 100.00
## Apps 93.71 93.95
## [1] 1422699
The test error is 1422699 , M = 10
pls.college=plsr(Apps~., data=College.train,scale=TRUE, validation="CV")
validationplot(pls.college, val.type="MSEP")## Data: X dimension: 388 17
## Y dimension: 388 1
## Fit method: kernelpls
## Number of components considered: 17
##
## VALIDATION: RMSEP
## Cross-validated using 10 random segments.
## (Intercept) 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps
## CV 4347 2178 1872 1734 1615 1453 1359
## adjCV 4347 2171 1867 1726 1586 1427 1341
## 7 comps 8 comps 9 comps 10 comps 11 comps 12 comps 13 comps
## CV 1347 1340 1329 1317 1310 1305 1305
## adjCV 1330 1324 1314 1302 1296 1291 1291
## 14 comps 15 comps 16 comps 17 comps
## CV 1305 1307 1307 1307
## adjCV 1291 1292 1293 1293
##
## TRAINING: % variance explained
## 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps 7 comps 8 comps
## X 24.27 38.72 62.64 65.26 69.01 73.96 78.86 82.18
## Apps 76.96 84.31 86.80 91.48 93.37 93.75 93.81 93.84
## 9 comps 10 comps 11 comps 12 comps 13 comps 14 comps 15 comps
## X 85.35 87.42 89.18 91.41 92.70 94.58 97.16
## Apps 93.88 93.91 93.93 93.94 93.95 93.95 93.95
## 16 comps 17 comps
## X 98.15 100.00
## Apps 93.95 93.95
## [1] 1049868
The test error is 1049868 , M = 11
—> The Ridge model has the lowest test error and may be the best model. There is not much difference among the test errors. If we compare the R-square of each model, we see that PCR has the lowest accuracy where others are very similar. Looking at the MSE values, the ridge has the lowest MSE so this would be a good model.
x=model.matrix(crim~.,Boston)[,-1]
y=Boston$crim
set.seed(10)
train=sample(1:nrow(x), nrow(x)/2)
test=(-train)
Boston.train = Boston[train, ]
Boston.test = Boston[test, ]
y.test=y[test]Ridge Regression Model:
library(glmnet)
grid=10^seq(10,-2,length=100)
ridge.mod=glmnet(x[train,],y[train],alpha=0,lambda=grid)
summary(ridge.mod)## Length Class Mode
## a0 100 -none- numeric
## beta 1200 dgCMatrix S4
## df 100 -none- numeric
## dim 2 -none- numeric
## lambda 100 -none- numeric
## dev.ratio 100 -none- numeric
## nulldev 1 -none- numeric
## npasses 1 -none- numeric
## jerr 1 -none- numeric
## offset 1 -none- logical
## call 5 -none- call
## nobs 1 -none- numeric
## [1] 0.5060121
## [1] 56.03423
Lasso Model:
## Length Class Mode
## a0 100 -none- numeric
## beta 1200 dgCMatrix S4
## df 100 -none- numeric
## dim 2 -none- numeric
## lambda 100 -none- numeric
## dev.ratio 100 -none- numeric
## nulldev 1 -none- numeric
## npasses 1 -none- numeric
## jerr 1 -none- numeric
## offset 1 -none- logical
## call 5 -none- call
## nobs 1 -none- numeric
## [1] 0.04830131
## [1] 55.692
PCR Model:
library(pls)
pcr.boston=pcr(crim~., data=Boston.train,scale=TRUE,validation="CV")
summary(pcr.boston)## Data: X dimension: 253 12
## Y dimension: 253 1
## Fit method: svdpc
## Number of components considered: 12
##
## VALIDATION: RMSEP
## Cross-validated using 10 random segments.
## (Intercept) 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps
## CV 7.521 6.155 6.111 5.807 5.681 5.635 5.646
## adjCV 7.521 6.153 6.109 5.803 5.677 5.632 5.643
## 7 comps 8 comps 9 comps 10 comps 11 comps 12 comps
## CV 5.504 5.378 5.377 5.391 5.371 5.320
## adjCV 5.503 5.370 5.371 5.386 5.364 5.314
##
## TRAINING: % variance explained
## 1 comps 2 comps 3 comps 4 comps 5 comps 6 comps 7 comps 8 comps
## X 48.65 61.88 71.98 79.65 86.07 89.97 92.68 94.95
## crim 33.28 34.39 40.90 43.35 44.56 44.71 47.38 50.19
## 9 comps 10 comps 11 comps 12 comps
## X 96.87 98.31 99.47 100.00
## crim 50.21 50.32 50.91 51.88
## [1] 57.42611
–> The lasso model has the lowest test error among the models evaluated, making it the best-performing model
–> No, the lasso model does not use all features in the dataset. Lasso shrinks some coefficients to zero, which removes less important predictors from the model.