svm的事实:
positve数据集20个样本,5个因子 负数据集10000个样本,5个因子 包:e1071或内核 我的测试数据集将类似于15000个样本
为了控制这种不平衡,我试图在e1071中使用类权重,正如之前的问题中所建议的那样。但是我看不出任何差异也非常超重一个类。 现在我想在100个子负数据集中随机对我的负数据集进行子集化。喜欢这个
cost<-vector("numeric", length(1))
gamma <- vector("numeric", length(1))
accuracy<- vector("numeric" , length(1)
)
split_data<- function(x,repeats) {
for (i in 1:repeats){
random_data <- x[sample(1:nrow(x), 100),]
dat<- rbind(data_pos, random_data)
svm <- svm(Class~., data=dat, cross=10)
cost[i] <- svm$cost
gamma[i] <-svm$gamma
accuracy[i]<- svm$tot.accuracy
print(summary(svm))
}
return(matrix(c(cost,gamma,accuracy), ncol=3))
}
但是我不知道现在该做什么......:D它似乎总是在我的pos数据集中定义相同的支持向量。但是应该有一个更聪明的策略,我已经阅读了一些策略但是有可能在任何包中实现它们吗?
编辑:
我想找到一种方法,我可以处理高度不平衡的数据集。我想这样做:将我的负数据集(重采样测试数据集)分成相等的部分到我的正数据集。然而,我会以某种方式想要获得完整的准确性和灵敏度。 我的问题特别是:我怎样才能以一种很好的方式管理这个?
非常感谢