R XGBoost具有异常高的精度

R XGBoost具有异常高的精度,r,classification,weka,xgboost,R,Classification,Weka,Xgboost,我最近开始使用XGBoost(通过R的MLR包)将我的结果与SMO算法(通过Weka)进行比较 该任务是一项二元分类任务,用于预测一个人是否具有某种人格特质的高水平或低水平(例如:高外向性或低外向性) 我使用的数据集有300个实例和大约19000个特性。特征数量大的原因是分类任务主要基于n-gram作为特征 在选择和省略了一些特性之后,我设法在Weka的SMO上获得了79%的最高精确度。 但使用相同的特征集运行XGBoost算法可以获得98%的准确率。 这两种算法均通过10倍交叉验证进行评估 我

我最近开始使用XGBoost(通过R的MLR包)将我的结果与SMO算法(通过Weka)进行比较

该任务是一项二元分类任务,用于预测一个人是否具有某种人格特质的高水平或低水平(例如:高外向性或低外向性)

我使用的数据集有300个实例和大约19000个特性。特征数量大的原因是分类任务主要基于n-gram作为特征

在选择和省略了一些特性之后,我设法在Weka的SMO上获得了79%的最高精确度。 但使用相同的特征集运行XGBoost算法可以获得98%的准确率。 这两种算法均通过10倍交叉验证进行评估

我知道XGBoost在Kaggle上的不同情况下都被证明优于许多算法,但SMO和XGBoost之间的精度差异如此之大是否正常

下面是运行XGBoost时在R中进行10倍交叉评估的代码:

rm(list=ls(all=TRUE))

library(mlr)

train <- read.csv("AGREEABLENESS [10-DATASET].arff.csv", na.strings = c(""," ",NA))

train$class <- as.factor(train$class)

trainTask <- makeClassifTask(data=train, target="class")

set.seed(1001)

require(xgboost)
xg_set <- makeLearner("classif.xgboost", predict.type="prob")
xg_set$par.vals <- list(
objective="binary:logistic",
eval_metric="error",
nrounds=20
)

set_cv <- makeResampleDesc("CV", iters=10L)

r = resample(learner = xg_set, task = trainTask, resampling = set_cv, measures = list(acc, tpr, ppv), show.info=TRUE)

r$aggr
rm(list=ls(all=TRUE))
图书馆(mlr)

训练这是更多的统计SE,因为它涉及的是方法学,而不是看起来合理的编程。增强的方法确实很有效,但看看其他统计数据——召回率、AUC?数据集是否平衡?所有其他统计数据实际上都非常接近准确度(0.98788)。以下是其他统计数据的结果:AUC:0.9996296召回率:0.9739087精度:1.0000000类1的每个类的数据集大小为150,类2的为179。”…一个包含300个实例和大约19000个特征的数据集“(!)我期望100%的准确率(grin)。我想可能是约翰·冯·诺依曼说过,用四个变量,我可以适应一头大象,但用五个变量,我也可以让它的鼻子摆动。他会用19000个变量做什么?