Synopsis

This markdown file outlines the process for selecting and building the optimal model on 20 test cases from the data “Weight Lifting Exercises Dataset” available at http://groupware.les.inf.puc-rio.br/har

Data Processing

Reading Data

1. Read the Training and Test data sources from the links provided

## Download and read raw data
url1 <- "http://d396qusza40orc.cloudfront.net/predmachlearn/pml-training.csv"
download.file(url1, destfile="pml-training.csv")
url2 <- "http://d396qusza40orc.cloudfront.net/predmachlearn/pml-testing.csv"
download.file(url2, destfile="pml-testing.csv")
Train <- read.csv("pml-training.csv", header=TRUE)
Test <- read.csv("pml-testing.csv", header=TRUE)
str(Train)
## 'data.frame':    19622 obs. of  160 variables:
##  $ X                       : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ user_name               : Factor w/ 6 levels "adelmo","carlitos",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ raw_timestamp_part_1    : int  1323084231 1323084231 1323084231 1323084232 1323084232 1323084232 1323084232 1323084232 1323084232 1323084232 ...
##  $ raw_timestamp_part_2    : int  788290 808298 820366 120339 196328 304277 368296 440390 484323 484434 ...
##  $ cvtd_timestamp          : Factor w/ 20 levels "02/12/2011 13:32",..: 9 9 9 9 9 9 9 9 9 9 ...
##  $ new_window              : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
##  $ num_window              : int  11 11 11 12 12 12 12 12 12 12 ...
##  $ roll_belt               : num  1.41 1.41 1.42 1.48 1.48 1.45 1.42 1.42 1.43 1.45 ...
##  $ pitch_belt              : num  8.07 8.07 8.07 8.05 8.07 8.06 8.09 8.13 8.16 8.17 ...
##  $ yaw_belt                : num  -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 -94.4 ...
##  $ total_accel_belt        : int  3 3 3 3 3 3 3 3 3 3 ...
##  $ kurtosis_roll_belt      : Factor w/ 397 levels "","-0.016850",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_picth_belt     : Factor w/ 317 levels "","-0.021887",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_yaw_belt       : Factor w/ 2 levels "","#DIV/0!": 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_roll_belt      : Factor w/ 395 levels "","-0.003095",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_roll_belt.1    : Factor w/ 338 levels "","-0.005928",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_yaw_belt       : Factor w/ 2 levels "","#DIV/0!": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_roll_belt           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_picth_belt          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_yaw_belt            : Factor w/ 68 levels "","-0.1","-0.2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_roll_belt           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_pitch_belt          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_yaw_belt            : Factor w/ 68 levels "","-0.1","-0.2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_roll_belt     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_pitch_belt    : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_yaw_belt      : Factor w/ 4 levels "","#DIV/0!","0.00",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ var_total_accel_belt    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_roll_belt           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_roll_belt        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_roll_belt           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_pitch_belt          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_pitch_belt       : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_pitch_belt          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_yaw_belt            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_yaw_belt         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_yaw_belt            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ gyros_belt_x            : num  0 0.02 0 0.02 0.02 0.02 0.02 0.02 0.02 0.03 ...
##  $ gyros_belt_y            : num  0 0 0 0 0.02 0 0 0 0 0 ...
##  $ gyros_belt_z            : num  -0.02 -0.02 -0.02 -0.03 -0.02 -0.02 -0.02 -0.02 -0.02 0 ...
##  $ accel_belt_x            : int  -21 -22 -20 -22 -21 -21 -22 -22 -20 -21 ...
##  $ accel_belt_y            : int  4 4 5 3 2 4 3 4 2 4 ...
##  $ accel_belt_z            : int  22 22 23 21 24 21 21 21 24 22 ...
##  $ magnet_belt_x           : int  -3 -7 -2 -6 -6 0 -4 -2 1 -3 ...
##  $ magnet_belt_y           : int  599 608 600 604 600 603 599 603 602 609 ...
##  $ magnet_belt_z           : int  -313 -311 -305 -310 -302 -312 -311 -313 -312 -308 ...
##  $ roll_arm                : num  -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 ...
##  $ pitch_arm               : num  22.5 22.5 22.5 22.1 22.1 22 21.9 21.8 21.7 21.6 ...
##  $ yaw_arm                 : num  -161 -161 -161 -161 -161 -161 -161 -161 -161 -161 ...
##  $ total_accel_arm         : int  34 34 34 34 34 34 34 34 34 34 ...
##  $ var_accel_arm           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_roll_arm            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_roll_arm         : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_roll_arm            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_pitch_arm           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_pitch_arm        : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_pitch_arm           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ avg_yaw_arm             : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ stddev_yaw_arm          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ var_yaw_arm             : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ gyros_arm_x             : num  0 0.02 0.02 0.02 0 0.02 0 0.02 0.02 0.02 ...
##  $ gyros_arm_y             : num  0 -0.02 -0.02 -0.03 -0.03 -0.03 -0.03 -0.02 -0.03 -0.03 ...
##  $ gyros_arm_z             : num  -0.02 -0.02 -0.02 0.02 0 0 0 0 -0.02 -0.02 ...
##  $ accel_arm_x             : int  -288 -290 -289 -289 -289 -289 -289 -289 -288 -288 ...
##  $ accel_arm_y             : int  109 110 110 111 111 111 111 111 109 110 ...
##  $ accel_arm_z             : int  -123 -125 -126 -123 -123 -122 -125 -124 -122 -124 ...
##  $ magnet_arm_x            : int  -368 -369 -368 -372 -374 -369 -373 -372 -369 -376 ...
##  $ magnet_arm_y            : int  337 337 344 344 337 342 336 338 341 334 ...
##  $ magnet_arm_z            : int  516 513 513 512 506 513 509 510 518 516 ...
##  $ kurtosis_roll_arm       : Factor w/ 330 levels "","-0.02438",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_picth_arm      : Factor w/ 328 levels "","-0.00484",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_yaw_arm        : Factor w/ 395 levels "","-0.01548",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_roll_arm       : Factor w/ 331 levels "","-0.00051",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_pitch_arm      : Factor w/ 328 levels "","-0.00184",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_yaw_arm        : Factor w/ 395 levels "","-0.00311",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_roll_arm            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_picth_arm           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_yaw_arm             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_roll_arm            : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_pitch_arm           : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_yaw_arm             : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_roll_arm      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_pitch_arm     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ amplitude_yaw_arm       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ roll_dumbbell           : num  13.1 13.1 12.9 13.4 13.4 ...
##  $ pitch_dumbbell          : num  -70.5 -70.6 -70.3 -70.4 -70.4 ...
##  $ yaw_dumbbell            : num  -84.9 -84.7 -85.1 -84.9 -84.9 ...
##  $ kurtosis_roll_dumbbell  : Factor w/ 398 levels "","-0.0035","-0.0073",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_picth_dumbbell : Factor w/ 401 levels "","-0.0163","-0.0233",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ kurtosis_yaw_dumbbell   : Factor w/ 2 levels "","#DIV/0!": 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_roll_dumbbell  : Factor w/ 401 levels "","-0.0082","-0.0096",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_pitch_dumbbell : Factor w/ 402 levels "","-0.0053","-0.0084",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ skewness_yaw_dumbbell   : Factor w/ 2 levels "","#DIV/0!": 1 1 1 1 1 1 1 1 1 1 ...
##  $ max_roll_dumbbell       : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_picth_dumbbell      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ max_yaw_dumbbell        : Factor w/ 73 levels "","-0.1","-0.2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ min_roll_dumbbell       : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_pitch_dumbbell      : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ min_yaw_dumbbell        : Factor w/ 73 levels "","-0.1","-0.2",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ amplitude_roll_dumbbell : num  NA NA NA NA NA NA NA NA NA NA ...
##   [list output truncated]

