Модели: SVM Данные: Auto {ISLR}

Зависимая переменная: high.mpg. Объясняющие переменные: weight, horsepower.

Классификатор на опорных векторах

## Warning: package 'ROCR' was built under R version 3.4.4
## Loading required package: gplots
## Warning: package 'gplots' was built under R version 3.4.4
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess

##   [1]   1   4   6   7   8   9  13  14  17  36  39  40  42  44  45  46  47
##  [18]  48  60  62  71  72  75  77  78  85  93  96  97 107 108 111 112 113
##  [35] 115 120 127 133 137 139 151 152 154 155 168 178 186 193 200 209 210
##  [52] 211 213 228 240 241 242 250 251 255 256 258 273 274 275 279 280 289
##  [69] 362  24  30  31  52  53  56  57  59 101 118 131 142 169 177 185 192
##  [86] 233 234 237 239 265 266 270 272 294 295 296 297 299 300 301 302 303
## [103] 305 306 312 314 317 319 320 321 322 327 328 330 331 332 334 338 349
## [120] 352 353 354 355 356 357 358 360 365 369 371 373 381 383 385 386 387
## [137] 388
## 
## Call:
## svm(formula = y ~ ., data = dat, kernel = "linear", cost = 10, 
##     scale = FALSE)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  10 
##       gamma:  0.5 
## 
## Number of Support Vectors:  137
## 
##  ( 69 68 )
## 
## 
## Number of Classes:  2 
## 
## Levels: 
##  No Yes

##   [1]   1   4   6   7   8   9  13  14  17  36  37  39  40  41  42  44  45
##  [18]  46  47  48  60  61  62  71  72  75  76  77  78  85  93  96  97  98
##  [35] 106 107 108 109 110 111 112 113 115 120 123 124 125 127 132 133 134
##  [52] 137 139 151 152 153 154 155 168 175 178 186 193 200 209 210 211 213
##  [69] 220 226 228 240 241 242 248 250 251 252 253 255 256 257 258 273 274
##  [86] 275 279 280 281 289 362  24  30  31  52  53  55  56  57  59  83 101
## [103] 102 118 130 131 140 142 166 169 170 177 181 185 192 203 204 205 233
## [120] 234 237 239 265 266 270 272 292 294 295 296 297 298 299 300 301 302
## [137] 303 305 306 312 314 317 319 320 321 322 326 327 328 329 330 331 332
## [154] 334 335 336 338 348 349 350 351 352 353 354 355 356 357 358 360 364
## [171] 365 366 369 371 373 377 381 383 385 386 387 388
## 
## Parameter tuning of 'svm':
## 
## - sampling method: 10-fold cross validation 
## 
## - best parameters:
##  cost
##  0.01
## 
## - best performance: 0.2732051 
## 
## - Detailed performance results:
##    cost     error dispersion
## 1 1e-03 0.5108974 0.10473835
## 2 1e-02 0.2732051 0.08185116
## 3 1e-01 0.2732051 0.06816862
## 4 1e+00 0.2732051 0.06487413
## 5 5e+00 0.2732051 0.06487413
## 6 1e+01 0.2732051 0.06487413
## 7 1e+02 0.2732051 0.06487413

Лучшая модель - cost = 0.01.

## 
## Call:
## best.tune(method = svm, train.x = y ~ ., data = dat, ranges = list(cost = c(0.001, 
##     0.01, 0.1, 1, 5, 10, 100)), kernel = "linear")
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  0.01 
##       gamma:  0.5 
## 
## Number of Support Vectors:  304
## 
##  ( 152 152 )
## 
## 
## Number of Classes:  2 
## 
## Levels: 
##  No Yes
##        truth
## predict  No Yes
##     No  139  49
##     Yes  57 147
##        truth
## predict  No Yes
##     No  137  47
##     Yes  59 149
## [1] 0.7295918

Точность модели составила 0.7295918. Высокая, но недостаточная.

## 
## Call:
## svm(formula = y ~ ., data = dat, kernel = "linear", cost = 1e+05)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  1e+05 
##       gamma:  0.5 
## 
## Number of Support Vectors:  233
## 
##  ( 116 117 )
## 
## 
## Number of Classes:  2 
## 
## Levels: 
##  No Yes

## 
## Call:
## svm(formula = y ~ ., data = dat, kernel = "linear", cost = 1)
## 
## 
## Parameters:
##    SVM-Type:  C-classification 
##  SVM-Kernel:  linear 
##        cost:  1 
##       gamma:  0.5 
## 
## Number of Support Vectors:  232
## 
##  ( 116 116 )
## 
## 
## Number of Classes:  2 
## 
## Levels: 
##  No Yes

Отчетливо видно, что ROC-кривые показывают нам достаточное количество неточных предсказаний. Я бы объяснил это тем, что 2 объясняющих переменных мало для установления связи с зависимой переменной. Также, точность предсказаний можно было бы увеличить, если уменьшить выборку наблюдений, избавившись, например, от аномальных значений.