Получение важности функции в SVM - PullRequest
0 голосов
/ 07 января 2019

Я сделал мультиклассовую (3) классификацию, используя SVM с линейным ядром.

Для этой задачи я использовал пакет mlr. SVM из пакета kernlab.

library(mlr)
library(kernlab)

print(filtered_task)

Supervised task: dtm
Type: classif
Target: target_lable
Observations: 1462
Features:
   numerics     factors     ordered functionals 
        291           0           0           0 
Missings: FALSE
Has weights: FALSE
Has blocking: FALSE
Has coordinates: FALSE
Classes: 3
negative  neutral positive 
     917      309      236 
Positive class: NA

lrn = makeLearner("classif.ksvm", par.vals = list(kernel = "vanilladot"))
mod = mlr::train(lrn, train_task)

Теперь я хочу знать, какие функции имеют наибольший вес для каждого класса. Есть идеи как туда добраться?

Кроме того, было бы неплохо получить веса элементов для каждого класса для результата перекрестной проверки.

rdesc = makeResampleDesc("CV",
                         iters = 10,
                         stratify = T) 
set.seed(3)
r = resample(lrn, filtered_task, rdesc)

Я знаю, что есть возможность вычислить важность функции, как показано ниже, что аналогично результатам перекрестной проверки из-за итераций Монте-Карло.

imp = generateFeatureImportanceData(task = train_task, 
                                    method = "permutation.importance", 
                                    learner = lrn,
                                    nmc = 10)

Однако, для этого метода я не могу получить важность функции для каждого класса, но только важность в целом.

library(dplyr)
library(ggplot)

imp_data = melt(imp$res[, 2:ncol(imp$res)]) 

imp_data = imp_data %>% 
  arrange(-value)

imp_data[1:10,] %>% 
  ggplot(aes(x = reorder(variable, value), y = value)) + 
  geom_bar(stat = "identity",  fill = "darkred") + 
  labs(x = "Features", y = "Permutation Importance") +
  coord_flip() +
  theme_minimal()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...