Exploratory analysis are performed on the Train set only, not on the Test set.It is determined that there are 19622 observations, consisting of 160 variables.

Normalizing and Selecting Data

Quite a few variables in the data set contain values such as NA or are missing data. An example of such a varible is called out below. We will be excluding these variables from our model due to the lack of valid measurements.

summary(Train$var_total_accel_belt)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   0.100   0.200   0.926   0.300  16.500   19216

This reduces the number of variables to 54, including our prediction variable classe.

Tidy <- Train[,-c(grep("^amplitude|^kurtosis|^skewness|^avg|^cvtd_timestamp|^max|^min|^new_window|^raw_timestamp|^stddev|^var|^user_name|X",names(Train)))]

paste("Complete Cases:")
## [1] "Complete Cases:"
table(complete.cases(Tidy))
## 
##  TRUE 
## 19622

The data is further segregated into two sets, 60% for the training set and 40% for the test set. Also we set the seed for reproducability.

library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
set.seed(22)
inTrain <- createDataPartition(y=Tidy$classe,
                               p=0.6,list=FALSE)
TidyTrain <- Tidy[inTrain,]
TidyTest <- Tidy[-inTrain,]

Model Selection

Model Comparison

We will be using the random forest and gradient boosting algorithms for comparison because these two models are the recommended and most accurate for our purposes.We use Kappa as the comparison criteria, and reduce the risk of overfitting by using a 10-fold cross validation.

