2016-12-26 13 views
1

Я работаю над смоделированными данными, и у меня есть некоторые проблемы. Я пытаюсь исправить параметры.Проблема Кривые ROC SVM имитированные данные

library(e1071) 
library(ROCR) 
set.seed(10) 

#function to generate data 
generate.data <- function(n){ 
x2 <- runif(n) 
x1 <- runif(n) 
y <- as.factor(ifelse((x2>2*x1)|(x2>(2-2*x1)),-1,1)) 
return(data.frame(x1,x2,y)) 
} 

#Training and test: n = 500 
dtrain <- generate.data(500) 
dtest <- generate.data(200) 

Я выполнил кросс проверки на обучающем наборе, и я имел с радиальным ядра, параметр cost=1000 и gamma=0.1.

tune.out = tune(svm, y~x1+x2, data=dtrain, kernel="radial", 
       ranges=list(cost=c(0.1,1,10,100,1000), gamma=c(0.01,0.1,1,10,100))) 
svmbestmod = svm(y~x1+x2, data=dtrain, kernel="radial", cost=1000, gamma=0.1, 
       probability=TRUE) 

Я хотел предсказать на своем тестовом наборе, но у меня есть 0 ошибок. Я не понимаю.

yrad.test <- predict(svmbestmod, dtest) 

#confusion matrix 
mc.rad <- table(dtest$y, yrad.test) 
print(mc.rad) 

#Error 
err.rad <- 1-sum(diag(mc.rad))/sum(mc.rad) 
print(err.rad) 

Если кто-то может помочь мне понять мои ошибки или что не так, было бы хорошо.

ответ

0

Я положил 20000 очков в тесте набор

# First I isolate any misclassified points in the test set 
library(dplyr) 
errors <- cbind(dtest,yrad.test) %>% dplyr::filter(y != yrad.test) 

# Then I plot all the points in the train set, 
# coloured based on thier respective class, 
# while misclassified entries in the test set are shown in black 

library(ggplot2) 
p <- ggplot2::ggplot(data = dtrain, aes(x1,x2)) + 
geom_point(aes(colour = factor(y)))+ 
geom_point(data = errors,colour = "black")` 

In black misclassified points

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

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

+0

Извините за опоздание .. Спасибо за ваш ответ, я изменил количество записей. Я должен научиться использовать gg2plot! lol У меня хороший день – Mohamed