私はRプログラミング言語が初めてで、いくつかの実験では "xgboost"を実行する必要があります。問題は、私はモデルのクロス検証し、精度を取得する必要があることだと私は私に異なった結果得られる二つの方法が見つかりました:使用して"xgboost"公式パッケージとxgboostの違いが "R"の "caret"パッケージと異なる結果R
「キャレット」での:
library(mlbench)
library(caret)
library(caretEnsemble)
dtrain <- read.csv("student-mat.csv", header=TRUE, sep=";")
formula <- G3~.
dtrain$G3<-as.factor(dtrain$G3)
control <- trainControl(method="cv", number=10)
seed <- 10
metric <- "Accuracy"
fit.xgb <- train(formula, data=dtrain, method="xgbTree", metric=metric, trControl=control, nthread =4)
fit.xgb
fit.xgbl <- train(formula, data=dtrain, method="xgbLinear", metric=metric, trControl=control, nthread =4)
fit.xgbl
を「xgboost」パッケージを使用します次のコード:
library(xgboost)
printArray <- function(label, array){
cat(paste(label, paste(array, collapse = ", "), sep = ": \n"), "\n\n")
setwd("D:\\datasets")
dtrain <- read.csv("moodle7original(AtributosyNotaNumericos).csv", header=TRUE, sep=",")
label <- as.numeric(dtrain[[33]])
data <- as.matrix(sapply(dtrain, as.numeric))
croosvalid <-
xgb.cv(
data = data,
nfold = 10,
nround = 10,
label = label,
prediction = TRUE,
objective = "multi:softmax",
num_class = 33
)
print(croosvalid)
printArray("Actual classes", label[label != croosvalid\$pred])
printArray("Predicted classes", croosvalid\$pred[label != croosvalid\$pred])
correctlyClassified <- length(label[label == croosvalid\$pred])
incorrectlyClassified <- length(label[label != croosvalid\$pred])
accurancy <- correctlyClassified * 100/(correctlyClassified + incorrectlyClassified)
print(paste("Accurancy: ", accurancy))
しかし、結果は同じデータセットで大きく異なります。私は通常、コードの第2の切り取りと最初のものと63%の学生のパフォーマンスデータセットで99%の精度を得ます...
私はそれらの両方に同じシードを設定しました。
私は2番目に間違っていますか?もしそうなら、教えてください!
[再現性の例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)がなければ、正確な理由を把握するのは難しいだろう'キャレット'は単に 'xgboost'のラッパーであるため、あなたが明示的に提供しているものか、デフォルトが何であるかによって、2つの設定が異なる設定になる可能性があります(つまり、自身の 'xgboost'バージョン、それは同じ' xgboost'パッケージを呼び出します) – Tchotchke
ここで使用されるデータセットはhttps://archive.ics.uci.edu/ml/machine-learning-databases/00320/です。この例を再現するために何が必要かを教えてください。私はできるだけ基本的なパラメータとして試しましたが、まだ〜25-30%の差です –