set.seed(22)
# k-fold validation - 10-fold validation, use kappa as metric
fitControl <- trainControl(method = "cv", number = 10)
gbmFit <- train(classe~., data=TidyTrain, method="gbm", metric="Kappa", trControl=fitControl)
## Loading required package: gbm
## Loading required package: survival
## 
## Attaching package: 'survival'
## 
## The following object is masked from 'package:caret':
## 
##     cluster
## 
## Loading required package: splines
## Loading required package: parallel
## Loaded gbm 2.1.1
## Loading required package: plyr
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1339
##      2        1.5204             nan     0.1000    0.0893
##      3        1.4599             nan     0.1000    0.0709
##      4        1.4140             nan     0.1000    0.0520
##      5        1.3785             nan     0.1000    0.0524
##      6        1.3441             nan     0.1000    0.0393
##      7        1.3181             nan     0.1000    0.0403
##      8        1.2924             nan     0.1000    0.0306
##      9        1.2712             nan     0.1000    0.0362
##     10        1.2451             nan     0.1000    0.0316
##     20        1.0817             nan     0.1000    0.0211
##     40        0.8994             nan     0.1000    0.0089
##     60        0.7860             nan     0.1000    0.0061
##     80        0.7050             nan     0.1000    0.0032
##    100        0.6423             nan     0.1000    0.0031
##    120        0.5880             nan     0.1000    0.0035
##    140        0.5422             nan     0.1000    0.0028
##    150        0.5214             nan     0.1000    0.0023
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1949
##      2        1.4836             nan     0.1000    0.1312
##      3        1.3975             nan     0.1000    0.1083
##      4        1.3274             nan     0.1000    0.0907
##      5        1.2696             nan     0.1000    0.0761
##      6        1.2208             nan     0.1000    0.0639
##      7        1.1782             nan     0.1000    0.0665
##      8        1.1365             nan     0.1000    0.0502
##      9        1.1041             nan     0.1000    0.0440
##     10        1.0753             nan     0.1000    0.0490
##     20        0.8503             nan     0.1000    0.0221
##     40        0.6281             nan     0.1000    0.0099
##     60        0.4897             nan     0.1000    0.0114
##     80        0.3956             nan     0.1000    0.0058
##    100        0.3282             nan     0.1000    0.0060
##    120        0.2798             nan     0.1000    0.0025
##    140        0.2366             nan     0.1000    0.0019
##    150        0.2151             nan     0.1000    0.0033
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2427
##      2        1.4547             nan     0.1000    0.1717
##      3        1.3468             nan     0.1000    0.1264
##      4        1.2656             nan     0.1000    0.1141
##      5        1.1931             nan     0.1000    0.0872
##      6        1.1363             nan     0.1000    0.0925
##      7        1.0797             nan     0.1000    0.0733
##      8        1.0332             nan     0.1000    0.0662
##      9        0.9911             nan     0.1000    0.0628
##     10        0.9515             nan     0.1000    0.0457
##     20        0.6866             nan     0.1000    0.0199
##     40        0.4503             nan     0.1000    0.0125
##     60        0.3221             nan     0.1000    0.0078
##     80        0.2509             nan     0.1000    0.0055
##    100        0.1959             nan     0.1000    0.0053
##    120        0.1537             nan     0.1000    0.0030
##    140        0.1211             nan     0.1000    0.0017
##    150        0.1084             nan     0.1000    0.0005
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1331
##      2        1.5188             nan     0.1000    0.0914
##      3        1.4587             nan     0.1000    0.0710
##      4        1.4125             nan     0.1000    0.0554
##      5        1.3765             nan     0.1000    0.0512
##      6        1.3435             nan     0.1000    0.0405
##      7        1.3168             nan     0.1000    0.0407
##      8        1.2906             nan     0.1000    0.0310
##      9        1.2706             nan     0.1000    0.0381
##     10        1.2448             nan     0.1000    0.0314
##     20        1.0788             nan     0.1000    0.0179
##     40        0.8954             nan     0.1000    0.0105
##     60        0.7852             nan     0.1000    0.0051
##     80        0.7051             nan     0.1000    0.0048
##    100        0.6419             nan     0.1000    0.0036
##    120        0.5859             nan     0.1000    0.0026
##    140        0.5411             nan     0.1000    0.0031
##    150        0.5198             nan     0.1000    0.0028
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2000
##      2        1.4820             nan     0.1000    0.1315
##      3        1.3949             nan     0.1000    0.1049
##      4        1.3253             nan     0.1000    0.0920
##      5        1.2682             nan     0.1000    0.0770
##      6        1.2198             nan     0.1000    0.0671
##      7        1.1757             nan     0.1000    0.0514
##      8        1.1405             nan     0.1000    0.0498
##      9        1.1072             nan     0.1000    0.0593
##     10        1.0702             nan     0.1000    0.0423
##     20        0.8398             nan     0.1000    0.0279
##     40        0.6170             nan     0.1000    0.0114
##     60        0.4827             nan     0.1000    0.0079
##     80        0.3894             nan     0.1000    0.0088
##    100        0.3253             nan     0.1000    0.0043
##    120        0.2731             nan     0.1000    0.0042
##    140        0.2295             nan     0.1000    0.0023
##    150        0.2124             nan     0.1000    0.0019
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2445
##      2        1.4537             nan     0.1000    0.1632
##      3        1.3474             nan     0.1000    0.1254
##      4        1.2669             nan     0.1000    0.1130
##      5        1.1965             nan     0.1000    0.0956
##      6        1.1366             nan     0.1000    0.0783
##      7        1.0871             nan     0.1000    0.0767
##      8        1.0388             nan     0.1000    0.0677
##      9        0.9965             nan     0.1000    0.0612
##     10        0.9580             nan     0.1000    0.0562
##     20        0.7026             nan     0.1000    0.0277
##     40        0.4539             nan     0.1000    0.0122
##     60        0.3289             nan     0.1000    0.0079
##     80        0.2450             nan     0.1000    0.0032
##    100        0.1916             nan     0.1000    0.0037
##    120        0.1514             nan     0.1000    0.0019
##    140        0.1220             nan     0.1000    0.0015
##    150        0.1098             nan     0.1000    0.0010
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1351
##      2        1.5193             nan     0.1000    0.0912
##      3        1.4590             nan     0.1000    0.0703
##      4        1.4131             nan     0.1000    0.0567
##      5        1.3761             nan     0.1000    0.0444
##      6        1.3466             nan     0.1000    0.0466
##      7        1.3164             nan     0.1000    0.0405
##      8        1.2903             nan     0.1000    0.0363
##      9        1.2658             nan     0.1000    0.0342
##     10        1.2448             nan     0.1000    0.0253
##     20        1.0812             nan     0.1000    0.0184
##     40        0.8980             nan     0.1000    0.0106
##     60        0.7876             nan     0.1000    0.0068
##     80        0.7057             nan     0.1000    0.0035
##    100        0.6411             nan     0.1000    0.0043
##    120        0.5852             nan     0.1000    0.0022
##    140        0.5387             nan     0.1000    0.0019
##    150        0.5196             nan     0.1000    0.0025
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1987
##      2        1.4819             nan     0.1000    0.1385
##      3        1.3920             nan     0.1000    0.1080
##      4        1.3230             nan     0.1000    0.0894
##      5        1.2661             nan     0.1000    0.0772
##      6        1.2168             nan     0.1000    0.0674
##      7        1.1734             nan     0.1000    0.0614
##      8        1.1346             nan     0.1000    0.0577
##      9        1.0982             nan     0.1000    0.0532
##     10        1.0653             nan     0.1000    0.0465
##     20        0.8384             nan     0.1000    0.0199
##     40        0.6128             nan     0.1000    0.0094
##     60        0.4740             nan     0.1000    0.0093
##     80        0.3861             nan     0.1000    0.0043
##    100        0.3208             nan     0.1000    0.0054
##    120        0.2689             nan     0.1000    0.0018
##    140        0.2325             nan     0.1000    0.0016
##    150        0.2166             nan     0.1000    0.0031
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2463
##      2        1.4535             nan     0.1000    0.1665
##      3        1.3470             nan     0.1000    0.1305
##      4        1.2646             nan     0.1000    0.1125
##      5        1.1928             nan     0.1000    0.0937
##      6        1.1334             nan     0.1000    0.0777
##      7        1.0841             nan     0.1000    0.0768
##      8        1.0341             nan     0.1000    0.0601
##      9        0.9960             nan     0.1000    0.0814
##     10        0.9476             nan     0.1000    0.0588
##     20        0.6872             nan     0.1000    0.0245
##     40        0.4491             nan     0.1000    0.0136
##     60        0.3298             nan     0.1000    0.0073
##     80        0.2498             nan     0.1000    0.0046
##    100        0.1952             nan     0.1000    0.0022
##    120        0.1555             nan     0.1000    0.0029
##    140        0.1246             nan     0.1000    0.0014
##    150        0.1131             nan     0.1000    0.0006
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1337
##      2        1.5196             nan     0.1000    0.0914
##      3        1.4606             nan     0.1000    0.0702
##      4        1.4141             nan     0.1000    0.0547
##      5        1.3779             nan     0.1000    0.0496
##      6        1.3448             nan     0.1000    0.0433
##      7        1.3173             nan     0.1000    0.0403
##      8        1.2912             nan     0.1000    0.0325
##      9        1.2694             nan     0.1000    0.0389
##     10        1.2431             nan     0.1000    0.0295
##     20        1.0818             nan     0.1000    0.0178
##     40        0.9000             nan     0.1000    0.0098
##     60        0.7872             nan     0.1000    0.0061
##     80        0.7064             nan     0.1000    0.0033
##    100        0.6437             nan     0.1000    0.0037
##    120        0.5889             nan     0.1000    0.0039
##    140        0.5419             nan     0.1000    0.0022
##    150        0.5207             nan     0.1000    0.0030
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1955
##      2        1.4813             nan     0.1000    0.1343
##      3        1.3953             nan     0.1000    0.1020
##      4        1.3282             nan     0.1000    0.0902
##      5        1.2701             nan     0.1000    0.0765
##      6        1.2214             nan     0.1000    0.0681
##      7        1.1774             nan     0.1000    0.0578
##      8        1.1395             nan     0.1000    0.0571
##      9        1.1037             nan     0.1000    0.0479
##     10        1.0724             nan     0.1000    0.0455
##     20        0.8479             nan     0.1000    0.0266
##     40        0.6199             nan     0.1000    0.0097
##     60        0.4853             nan     0.1000    0.0070
##     80        0.3954             nan     0.1000    0.0066
##    100        0.3288             nan     0.1000    0.0032
##    120        0.2745             nan     0.1000    0.0015
##    140        0.2344             nan     0.1000    0.0025
##    150        0.2160             nan     0.1000    0.0026
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2450
##      2        1.4538             nan     0.1000    0.1645
##      3        1.3490             nan     0.1000    0.1249
##      4        1.2693             nan     0.1000    0.1007
##      5        1.2033             nan     0.1000    0.1008
##      6        1.1423             nan     0.1000    0.0783
##      7        1.0913             nan     0.1000    0.0752
##      8        1.0448             nan     0.1000    0.0585
##      9        1.0069             nan     0.1000    0.0586
##     10        0.9694             nan     0.1000    0.0667
##     20        0.6878             nan     0.1000    0.0310
##     40        0.4457             nan     0.1000    0.0121
##     60        0.3188             nan     0.1000    0.0046
##     80        0.2427             nan     0.1000    0.0039
##    100        0.1894             nan     0.1000    0.0050
##    120        0.1473             nan     0.1000    0.0020
##    140        0.1169             nan     0.1000    0.0017
##    150        0.1033             nan     0.1000    0.0014
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1350
##      2        1.5201             nan     0.1000    0.0903
##      3        1.4604             nan     0.1000    0.0679
##      4        1.4149             nan     0.1000    0.0527
##      5        1.3787             nan     0.1000    0.0523
##      6        1.3440             nan     0.1000    0.0463
##      7        1.3148             nan     0.1000    0.0356
##      8        1.2917             nan     0.1000    0.0393
##      9        1.2678             nan     0.1000    0.0347
##     10        1.2436             nan     0.1000    0.0289
##     20        1.0827             nan     0.1000    0.0152
##     40        0.9006             nan     0.1000    0.0069
##     60        0.7892             nan     0.1000    0.0061
##     80        0.7073             nan     0.1000    0.0051
##    100        0.6430             nan     0.1000    0.0041
##    120        0.5889             nan     0.1000    0.0035
##    140        0.5427             nan     0.1000    0.0028
##    150        0.5217             nan     0.1000    0.0035
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1994
##      2        1.4818             nan     0.1000    0.1306
##      3        1.3965             nan     0.1000    0.1094
##      4        1.3257             nan     0.1000    0.0874
##      5        1.2682             nan     0.1000    0.0750
##      6        1.2204             nan     0.1000    0.0682
##      7        1.1757             nan     0.1000    0.0562
##      8        1.1388             nan     0.1000    0.0520
##      9        1.1051             nan     0.1000    0.0535
##     10        1.0712             nan     0.1000    0.0430
##     20        0.8419             nan     0.1000    0.0210
##     40        0.6137             nan     0.1000    0.0112
##     60        0.4769             nan     0.1000    0.0067
##     80        0.3921             nan     0.1000    0.0045
##    100        0.3266             nan     0.1000    0.0022
##    120        0.2753             nan     0.1000    0.0027
##    140        0.2355             nan     0.1000    0.0032
##    150        0.2188             nan     0.1000    0.0019
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2445
##      2        1.4533             nan     0.1000    0.1686
##      3        1.3457             nan     0.1000    0.1371
##      4        1.2597             nan     0.1000    0.1026
##      5        1.1934             nan     0.1000    0.0997
##      6        1.1318             nan     0.1000    0.0702
##      7        1.0862             nan     0.1000    0.0768
##      8        1.0382             nan     0.1000    0.0577
##      9        1.0008             nan     0.1000    0.0636
##     10        0.9594             nan     0.1000    0.0576
##     20        0.6980             nan     0.1000    0.0315
##     40        0.4583             nan     0.1000    0.0132
##     60        0.3324             nan     0.1000    0.0107
##     80        0.2510             nan     0.1000    0.0040
##    100        0.1964             nan     0.1000    0.0044
##    120        0.1573             nan     0.1000    0.0022
##    140        0.1260             nan     0.1000    0.0030
##    150        0.1135             nan     0.1000    0.0012
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1336
##      2        1.5207             nan     0.1000    0.0894
##      3        1.4610             nan     0.1000    0.0699
##      4        1.4149             nan     0.1000    0.0549
##      5        1.3790             nan     0.1000    0.0447
##      6        1.3495             nan     0.1000    0.0456
##      7        1.3200             nan     0.1000    0.0422
##      8        1.2934             nan     0.1000    0.0389
##      9        1.2668             nan     0.1000    0.0330
##     10        1.2463             nan     0.1000    0.0318
##     20        1.0851             nan     0.1000    0.0208
##     40        0.8999             nan     0.1000    0.0078
##     60        0.7919             nan     0.1000    0.0059
##     80        0.7089             nan     0.1000    0.0045
##    100        0.6444             nan     0.1000    0.0039
##    120        0.5901             nan     0.1000    0.0029
##    140        0.5417             nan     0.1000    0.0024
##    150        0.5213             nan     0.1000    0.0028
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1913
##      2        1.4854             nan     0.1000    0.1351
##      3        1.3976             nan     0.1000    0.1085
##      4        1.3281             nan     0.1000    0.0943
##      5        1.2673             nan     0.1000    0.0721
##      6        1.2197             nan     0.1000    0.0723
##      7        1.1724             nan     0.1000    0.0529
##      8        1.1373             nan     0.1000    0.0596
##      9        1.1002             nan     0.1000    0.0440
##     10        1.0716             nan     0.1000    0.0506
##     20        0.8424             nan     0.1000    0.0256
##     40        0.6115             nan     0.1000    0.0095
##     60        0.4792             nan     0.1000    0.0085
##     80        0.3910             nan     0.1000    0.0040
##    100        0.3269             nan     0.1000    0.0029
##    120        0.2719             nan     0.1000    0.0027
##    140        0.2325             nan     0.1000    0.0012
##    150        0.2144             nan     0.1000    0.0014
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2471
##      2        1.4525             nan     0.1000    0.1687
##      3        1.3476             nan     0.1000    0.1280
##      4        1.2648             nan     0.1000    0.1001
##      5        1.2000             nan     0.1000    0.1033
##      6        1.1343             nan     0.1000    0.0788
##      7        1.0835             nan     0.1000    0.0754
##      8        1.0361             nan     0.1000    0.0655
##      9        0.9940             nan     0.1000    0.0582
##     10        0.9576             nan     0.1000    0.0639
##     20        0.6859             nan     0.1000    0.0257
##     40        0.4540             nan     0.1000    0.0109
##     60        0.3262             nan     0.1000    0.0058
##     80        0.2465             nan     0.1000    0.0050
##    100        0.1931             nan     0.1000    0.0023
##    120        0.1519             nan     0.1000    0.0023
##    140        0.1223             nan     0.1000    0.0016
##    150        0.1090             nan     0.1000    0.0012
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1320
##      2        1.5211             nan     0.1000    0.0893
##      3        1.4624             nan     0.1000    0.0673
##      4        1.4180             nan     0.1000    0.0597
##      5        1.3800             nan     0.1000    0.0510
##      6        1.3463             nan     0.1000    0.0437
##      7        1.3176             nan     0.1000    0.0355
##      8        1.2945             nan     0.1000    0.0385
##      9        1.2680             nan     0.1000    0.0319
##     10        1.2476             nan     0.1000    0.0285
##     20        1.0848             nan     0.1000    0.0194
##     40        0.8983             nan     0.1000    0.0106
##     60        0.7890             nan     0.1000    0.0081
##     80        0.7080             nan     0.1000    0.0054
##    100        0.6432             nan     0.1000    0.0038
##    120        0.5882             nan     0.1000    0.0029
##    140        0.5418             nan     0.1000    0.0025
##    150        0.5211             nan     0.1000    0.0021
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1984
##      2        1.4809             nan     0.1000    0.1337
##      3        1.3938             nan     0.1000    0.1061
##      4        1.3254             nan     0.1000    0.0907
##      5        1.2684             nan     0.1000    0.0739
##      6        1.2212             nan     0.1000    0.0720
##      7        1.1756             nan     0.1000    0.0600
##      8        1.1367             nan     0.1000    0.0501
##      9        1.1042             nan     0.1000    0.0551
##     10        1.0696             nan     0.1000    0.0470
##     20        0.8435             nan     0.1000    0.0198
##     40        0.6107             nan     0.1000    0.0134
##     60        0.4816             nan     0.1000    0.0101
##     80        0.3912             nan     0.1000    0.0066
##    100        0.3244             nan     0.1000    0.0022
##    120        0.2740             nan     0.1000    0.0019
##    140        0.2331             nan     0.1000    0.0015
##    150        0.2145             nan     0.1000    0.0019
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2402
##      2        1.4564             nan     0.1000    0.1734
##      3        1.3477             nan     0.1000    0.1276
##      4        1.2662             nan     0.1000    0.1066
##      5        1.1970             nan     0.1000    0.0984
##      6        1.1364             nan     0.1000    0.0856
##      7        1.0816             nan     0.1000    0.0826
##      8        1.0295             nan     0.1000    0.0598
##      9        0.9913             nan     0.1000    0.0574
##     10        0.9537             nan     0.1000    0.0500
##     20        0.6879             nan     0.1000    0.0238
##     40        0.4510             nan     0.1000    0.0114
##     60        0.3320             nan     0.1000    0.0065
##     80        0.2550             nan     0.1000    0.0044
##    100        0.1949             nan     0.1000    0.0034
##    120        0.1555             nan     0.1000    0.0023
##    140        0.1252             nan     0.1000    0.0013
##    150        0.1138             nan     0.1000    0.0015
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1315
##      2        1.5208             nan     0.1000    0.0897
##      3        1.4599             nan     0.1000    0.0692
##      4        1.4135             nan     0.1000    0.0551
##      5        1.3773             nan     0.1000    0.0460
##      6        1.3469             nan     0.1000    0.0431
##      7        1.3189             nan     0.1000    0.0440
##      8        1.2921             nan     0.1000    0.0297
##      9        1.2715             nan     0.1000    0.0379
##     10        1.2461             nan     0.1000    0.0307
##     20        1.0829             nan     0.1000    0.0179
##     40        0.8976             nan     0.1000    0.0095
##     60        0.7876             nan     0.1000    0.0064
##     80        0.7051             nan     0.1000    0.0067
##    100        0.6391             nan     0.1000    0.0037
##    120        0.5864             nan     0.1000    0.0019
##    140        0.5405             nan     0.1000    0.0030
##    150        0.5189             nan     0.1000    0.0033
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1964
##      2        1.4825             nan     0.1000    0.1304
##      3        1.3963             nan     0.1000    0.1113
##      4        1.3243             nan     0.1000    0.0843
##      5        1.2673             nan     0.1000    0.0762
##      6        1.2180             nan     0.1000    0.0672
##      7        1.1741             nan     0.1000    0.0540
##      8        1.1391             nan     0.1000    0.0603
##      9        1.1012             nan     0.1000    0.0456
##     10        1.0720             nan     0.1000    0.0483
##     20        0.8431             nan     0.1000    0.0277
##     40        0.6144             nan     0.1000    0.0113
##     60        0.4877             nan     0.1000    0.0044
##     80        0.3917             nan     0.1000    0.0059
##    100        0.3233             nan     0.1000    0.0024
##    120        0.2761             nan     0.1000    0.0023
##    140        0.2383             nan     0.1000    0.0012
##    150        0.2192             nan     0.1000    0.0033
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2438
##      2        1.4538             nan     0.1000    0.1739
##      3        1.3463             nan     0.1000    0.1361
##      4        1.2602             nan     0.1000    0.1010
##      5        1.1939             nan     0.1000    0.0861
##      6        1.1393             nan     0.1000    0.0811
##      7        1.0875             nan     0.1000    0.0694
##      8        1.0432             nan     0.1000    0.0744
##      9        0.9976             nan     0.1000    0.0760
##     10        0.9524             nan     0.1000    0.0502
##     20        0.6887             nan     0.1000    0.0234
##     40        0.4427             nan     0.1000    0.0109
##     60        0.3276             nan     0.1000    0.0055
##     80        0.2460             nan     0.1000    0.0052
##    100        0.1938             nan     0.1000    0.0021
##    120        0.1539             nan     0.1000    0.0024
##    140        0.1261             nan     0.1000    0.0013
##    150        0.1140             nan     0.1000    0.0016
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1329
##      2        1.5200             nan     0.1000    0.0928
##      3        1.4581             nan     0.1000    0.0697
##      4        1.4125             nan     0.1000    0.0559
##      5        1.3751             nan     0.1000    0.0486
##      6        1.3438             nan     0.1000    0.0429
##      7        1.3142             nan     0.1000    0.0411
##      8        1.2865             nan     0.1000    0.0358
##      9        1.2636             nan     0.1000    0.0343
##     10        1.2399             nan     0.1000    0.0295
##     20        1.0783             nan     0.1000    0.0179
##     40        0.8983             nan     0.1000    0.0090
##     60        0.7870             nan     0.1000    0.0047
##     80        0.7075             nan     0.1000    0.0060
##    100        0.6410             nan     0.1000    0.0030
##    120        0.5878             nan     0.1000    0.0045
##    140        0.5407             nan     0.1000    0.0025
##    150        0.5199             nan     0.1000    0.0025
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1964
##      2        1.4842             nan     0.1000    0.1381
##      3        1.3946             nan     0.1000    0.1058
##      4        1.3260             nan     0.1000    0.0941
##      5        1.2658             nan     0.1000    0.0814
##      6        1.2144             nan     0.1000    0.0710
##      7        1.1693             nan     0.1000    0.0620
##      8        1.1292             nan     0.1000    0.0553
##      9        1.0944             nan     0.1000    0.0459
##     10        1.0648             nan     0.1000    0.0515
##     20        0.8370             nan     0.1000    0.0237
##     40        0.6075             nan     0.1000    0.0072
##     60        0.4789             nan     0.1000    0.0159
##     80        0.3866             nan     0.1000    0.0062
##    100        0.3165             nan     0.1000    0.0057
##    120        0.2646             nan     0.1000    0.0022
##    140        0.2261             nan     0.1000    0.0020
##    150        0.2090             nan     0.1000    0.0032
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2483
##      2        1.4537             nan     0.1000    0.1720
##      3        1.3432             nan     0.1000    0.1284
##      4        1.2613             nan     0.1000    0.1056
##      5        1.1937             nan     0.1000    0.0928
##      6        1.1348             nan     0.1000    0.0871
##      7        1.0786             nan     0.1000    0.0807
##      8        1.0283             nan     0.1000    0.0660
##      9        0.9862             nan     0.1000    0.0674
##     10        0.9445             nan     0.1000    0.0539
##     20        0.6829             nan     0.1000    0.0270
##     40        0.4496             nan     0.1000    0.0097
##     60        0.3279             nan     0.1000    0.0063
##     80        0.2546             nan     0.1000    0.0019
##    100        0.1967             nan     0.1000    0.0027
##    120        0.1528             nan     0.1000    0.0023
##    140        0.1228             nan     0.1000    0.0018
##    150        0.1104             nan     0.1000    0.0011
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1342
##      2        1.5213             nan     0.1000    0.0922
##      3        1.4614             nan     0.1000    0.0675
##      4        1.4164             nan     0.1000    0.0574
##      5        1.3794             nan     0.1000    0.0461
##      6        1.3491             nan     0.1000    0.0450
##      7        1.3199             nan     0.1000    0.0394
##      8        1.2948             nan     0.1000    0.0365
##      9        1.2713             nan     0.1000    0.0368
##     10        1.2468             nan     0.1000    0.0298
##     20        1.0827             nan     0.1000    0.0170
##     40        0.9012             nan     0.1000    0.0083
##     60        0.7865             nan     0.1000    0.0050
##     80        0.7057             nan     0.1000    0.0058
##    100        0.6405             nan     0.1000    0.0041
##    120        0.5870             nan     0.1000    0.0031
##    140        0.5405             nan     0.1000    0.0024
##    150        0.5206             nan     0.1000    0.0025
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.1918
##      2        1.4827             nan     0.1000    0.1388
##      3        1.3926             nan     0.1000    0.1091
##      4        1.3226             nan     0.1000    0.0846
##      5        1.2675             nan     0.1000    0.0756
##      6        1.2175             nan     0.1000    0.0685
##      7        1.1741             nan     0.1000    0.0663
##      8        1.1335             nan     0.1000    0.0502
##      9        1.1012             nan     0.1000    0.0505
##     10        1.0686             nan     0.1000    0.0388
##     20        0.8429             nan     0.1000    0.0299
##     40        0.6185             nan     0.1000    0.0135
##     60        0.4845             nan     0.1000    0.0091
##     80        0.3915             nan     0.1000    0.0046
##    100        0.3223             nan     0.1000    0.0022
##    120        0.2730             nan     0.1000    0.0037
##    140        0.2311             nan     0.1000    0.0038
##    150        0.2153             nan     0.1000    0.0014
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2401
##      2        1.4556             nan     0.1000    0.1710
##      3        1.3470             nan     0.1000    0.1323
##      4        1.2623             nan     0.1000    0.1096
##      5        1.1929             nan     0.1000    0.0957
##      6        1.1330             nan     0.1000    0.0793
##      7        1.0823             nan     0.1000    0.0740
##      8        1.0354             nan     0.1000    0.0555
##      9        0.9996             nan     0.1000    0.0627
##     10        0.9605             nan     0.1000    0.0569
##     20        0.6827             nan     0.1000    0.0194
##     40        0.4542             nan     0.1000    0.0152
##     60        0.3309             nan     0.1000    0.0078
##     80        0.2514             nan     0.1000    0.0036
##    100        0.1947             nan     0.1000    0.0040
##    120        0.1562             nan     0.1000    0.0017
##    140        0.1276             nan     0.1000    0.0018
##    150        0.1151             nan     0.1000    0.0007
## 
## Iter   TrainDeviance   ValidDeviance   StepSize   Improve
##      1        1.6094             nan     0.1000    0.2394
##      2        1.4556             nan     0.1000    0.1731
##      3        1.3448             nan     0.1000    0.1224
##      4        1.2667             nan     0.1000    0.1115
##      5        1.1959             nan     0.1000    0.0913
##      6        1.1387             nan     0.1000    0.0841
##      7        1.0861             nan     0.1000    0.0762
##      8        1.0367             nan     0.1000    0.0649
##      9        0.9958             nan     0.1000    0.0558
##     10        0.9598             nan     0.1000    0.0724
##     20        0.6875             nan     0.1000    0.0274
##     40        0.4508             nan     0.1000    0.0140
##     60        0.3283             nan     0.1000    0.0056
##     80        0.2484             nan     0.1000    0.0047
##    100        0.1927             nan     0.1000    0.0019
##    120        0.1531             nan     0.1000    0.0031
##    140        0.1236             nan     0.1000    0.0021
##    150        0.1112             nan     0.1000    0.0014
rfFit <- train(classe~., data=TidyTrain, method="rf", metric="Kappa", trControl=fitControl)
## Loading required package: randomForest
## randomForest 4.6-10
## Type rfNews() to see new features/changes/bug fixes.

