現在、以下のlinkのスライドに従っています。私はスライド121/128にあり、AUCをどのように複製するかを知りたいと思います。作者はその方法を説明しませんでした(スライド124でも同じです)。第2に、スライド125上で次のコードが生成される。xgboostモデルからのAUCをプロットするR
bestRound = which.max(as.matrix(cv.res)[,3]-as.matrix(cv.res)[,4])
bestRound
次のエラーが表示されます。 as.matrixで
エラー(cv.res)[2]:添字境界
から次のコードのためのデータは、hereからダウンロードすることができ、私はのために以下のコードを生成しましたあなたの参照。
質問:著者としてAUCを作成するにはどうすればよいのですか?添え字が範囲外になるのはなぜですか?
-----コード------
# Kaggle Winning Solutions
train <- read.csv('train.csv', header = TRUE)
test <- read.csv('test.csv', header = TRUE)
y <- train[, 1]
train <- as.matrix(train[, -1])
test <- as.matrix(test)
train[1, ]
#We want to determin who is more influencial than the other
new.train <- cbind(train[, 12:22], train[, 1:11])
train = rbind(train, new.train)
y <- c(y, 1 - y)
x <- rbind(train, test)
(dat[,i]+lambda)/(dat[,j]+lambda)
A.follow.ratio = calcRatio(x,1,2)
A.mention.ratio = calcRatio(x,4,6)
A.retweet.ratio = calcRatio(x,5,7)
A.follow.post = calcRatio(x,1,8)
A.mention.post = calcRatio(x,4,8)
A.retweet.post = calcRatio(x,5,8)
B.follow.ratio = calcRatio(x,12,13)
B.mention.ratio = calcRatio(x,15,17)
B.retweet.ratio = calcRatio(x,16,18)
B.follow.post = calcRatio(x,12,19)
B.mention.post = calcRatio(x,15,19)
B.retweet.post = calcRatio(x,16,19)
x = cbind(x[,1:11],
A.follow.ratio,A.mention.ratio,A.retweet.ratio,
A.follow.post,A.mention.post,A.retweet.post,
x[,12:22],
B.follow.ratio,B.mention.ratio,B.retweet.ratio,
B.follow.post,B.mention.post,B.retweet.post)
AB.diff = x[,1:17]-x[,18:34]
x = cbind(x,AB.diff)
train = x[1:nrow(train),]
test = x[-(1:nrow(train)),]
set.seed(1024)
cv.res <- xgb.cv(data = train, nfold = 3, label = y, nrounds = 100, verbose = FALSE,
objective = 'binary:logistic', eval_metric = 'auc')
ここで、ここでプロットAUCグラフを
set.seed(1024)
cv.res = xgb.cv(data = train, nfold = 3, label = y, nrounds = 3000,
objective='binary:logistic', eval_metric = 'auc',
eta = 0.005, gamma = 1,lambda = 3, nthread = 8,
max_depth = 4, min_child_weight = 1, verbose = F,
subsample = 0.8,colsample_bytree = 0.8)
は私が
に遭遇コードで休憩です#bestRound: - subscript out of bounds
bestRound <- which.max(as.matrix(cv.res)[,3]-as.matrix(cv.res)[,4])
bestRound
cv.res
cv.res[bestRound,]
set.seed(1024) bst <- xgboost(data = train, label = y, nrounds = 3000,
objective='binary:logistic', eval_metric = 'auc',
eta = 0.005, gamma = 1,lambda = 3, nthread = 8,
max_depth = 4, min_child_weight = 1,
subsample = 0.8,colsample_bytree = 0.8)
preds <- predict(bst,test,ntreelimit = bestRound)
result <- data.frame(Id = 1:nrow(test), Choice = preds)
write.csv(result,'submission.csv',quote=FALSE,row.names=FALSE)
AUCのプロットがありがとうございました。 "クロスバリデーションの予測を得るには、xgb.cvを呼び出すときに予測= Tを指定する必要があります。 – user113156
私が複製しようとしているもう一つのポイントは、スライド121/128にあります。作者は「トレーニングとテストセットにAUCの傾向が見える」と述べています。これをテストセットに複製するにはどうすればいいですか?これをテストセットに複製する目的は何ですか? – user113156
@ user113156それから、xgboostモデルを訓練することはずっとあります。そして、人々は自分のやり方を好みます。一般に、ハイパーパラメータ、データ変換、アップ/ダウンサンプリング、変数選択、確率閾値最適化、コスト関数選択は、相互検証中に実行される。 CVの1回の反復だけではなく、例えば3〜4倍のCVの5回の反復など。これらすべてのものの中から最良のものを選ぶと、すべての列車データを使ってモデルを訓練し、テストセットで検証します。これは、オーバーフィットを避けるためにすべて行われます。 – missuse