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))