Model Selection

The models are compared using the resamples function from the Caret package.Based on the plot below, it can be determined that the RandomForest algorithm fares better than the Gradient Boosting algorithm for this dataset (Kappa mean value = 0.996). It can also be seen that the RandomForest algorithm also displays less spread than Gradient Boosting.

library(caret)
## Loading required package: lattice
## Loading required package: ggplot2
library(lattice)
rValues <- resamples(list(rf=rfFit,gbm=gbmFit))
summary(rValues)
## 
## Call:
## summary.resamples(object = rValues)
## 
## Models: rf, gbm 
## Number of resamples: 10 
## 
## Accuracy 
##       Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
## rf  0.9941  0.9951 0.9958 0.9961  0.9966 0.9991    0
## gbm 0.9796  0.9843 0.9856 0.9854  0.9870 0.9932    0
## 
## Kappa 
##       Min. 1st Qu. Median   Mean 3rd Qu.   Max. NA's
## rf  0.9925  0.9938 0.9946 0.9951  0.9957 0.9989    0
## gbm 0.9742  0.9801 0.9817 0.9815  0.9836 0.9914    0
bwplot(rValues,metric="Kappa",main="RandomForest (rf) vs Gradient Boosting (gbm)")

Model Validation

rfFit
## Random Forest 
## 
## 11776 samples
##    53 predictor
##     5 classes: 'A', 'B', 'C', 'D', 'E' 
## 
## No pre-processing
## Resampling: Cross-Validated (10 fold) 
## 
## Summary of sample sizes: 10598, 10600, 10597, 10597, 10600, 10599, ... 
## 
## Resampling results across tuning parameters:
## 
##   mtry  Accuracy   Kappa      Accuracy SD  Kappa SD   
##    2    0.9925278  0.9905473  0.002554922  0.003232761
##   27    0.9960946  0.9950597  0.001452727  0.001837979
##   53    0.9928675  0.9909782  0.003129515  0.003957721
## 
## Kappa was used to select the optimal model using  the largest value.
## The final value used for the model was mtry = 27.

