library(mlbench)
set.seed(200)
simulated = mlbench.friedman1(200, sd = 1)
simulated = cbind(simulated$x, simulated$y)
simulated = as.data.frame(simulated)
colnames(simulated)[ncol(simulated)] = "y"
8.1.a) The model did not significantly use the uninformative predictors (V6-V10). They displayed below with low variable importance.
library(randomForest)
library(caret)
model1 = randomForest(y ~ ., data = simulated,importance = TRUE,ntree = 1000)
rfImp1 = varImp(model1, scale = FALSE)
rfImp1
## Overall
## V1 8.732235404
## V2 6.415369387
## V3 0.763591825
## V4 7.615118809
## V5 2.023524577
## V6 0.165111172
## V7 -0.005961659
## V8 -0.166362581
## V9 -0.095292651
## V10 -0.074944788
8.1.b) The importance score for V1 changes when there is another highly correlated predictor included in the model. The high correlation between predictors makes it hard for the model to discern the true significance of predictor V1 and thus marks V1 and duplicate 1 with moderate significance instead.
simulated$duplicate1 = simulated$V1 + rnorm(200) * .1
cor(simulated$duplicate1, simulated$V1)
## [1] 0.9460206
model2 = randomForest(y ~ ., data = simulated,importance = TRUE,ntree = 1000)
rfImp2 = varImp(model2, scale = FALSE)
rfImp2
## Overall
## V1 5.69119973
## V2 6.06896061
## V3 0.62970218
## V4 7.04752238
## V5 1.87238438
## V6 0.13569065
## V7 -0.01345645
## V8 -0.04370565
## V9 0.00840438
## V10 0.02894814
## duplicate1 4.28331581
8.1.c) The conditional parameter of the varimp function for the cforest model accounts for the highly correlated predictors by penalizing the duplicatev1 in the data set and valuing v1 higher. It also reduces the importance of these predictors relative to the rest of the predictors used in the model because of the correlation. When the conditional parameter is not used it behaves like the traditional model and the correlation can not be discerned.
library(party)
cforest_model1 = party::cforest(y ~ ., data = simulated)
cforest_imp_cond = party::varimp(cforest_model1,conditional = TRUE)
cforest_imp_uncond = party::varimp(cforest_model1,conditional = FALSE)
par(mfrow=c(1,2))
barplot(cforest_imp_cond,horiz = TRUE,main = 'Conditional CForest')
barplot(cforest_imp_uncond,horiz = TRUE,main = 'Unconditional CForest')
8.1.d) The pattern is the same for the cubist model and correlation is unable to be discerned among variable importance.
library(Cubist)
cubist_model = cubist(x=simulated[colnames(simulated)!='y'],y=simulated$y)
varImp(cubist_model)
## Overall
## V1 50
## V2 50
## V4 50
## V5 50
## duplicate1 50
## V3 0
## V6 0
## V7 0
## V8 0
## V9 0
## V10 0
8.2) Below are two example of granularity affecting variable importance in a tree based model. Without correct scales higher weighting will be assigned to the non-normalized data. Predictor is example one is based off of columns V1 and V2. Column V11 has wider array of values and greater granularity. When running the variable importance on these separate predictors the variable importance gets shift as significance is weighted difference in the model.
gran_simulation = mlbench.friedman1(350, sd = 1)
gran_simulation = cbind(gran_simulation$x, gran_simulation$y)
gran_simulation = as.data.frame(gran_simulation)
gran_simulation$y = gran_simulation$V1 + gran_simulation$V2
boxplot(gran_simulation,main='Granularity')
cforest_gran = cforest(y~.,data=gran_simulation)
barplot(varimp(cforest_gran),horiz=TRUE)
gran_simulation$y = gran_simulation$V1 + gran_simulation$V11
cforest_gran2 = cforest(y~.,data=gran_simulation)
barplot(varimp(cforest_gran2),horiz=TRUE)
8.3.a) The higher bagging fraction assigned to the right hand plot creates a create larger number of trees within the model. The greater number of trees that there are the more visibility and granularity is available to model to determine variables of importance. The lower bagging rate provides an analysis with fewer trees.
8.3.b) The lower bagging rate model on the left hand side would be optimal as the right hand model is at risk of over fitting. The greater diversity of variables in the importance list would make the model more apt to discern patterns in the data and interpret potential impact on the forecast results.
8.3.c) By increasing the interaction depth of the model the number of variables in the importance list will increase as the model will perform a deeper analysis and discern relevant relationships in the model variables.
8.7.a)
library(AppliedPredictiveModeling)
library(dplyr)
data(ChemicalManufacturingProcess)
set.seed(100)
preprocess_data_model = preProcess(ChemicalManufacturingProcess, "knnImpute")
new_dataset = predict(preprocess_data_model,ChemicalManufacturingProcess)
clean_dataset = new_dataset %>% select_at(vars(-one_of(nearZeroVar(.,names=TRUE))))
chem_training_filter = createDataPartition(clean_dataset$Yield,p=.8,list=FALSE)
training_df_chem = clean_dataset[chem_training_filter,]
test_df_chem = clean_dataset[-chem_training_filter,]
simple_tree_model = train(Yield~.,data=training_df_chem,method='rpart',
preProcess = c('center', 'scale'),trControl=trainControl('cv'))
simple_tree_pred = predict(simple_tree_model, test_df_chem)
simple_tree_results = postResample(pred = simple_tree_pred, obs = test_df_chem$Yield)
randomforest_model = train(Yield~.,data=training_df_chem,method='rf',
preProcess = c('center', 'scale'),trControl=trainControl('cv'))
randomforest_pred = predict(randomforest_model, test_df_chem)
randomforest_results = postResample(pred = randomforest_pred, obs = test_df_chem$Yield)
boosttrees_model = train(Yield~.,data=training_df_chem,method='gbm',
preProcess = c('center', 'scale'),trControl=trainControl('cv'))
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9964 nan 0.1000 0.0817
## 2 0.9401 nan 0.1000 0.0405
## 3 0.8997 nan 0.1000 0.0313
## 4 0.8420 nan 0.1000 0.0413
## 5 0.7796 nan 0.1000 0.0407
## 6 0.7371 nan 0.1000 0.0461
## 7 0.6921 nan 0.1000 0.0270
## 8 0.6527 nan 0.1000 0.0223
## 9 0.6217 nan 0.1000 0.0208
## 10 0.5962 nan 0.1000 0.0086
## 20 0.4529 nan 0.1000 -0.0046
## 40 0.3339 nan 0.1000 -0.0023
## 60 0.2736 nan 0.1000 -0.0006
## 80 0.2329 nan 0.1000 -0.0006
## 100 0.2044 nan 0.1000 -0.0044
## 120 0.1791 nan 0.1000 -0.0015
## 140 0.1602 nan 0.1000 -0.0015
## 150 0.1519 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9608 nan 0.1000 0.0706
## 2 0.8896 nan 0.1000 0.0692
## 3 0.8165 nan 0.1000 0.0406
## 4 0.7604 nan 0.1000 0.0320
## 5 0.7030 nan 0.1000 0.0436
## 6 0.6491 nan 0.1000 0.0415
## 7 0.6078 nan 0.1000 0.0261
## 8 0.5680 nan 0.1000 0.0272
## 9 0.5378 nan 0.1000 0.0173
## 10 0.4947 nan 0.1000 0.0397
## 20 0.3205 nan 0.1000 0.0003
## 40 0.2145 nan 0.1000 -0.0021
## 60 0.1494 nan 0.1000 0.0015
## 80 0.1103 nan 0.1000 -0.0016
## 100 0.0863 nan 0.1000 -0.0003
## 120 0.0683 nan 0.1000 -0.0013
## 140 0.0547 nan 0.1000 -0.0016
## 150 0.0484 nan 0.1000 -0.0012
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9411 nan 0.1000 0.1152
## 2 0.8407 nan 0.1000 0.0707
## 3 0.7566 nan 0.1000 0.0596
## 4 0.6888 nan 0.1000 0.0457
## 5 0.6291 nan 0.1000 0.0396
## 6 0.5746 nan 0.1000 0.0172
## 7 0.5372 nan 0.1000 0.0342
## 8 0.4963 nan 0.1000 0.0208
## 9 0.4774 nan 0.1000 0.0004
## 10 0.4501 nan 0.1000 0.0128
## 20 0.2962 nan 0.1000 -0.0063
## 40 0.1810 nan 0.1000 0.0010
## 60 0.1175 nan 0.1000 -0.0007
## 80 0.0792 nan 0.1000 -0.0013
## 100 0.0561 nan 0.1000 -0.0015
## 120 0.0413 nan 0.1000 -0.0013
## 140 0.0312 nan 0.1000 -0.0004
## 150 0.0265 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9676 nan 0.1000 0.0692
## 2 0.9061 nan 0.1000 0.0634
## 3 0.8487 nan 0.1000 0.0548
## 4 0.8015 nan 0.1000 0.0180
## 5 0.7516 nan 0.1000 0.0359
## 6 0.7170 nan 0.1000 0.0308
## 7 0.6874 nan 0.1000 0.0155
## 8 0.6548 nan 0.1000 0.0272
## 9 0.6231 nan 0.1000 0.0283
## 10 0.5992 nan 0.1000 0.0132
## 20 0.4424 nan 0.1000 -0.0091
## 40 0.3438 nan 0.1000 -0.0026
## 60 0.2900 nan 0.1000 -0.0044
## 80 0.2501 nan 0.1000 -0.0031
## 100 0.2186 nan 0.1000 0.0010
## 120 0.2004 nan 0.1000 -0.0034
## 140 0.1810 nan 0.1000 -0.0051
## 150 0.1703 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9458 nan 0.1000 0.0856
## 2 0.8636 nan 0.1000 0.0496
## 3 0.8043 nan 0.1000 0.0609
## 4 0.7451 nan 0.1000 0.0516
## 5 0.7097 nan 0.1000 0.0290
## 6 0.6664 nan 0.1000 0.0254
## 7 0.6146 nan 0.1000 0.0280
## 8 0.5840 nan 0.1000 0.0126
## 9 0.5436 nan 0.1000 0.0230
## 10 0.5183 nan 0.1000 0.0132
## 20 0.3708 nan 0.1000 -0.0024
## 40 0.2420 nan 0.1000 -0.0033
## 60 0.1802 nan 0.1000 -0.0040
## 80 0.1363 nan 0.1000 -0.0017
## 100 0.1071 nan 0.1000 -0.0033
## 120 0.0847 nan 0.1000 -0.0005
## 140 0.0655 nan 0.1000 -0.0009
## 150 0.0597 nan 0.1000 -0.0006
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9322 nan 0.1000 0.0914
## 2 0.8603 nan 0.1000 0.0634
## 3 0.7903 nan 0.1000 0.0501
## 4 0.7255 nan 0.1000 0.0379
## 5 0.6740 nan 0.1000 0.0455
## 6 0.6191 nan 0.1000 0.0395
## 7 0.5650 nan 0.1000 0.0302
## 8 0.5245 nan 0.1000 0.0154
## 9 0.4969 nan 0.1000 0.0164
## 10 0.4654 nan 0.1000 0.0224
## 20 0.3219 nan 0.1000 -0.0020
## 40 0.1817 nan 0.1000 -0.0038
## 60 0.1213 nan 0.1000 -0.0052
## 80 0.0806 nan 0.1000 -0.0014
## 100 0.0585 nan 0.1000 -0.0006
## 120 0.0435 nan 0.1000 -0.0012
## 140 0.0319 nan 0.1000 -0.0003
## 150 0.0269 nan 0.1000 -0.0006
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9572 nan 0.1000 0.0715
## 2 0.9034 nan 0.1000 0.0577
## 3 0.8662 nan 0.1000 0.0312
## 4 0.8023 nan 0.1000 0.0526
## 5 0.7623 nan 0.1000 0.0259
## 6 0.7160 nan 0.1000 0.0341
## 7 0.6824 nan 0.1000 0.0308
## 8 0.6542 nan 0.1000 0.0119
## 9 0.6235 nan 0.1000 0.0069
## 10 0.6036 nan 0.1000 -0.0006
## 20 0.4299 nan 0.1000 0.0046
## 40 0.3371 nan 0.1000 0.0007
## 60 0.2787 nan 0.1000 -0.0039
## 80 0.2414 nan 0.1000 -0.0060
## 100 0.2072 nan 0.1000 -0.0013
## 120 0.1907 nan 0.1000 -0.0030
## 140 0.1748 nan 0.1000 0.0002
## 150 0.1660 nan 0.1000 -0.0010
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9464 nan 0.1000 0.0956
## 2 0.8589 nan 0.1000 0.0792
## 3 0.7914 nan 0.1000 0.0385
## 4 0.7424 nan 0.1000 0.0422
## 5 0.6954 nan 0.1000 0.0313
## 6 0.6416 nan 0.1000 0.0289
## 7 0.5976 nan 0.1000 0.0378
## 8 0.5719 nan 0.1000 0.0169
## 9 0.5485 nan 0.1000 0.0175
## 10 0.5160 nan 0.1000 0.0103
## 20 0.3616 nan 0.1000 0.0027
## 40 0.2304 nan 0.1000 -0.0047
## 60 0.1708 nan 0.1000 -0.0033
## 80 0.1359 nan 0.1000 -0.0024
## 100 0.1061 nan 0.1000 -0.0018
## 120 0.0837 nan 0.1000 -0.0017
## 140 0.0684 nan 0.1000 -0.0014
## 150 0.0609 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9287 nan 0.1000 0.0845
## 2 0.8361 nan 0.1000 0.0704
## 3 0.7612 nan 0.1000 0.0526
## 4 0.6862 nan 0.1000 0.0580
## 5 0.6309 nan 0.1000 0.0365
## 6 0.5892 nan 0.1000 0.0373
## 7 0.5478 nan 0.1000 0.0170
## 8 0.5166 nan 0.1000 0.0220
## 9 0.4853 nan 0.1000 0.0164
## 10 0.4568 nan 0.1000 0.0140
## 20 0.3035 nan 0.1000 0.0000
## 40 0.1856 nan 0.1000 -0.0015
## 60 0.1295 nan 0.1000 -0.0006
## 80 0.0967 nan 0.1000 -0.0023
## 100 0.0693 nan 0.1000 -0.0014
## 120 0.0508 nan 0.1000 -0.0012
## 140 0.0380 nan 0.1000 -0.0008
## 150 0.0330 nan 0.1000 -0.0010
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9648 nan 0.1000 0.0770
## 2 0.8781 nan 0.1000 0.0453
## 3 0.8183 nan 0.1000 0.0446
## 4 0.7707 nan 0.1000 0.0251
## 5 0.7405 nan 0.1000 0.0336
## 6 0.6979 nan 0.1000 0.0345
## 7 0.6655 nan 0.1000 0.0220
## 8 0.6361 nan 0.1000 0.0101
## 9 0.6175 nan 0.1000 0.0195
## 10 0.5907 nan 0.1000 0.0195
## 20 0.4211 nan 0.1000 -0.0005
## 40 0.3185 nan 0.1000 -0.0020
## 60 0.2633 nan 0.1000 -0.0046
## 80 0.2264 nan 0.1000 -0.0025
## 100 0.1977 nan 0.1000 -0.0019
## 120 0.1753 nan 0.1000 -0.0022
## 140 0.1540 nan 0.1000 -0.0028
## 150 0.1437 nan 0.1000 -0.0008
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9844 nan 0.1000 0.0500
## 2 0.8920 nan 0.1000 0.0733
## 3 0.8095 nan 0.1000 0.0537
## 4 0.7583 nan 0.1000 0.0559
## 5 0.6917 nan 0.1000 0.0438
## 6 0.6580 nan 0.1000 0.0056
## 7 0.6129 nan 0.1000 0.0317
## 8 0.5791 nan 0.1000 0.0207
## 9 0.5453 nan 0.1000 0.0224
## 10 0.5237 nan 0.1000 0.0164
## 20 0.3334 nan 0.1000 0.0027
## 40 0.2244 nan 0.1000 0.0014
## 60 0.1622 nan 0.1000 -0.0030
## 80 0.1227 nan 0.1000 -0.0033
## 100 0.0959 nan 0.1000 0.0001
## 120 0.0738 nan 0.1000 -0.0007
## 140 0.0583 nan 0.1000 -0.0011
## 150 0.0514 nan 0.1000 -0.0001
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9440 nan 0.1000 0.0882
## 2 0.8364 nan 0.1000 0.0751
## 3 0.7597 nan 0.1000 0.0770
## 4 0.6926 nan 0.1000 0.0274
## 5 0.6474 nan 0.1000 0.0208
## 6 0.5993 nan 0.1000 0.0343
## 7 0.5574 nan 0.1000 0.0265
## 8 0.5227 nan 0.1000 0.0225
## 9 0.4831 nan 0.1000 0.0340
## 10 0.4511 nan 0.1000 0.0133
## 20 0.2865 nan 0.1000 0.0063
## 40 0.1676 nan 0.1000 -0.0015
## 60 0.1120 nan 0.1000 -0.0029
## 80 0.0751 nan 0.1000 -0.0017
## 100 0.0545 nan 0.1000 -0.0011
## 120 0.0401 nan 0.1000 -0.0009
## 140 0.0304 nan 0.1000 -0.0008
## 150 0.0264 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9780 nan 0.1000 0.0160
## 2 0.9004 nan 0.1000 0.0539
## 3 0.8344 nan 0.1000 0.0650
## 4 0.7951 nan 0.1000 0.0335
## 5 0.7513 nan 0.1000 0.0318
## 6 0.7099 nan 0.1000 0.0409
## 7 0.6736 nan 0.1000 0.0302
## 8 0.6424 nan 0.1000 0.0223
## 9 0.6052 nan 0.1000 0.0302
## 10 0.5789 nan 0.1000 0.0224
## 20 0.4123 nan 0.1000 0.0078
## 40 0.3102 nan 0.1000 -0.0034
## 60 0.2663 nan 0.1000 -0.0035
## 80 0.2346 nan 0.1000 0.0004
## 100 0.2063 nan 0.1000 -0.0003
## 120 0.1891 nan 0.1000 -0.0019
## 140 0.1659 nan 0.1000 -0.0017
## 150 0.1573 nan 0.1000 -0.0011
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9384 nan 0.1000 0.0895
## 2 0.8650 nan 0.1000 0.0556
## 3 0.7909 nan 0.1000 0.0489
## 4 0.7355 nan 0.1000 0.0552
## 5 0.6845 nan 0.1000 0.0267
## 6 0.6376 nan 0.1000 0.0421
## 7 0.5911 nan 0.1000 0.0272
## 8 0.5526 nan 0.1000 0.0182
## 9 0.5339 nan 0.1000 0.0013
## 10 0.4964 nan 0.1000 0.0322
## 20 0.3240 nan 0.1000 0.0050
## 40 0.2132 nan 0.1000 -0.0087
## 60 0.1568 nan 0.1000 -0.0012
## 80 0.1227 nan 0.1000 -0.0038
## 100 0.0942 nan 0.1000 -0.0027
## 120 0.0738 nan 0.1000 0.0004
## 140 0.0609 nan 0.1000 -0.0014
## 150 0.0547 nan 0.1000 -0.0004
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9320 nan 0.1000 0.0985
## 2 0.8248 nan 0.1000 0.0784
## 3 0.7610 nan 0.1000 0.0402
## 4 0.6941 nan 0.1000 0.0557
## 5 0.6349 nan 0.1000 0.0379
## 6 0.5906 nan 0.1000 0.0263
## 7 0.5289 nan 0.1000 0.0334
## 8 0.5008 nan 0.1000 0.0172
## 9 0.4766 nan 0.1000 0.0128
## 10 0.4480 nan 0.1000 0.0252
## 20 0.2994 nan 0.1000 -0.0060
## 40 0.1679 nan 0.1000 -0.0009
## 60 0.1050 nan 0.1000 -0.0003
## 80 0.0733 nan 0.1000 -0.0012
## 100 0.0514 nan 0.1000 -0.0011
## 120 0.0386 nan 0.1000 -0.0011
## 140 0.0279 nan 0.1000 -0.0004
## 150 0.0241 nan 0.1000 -0.0005
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9658 nan 0.1000 0.0684
## 2 0.8977 nan 0.1000 0.0585
## 3 0.8497 nan 0.1000 0.0186
## 4 0.7863 nan 0.1000 0.0488
## 5 0.7420 nan 0.1000 0.0319
## 6 0.6914 nan 0.1000 0.0410
## 7 0.6484 nan 0.1000 0.0186
## 8 0.6136 nan 0.1000 0.0239
## 9 0.5879 nan 0.1000 0.0161
## 10 0.5561 nan 0.1000 0.0123
## 20 0.4175 nan 0.1000 0.0053
## 40 0.3090 nan 0.1000 -0.0026
## 60 0.2576 nan 0.1000 -0.0009
## 80 0.2225 nan 0.1000 -0.0040
## 100 0.1963 nan 0.1000 -0.0008
## 120 0.1750 nan 0.1000 -0.0012
## 140 0.1577 nan 0.1000 -0.0011
## 150 0.1492 nan 0.1000 -0.0022
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9188 nan 0.1000 0.0601
## 2 0.8106 nan 0.1000 0.0834
## 3 0.7494 nan 0.1000 0.0525
## 4 0.6946 nan 0.1000 0.0507
## 5 0.6493 nan 0.1000 0.0262
## 6 0.6143 nan 0.1000 0.0296
## 7 0.5714 nan 0.1000 0.0276
## 8 0.5468 nan 0.1000 0.0243
## 9 0.5087 nan 0.1000 0.0239
## 10 0.4814 nan 0.1000 0.0149
## 20 0.3256 nan 0.1000 0.0014
## 40 0.2196 nan 0.1000 -0.0001
## 60 0.1646 nan 0.1000 -0.0037
## 80 0.1296 nan 0.1000 -0.0016
## 100 0.0983 nan 0.1000 -0.0019
## 120 0.0773 nan 0.1000 -0.0011
## 140 0.0623 nan 0.1000 -0.0010
## 150 0.0562 nan 0.1000 -0.0020
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9212 nan 0.1000 0.0982
## 2 0.8338 nan 0.1000 0.0540
## 3 0.7659 nan 0.1000 0.0425
## 4 0.6835 nan 0.1000 0.0587
## 5 0.6201 nan 0.1000 0.0519
## 6 0.5567 nan 0.1000 0.0322
## 7 0.5206 nan 0.1000 0.0188
## 8 0.4800 nan 0.1000 0.0295
## 9 0.4490 nan 0.1000 0.0102
## 10 0.4213 nan 0.1000 0.0239
## 20 0.2797 nan 0.1000 -0.0003
## 40 0.1690 nan 0.1000 -0.0044
## 60 0.1122 nan 0.1000 -0.0037
## 80 0.0750 nan 0.1000 -0.0011
## 100 0.0540 nan 0.1000 -0.0010
## 120 0.0393 nan 0.1000 -0.0005
## 140 0.0297 nan 0.1000 -0.0004
## 150 0.0253 nan 0.1000 -0.0006
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9967 nan 0.1000 0.0480
## 2 0.9352 nan 0.1000 0.0370
## 3 0.8640 nan 0.1000 0.0427
## 4 0.8278 nan 0.1000 0.0348
## 5 0.7797 nan 0.1000 0.0290
## 6 0.7542 nan 0.1000 0.0247
## 7 0.7133 nan 0.1000 0.0290
## 8 0.6800 nan 0.1000 0.0345
## 9 0.6462 nan 0.1000 0.0289
## 10 0.6242 nan 0.1000 0.0097
## 20 0.4471 nan 0.1000 0.0120
## 40 0.3375 nan 0.1000 -0.0013
## 60 0.2741 nan 0.1000 -0.0002
## 80 0.2345 nan 0.1000 -0.0020
## 100 0.2039 nan 0.1000 -0.0005
## 120 0.1797 nan 0.1000 -0.0030
## 140 0.1626 nan 0.1000 -0.0026
## 150 0.1523 nan 0.1000 -0.0017
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9550 nan 0.1000 0.0774
## 2 0.8591 nan 0.1000 0.0784
## 3 0.7863 nan 0.1000 0.0577
## 4 0.7381 nan 0.1000 0.0456
## 5 0.6889 nan 0.1000 0.0351
## 6 0.6427 nan 0.1000 0.0229
## 7 0.6004 nan 0.1000 0.0291
## 8 0.5697 nan 0.1000 0.0119
## 9 0.5426 nan 0.1000 0.0204
## 10 0.5127 nan 0.1000 0.0249
## 20 0.3556 nan 0.1000 -0.0052
## 40 0.2401 nan 0.1000 0.0018
## 60 0.1831 nan 0.1000 -0.0021
## 80 0.1347 nan 0.1000 -0.0012
## 100 0.1038 nan 0.1000 -0.0039
## 120 0.0817 nan 0.1000 -0.0011
## 140 0.0640 nan 0.1000 -0.0021
## 150 0.0575 nan 0.1000 -0.0015
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9564 nan 0.1000 0.0951
## 2 0.8765 nan 0.1000 0.0727
## 3 0.8061 nan 0.1000 0.0568
## 4 0.7308 nan 0.1000 0.0380
## 5 0.6733 nan 0.1000 0.0390
## 6 0.6164 nan 0.1000 0.0411
## 7 0.5698 nan 0.1000 0.0194
## 8 0.5281 nan 0.1000 0.0206
## 9 0.4930 nan 0.1000 0.0074
## 10 0.4612 nan 0.1000 0.0148
## 20 0.3101 nan 0.1000 -0.0013
## 40 0.1799 nan 0.1000 -0.0027
## 60 0.1183 nan 0.1000 -0.0035
## 80 0.0832 nan 0.1000 -0.0024
## 100 0.0581 nan 0.1000 -0.0010
## 120 0.0431 nan 0.1000 -0.0005
## 140 0.0331 nan 0.1000 -0.0014
## 150 0.0281 nan 0.1000 -0.0004
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9211 nan 0.1000 0.0727
## 2 0.8614 nan 0.1000 0.0601
## 3 0.8221 nan 0.1000 0.0393
## 4 0.7661 nan 0.1000 0.0512
## 5 0.7302 nan 0.1000 0.0186
## 6 0.6791 nan 0.1000 0.0348
## 7 0.6416 nan 0.1000 0.0288
## 8 0.6173 nan 0.1000 0.0066
## 9 0.5919 nan 0.1000 0.0117
## 10 0.5714 nan 0.1000 0.0182
## 20 0.4163 nan 0.1000 0.0009
## 40 0.3078 nan 0.1000 -0.0018
## 60 0.2605 nan 0.1000 -0.0053
## 80 0.2279 nan 0.1000 -0.0019
## 100 0.2032 nan 0.1000 -0.0045
## 120 0.1834 nan 0.1000 -0.0014
## 140 0.1642 nan 0.1000 -0.0025
## 150 0.1546 nan 0.1000 -0.0016
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.8942 nan 0.1000 0.0674
## 2 0.8176 nan 0.1000 0.0651
## 3 0.7406 nan 0.1000 0.0690
## 4 0.6735 nan 0.1000 0.0425
## 5 0.6226 nan 0.1000 0.0444
## 6 0.5756 nan 0.1000 0.0431
## 7 0.5498 nan 0.1000 0.0206
## 8 0.5098 nan 0.1000 0.0175
## 9 0.4827 nan 0.1000 0.0105
## 10 0.4558 nan 0.1000 0.0288
## 20 0.3232 nan 0.1000 0.0006
## 40 0.2074 nan 0.1000 -0.0030
## 60 0.1524 nan 0.1000 0.0017
## 80 0.1138 nan 0.1000 -0.0025
## 100 0.0910 nan 0.1000 -0.0016
## 120 0.0712 nan 0.1000 -0.0015
## 140 0.0580 nan 0.1000 -0.0000
## 150 0.0506 nan 0.1000 -0.0006
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.8819 nan 0.1000 0.0903
## 2 0.8055 nan 0.1000 0.0811
## 3 0.7348 nan 0.1000 0.0532
## 4 0.6602 nan 0.1000 0.0620
## 5 0.6176 nan 0.1000 0.0314
## 6 0.5731 nan 0.1000 0.0190
## 7 0.5300 nan 0.1000 0.0249
## 8 0.4907 nan 0.1000 0.0198
## 9 0.4604 nan 0.1000 0.0181
## 10 0.4380 nan 0.1000 0.0062
## 20 0.2782 nan 0.1000 -0.0035
## 40 0.1561 nan 0.1000 -0.0012
## 60 0.1043 nan 0.1000 -0.0017
## 80 0.0668 nan 0.1000 -0.0011
## 100 0.0473 nan 0.1000 -0.0006
## 120 0.0341 nan 0.1000 -0.0005
## 140 0.0247 nan 0.1000 -0.0004
## 150 0.0216 nan 0.1000 -0.0009
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9731 nan 0.1000 0.0658
## 2 0.9132 nan 0.1000 0.0552
## 3 0.8611 nan 0.1000 0.0317
## 4 0.8085 nan 0.1000 0.0411
## 5 0.7619 nan 0.1000 0.0468
## 6 0.7174 nan 0.1000 0.0362
## 7 0.6850 nan 0.1000 0.0221
## 8 0.6498 nan 0.1000 0.0251
## 9 0.6185 nan 0.1000 0.0133
## 10 0.5864 nan 0.1000 0.0239
## 20 0.4327 nan 0.1000 -0.0002
## 40 0.3209 nan 0.1000 0.0012
## 60 0.2601 nan 0.1000 -0.0041
## 80 0.2210 nan 0.1000 -0.0015
## 100 0.1877 nan 0.1000 0.0009
## 120 0.1639 nan 0.1000 -0.0019
## 140 0.1480 nan 0.1000 -0.0014
## 150 0.1403 nan 0.1000 0.0004
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9692 nan 0.1000 0.0793
## 2 0.8905 nan 0.1000 0.0703
## 3 0.8211 nan 0.1000 0.0278
## 4 0.7696 nan 0.1000 0.0434
## 5 0.7282 nan 0.1000 0.0355
## 6 0.6758 nan 0.1000 0.0438
## 7 0.6436 nan 0.1000 0.0153
## 8 0.5937 nan 0.1000 0.0373
## 9 0.5528 nan 0.1000 0.0367
## 10 0.5262 nan 0.1000 0.0140
## 20 0.3471 nan 0.1000 -0.0087
## 40 0.2343 nan 0.1000 -0.0048
## 60 0.1660 nan 0.1000 -0.0025
## 80 0.1231 nan 0.1000 -0.0017
## 100 0.0987 nan 0.1000 0.0001
## 120 0.0788 nan 0.1000 -0.0031
## 140 0.0624 nan 0.1000 -0.0012
## 150 0.0557 nan 0.1000 -0.0002
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9573 nan 0.1000 0.0817
## 2 0.8666 nan 0.1000 0.0612
## 3 0.7817 nan 0.1000 0.0676
## 4 0.7152 nan 0.1000 0.0593
## 5 0.6619 nan 0.1000 0.0410
## 6 0.6180 nan 0.1000 0.0280
## 7 0.5664 nan 0.1000 0.0475
## 8 0.5288 nan 0.1000 0.0195
## 9 0.4915 nan 0.1000 0.0145
## 10 0.4664 nan 0.1000 0.0092
## 20 0.3060 nan 0.1000 -0.0082
## 40 0.1751 nan 0.1000 -0.0025
## 60 0.1163 nan 0.1000 -0.0040
## 80 0.0776 nan 0.1000 0.0005
## 100 0.0561 nan 0.1000 -0.0007
## 120 0.0394 nan 0.1000 -0.0013
## 140 0.0291 nan 0.1000 -0.0008
## 150 0.0252 nan 0.1000 -0.0007
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9117 nan 0.1000 0.0727
## 2 0.8603 nan 0.1000 0.0529
## 3 0.8206 nan 0.1000 0.0213
## 4 0.7721 nan 0.1000 0.0409
## 5 0.7159 nan 0.1000 0.0408
## 6 0.6775 nan 0.1000 0.0275
## 7 0.6374 nan 0.1000 0.0330
## 8 0.6088 nan 0.1000 0.0248
## 9 0.5809 nan 0.1000 0.0211
## 10 0.5571 nan 0.1000 0.0152
## 20 0.4093 nan 0.1000 0.0049
## 40 0.3138 nan 0.1000 -0.0022
## 60 0.2677 nan 0.1000 -0.0010
## 80 0.2313 nan 0.1000 -0.0035
## 100 0.2017 nan 0.1000 -0.0046
## 120 0.1758 nan 0.1000 -0.0013
## 140 0.1582 nan 0.1000 -0.0007
## 150 0.1491 nan 0.1000 -0.0006
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.8882 nan 0.1000 0.0882
## 2 0.8126 nan 0.1000 0.0540
## 3 0.7408 nan 0.1000 0.0635
## 4 0.6966 nan 0.1000 0.0283
## 5 0.6449 nan 0.1000 0.0273
## 6 0.6043 nan 0.1000 0.0322
## 7 0.5628 nan 0.1000 0.0209
## 8 0.5322 nan 0.1000 0.0226
## 9 0.4954 nan 0.1000 0.0198
## 10 0.4673 nan 0.1000 0.0193
## 20 0.3314 nan 0.1000 0.0056
## 40 0.2082 nan 0.1000 -0.0033
## 60 0.1498 nan 0.1000 -0.0033
## 80 0.1124 nan 0.1000 -0.0009
## 100 0.0867 nan 0.1000 -0.0005
## 120 0.0684 nan 0.1000 -0.0013
## 140 0.0541 nan 0.1000 -0.0021
## 150 0.0482 nan 0.1000 -0.0004
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.8770 nan 0.1000 0.0877
## 2 0.7904 nan 0.1000 0.0674
## 3 0.7270 nan 0.1000 0.0352
## 4 0.6786 nan 0.1000 0.0345
## 5 0.6267 nan 0.1000 0.0486
## 6 0.5804 nan 0.1000 0.0485
## 7 0.5396 nan 0.1000 0.0262
## 8 0.5026 nan 0.1000 0.0189
## 9 0.4685 nan 0.1000 0.0238
## 10 0.4378 nan 0.1000 0.0232
## 20 0.2838 nan 0.1000 0.0001
## 40 0.1612 nan 0.1000 -0.0015
## 60 0.1045 nan 0.1000 -0.0017
## 80 0.0711 nan 0.1000 -0.0005
## 100 0.0490 nan 0.1000 -0.0011
## 120 0.0346 nan 0.1000 -0.0005
## 140 0.0247 nan 0.1000 -0.0008
## 150 0.0208 nan 0.1000 -0.0003
##
## Iter TrainDeviance ValidDeviance StepSize Improve
## 1 0.9044 nan 0.1000 0.1164
## 2 0.8059 nan 0.1000 0.0790
## 3 0.7285 nan 0.1000 0.0544
## 4 0.6613 nan 0.1000 0.0486
## 5 0.6143 nan 0.1000 0.0339
## 6 0.5688 nan 0.1000 0.0262
## 7 0.5270 nan 0.1000 0.0272
## 8 0.5113 nan 0.1000 0.0002
## 9 0.4765 nan 0.1000 0.0330
## 10 0.4516 nan 0.1000 0.0202
## 20 0.3046 nan 0.1000 -0.0032
## 40 0.1904 nan 0.1000 -0.0022
## 60 0.1260 nan 0.1000 -0.0018
## 80 0.0859 nan 0.1000 -0.0003
## 100 0.0630 nan 0.1000 -0.0014
## 120 0.0454 nan 0.1000 -0.0007
## 140 0.0341 nan 0.1000 -0.0008
## 150 0.0290 nan 0.1000 -0.0006
boosttrees_pred = predict(boosttrees_model, test_df_chem)
boosttrees_results = postResample(pred = boosttrees_pred, obs = test_df_chem$Yield)
cubist_model = train(Yield~.,data=training_df_chem,method='cubist',
preProcess = c('center', 'scale'),trControl=trainControl('cv'))
cubist_pred = predict(cubist_model, test_df_chem)
cubist_results = postResample(pred = cubist_pred, obs = test_df_chem$Yield)
rmse_df =rbind(data.frame(Name = 'SimpleTree', RMSE = simple_tree_results[1]), data.frame(Name= 'RandomForest', RMSE = randomforest_results[1]) , data.frame(Name = 'BoostingTree', RMSE = boosttrees_results[1]), data.frame(Name = 'Cubist', RMSE = cubist_results[1]))
rmse_df$RMSE = round(rmse_df$RMSE,3)
ggplot(data=rmse_df,aes(x = Name, y = RMSE, fill=Name)) + geom_bar(stat="identity", position=position_dodge()) +
geom_text(aes(label=RMSE), vjust=1, color="black",
position = position_dodge(0.9), size=3.5)
8.7b) Manufacturing dominates the list.
cube_vars = varImp(cubist_model)
print(paste("Manufacturing:",length(cube_vars$importance[grepl('Manufacturing', rownames(cube_vars$importance), fixed = TRUE),])))
## [1] "Manufacturing: 45"
print(paste("Biology:",length(cube_vars$importance[grepl('Biological', rownames(cube_vars$importance), fixed = TRUE),])))
## [1] "Biology: 11"
simplemodel_vars = varImp(simple_tree_model)
rfmodel_vars = varImp(randomforest_model)
cube_vars$importance %>% slice_max(Overall, n = 10)
## Overall
## ManufacturingProcess32 100.00000
## ManufacturingProcess13 66.29213
## BiologicalMaterial03 48.31461
## ManufacturingProcess09 43.82022
## BiologicalMaterial06 34.83146
## ManufacturingProcess17 28.08989
## BiologicalMaterial02 24.71910
## ManufacturingProcess33 22.47191
## BiologicalMaterial09 20.22472
## ManufacturingProcess01 17.97753
## BiologicalMaterial08 17.97753
simplemodel_vars$importance %>% slice_max(Overall, n = 10)
## Overall
## BiologicalMaterial12 100.00000
## ManufacturingProcess13 88.60150
## ManufacturingProcess32 73.55676
## BiologicalMaterial03 47.82968
## BiologicalMaterial11 46.86015
## BiologicalMaterial06 45.17594
## BiologicalMaterial08 39.57619
## ManufacturingProcess09 36.35879
## BiologicalMaterial01 0.00000
## BiologicalMaterial02 0.00000
## BiologicalMaterial04 0.00000
## BiologicalMaterial05 0.00000
## BiologicalMaterial09 0.00000
## BiologicalMaterial10 0.00000
## ManufacturingProcess01 0.00000
## ManufacturingProcess02 0.00000
## ManufacturingProcess03 0.00000
## ManufacturingProcess04 0.00000
## ManufacturingProcess05 0.00000
## ManufacturingProcess06 0.00000
## ManufacturingProcess07 0.00000
## ManufacturingProcess08 0.00000
## ManufacturingProcess10 0.00000
## ManufacturingProcess11 0.00000
## ManufacturingProcess12 0.00000
## ManufacturingProcess14 0.00000
## ManufacturingProcess15 0.00000
## ManufacturingProcess16 0.00000
## ManufacturingProcess17 0.00000
## ManufacturingProcess18 0.00000
## ManufacturingProcess19 0.00000
## ManufacturingProcess20 0.00000
## ManufacturingProcess21 0.00000
## ManufacturingProcess22 0.00000
## ManufacturingProcess23 0.00000
## ManufacturingProcess24 0.00000
## ManufacturingProcess25 0.00000
## ManufacturingProcess26 0.00000
## ManufacturingProcess27 0.00000
## ManufacturingProcess28 0.00000
## ManufacturingProcess29 0.00000
## ManufacturingProcess30 0.00000
## ManufacturingProcess31 0.00000
## ManufacturingProcess33 0.00000
## ManufacturingProcess34 0.00000
## ManufacturingProcess35 0.00000
## ManufacturingProcess36 0.00000
## ManufacturingProcess37 0.00000
## ManufacturingProcess38 0.00000
## ManufacturingProcess39 0.00000
## ManufacturingProcess40 0.00000
## ManufacturingProcess41 0.00000
## ManufacturingProcess42 0.00000
## ManufacturingProcess43 0.00000
## ManufacturingProcess44 0.00000
## ManufacturingProcess45 0.00000
rfmodel_vars$importance %>% slice_max(Overall, n = 10)
## Overall
## ManufacturingProcess32 100.000000
## ManufacturingProcess13 29.178168
## BiologicalMaterial03 26.438218
## BiologicalMaterial12 21.512919
## BiologicalMaterial06 18.616296
## ManufacturingProcess17 11.471176
## BiologicalMaterial11 10.236880
## ManufacturingProcess09 9.692788
## ManufacturingProcess06 8.931199
## ManufacturingProcess36 7.723150
8.7.c) Manufacturing process contribute the greatest to yield in the optimal tree process.
library(rpart.plot)
rpart.plot(rpart(Yield~., data=training_df_chem))