We employ the confusionMatrix function in the Caret package to validate the selected model with the TidyTest test set. displaying the relevent statistics and error rates.

library(caret)
confusionMatrix(TidyTest$classe, predict(rfFit,TidyTest))
## Loading required package: randomForest
## randomForest 4.6-10
## Type rfNews() to see new features/changes/bug fixes.
## Confusion Matrix and Statistics
## 
##           Reference
## Prediction    A    B    C    D    E
##          A 2231    0    0    0    1
##          B    2 1514    2    0    0
##          C    0    4 1361    3    0
##          D    0    0    5 1281    0
##          E    0    0    0    4 1438
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9973          
##                  95% CI : (0.9959, 0.9983)
##     No Information Rate : 0.2846          
##     P-Value [Acc > NIR] : < 2.2e-16       
##                                           
##                   Kappa : 0.9966          
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: A Class: B Class: C Class: D Class: E
## Sensitivity            0.9991   0.9974   0.9949   0.9946   0.9993
## Specificity            0.9998   0.9994   0.9989   0.9992   0.9994
## Pos Pred Value         0.9996   0.9974   0.9949   0.9961   0.9972
## Neg Pred Value         0.9996   0.9994   0.9989   0.9989   0.9998
## Prevalence             0.2846   0.1935   0.1744   0.1642   0.1834
## Detection Rate         0.2843   0.1930   0.1735   0.1633   0.1833
## Detection Prevalence   0.2845   0.1935   0.1744   0.1639   0.1838
## Balanced Accuracy      0.9995   0.9984   0.9969   0.9969   0.9993

The selected Model performs at a Kappa value of 0.995, with an accuracy of 0.996. Thats pretty good.

Final Model Testing

We use the selected model to predict the classification of the testing set provided and use the pml_write_files function is to generate submission files.

library(caret)
results <- predict(rfFit,newdata=Test)
print(as.data.frame(results))
##    results
## 1        B
## 2        A
## 3        B
## 4        A
## 5        A
## 6        E
## 7        D
## 8        B
## 9        A
## 10       A
## 11       B
## 12       C
## 13       B
## 14       A
## 15       E
## 16       E
## 17       A
## 18       B
## 19       B
## 20       B
pml_write_files(results)