2016-04-14 26 views
2

Çok sınıflı bir sınıflandırma görevi gerçekleştirmek için xgboost R paketini kullanıyorum. Bu sorunu göstermek için oluşturduğum bir kod parçası (giriş ve çıkış rastgele oluşturulur, bu nedenle tablonun sonuçları anlamsızdır, bu sadece etrafta oynamayı ve paketi nasıl kullanacağımı öğrenmek için yaptığım bir şeydir):xgboost r paketindeki izleme listesi geçmişine erişme

require(xgboost) 
# First of all I set some parameters 
featureNumber = 5 
num_class = 4 
obs = 1000 

# I declare a function that I will use to generate my categorical labels 
generateLabels <- function(x,num_class){ 
    label <- 0 
    if(runif(1,min=0,max =1) <0.1){ 
     label <- 0 
    }else{ 
     label <- which.max(x) -1 
     foo <- runif(1,min=0,max =1) 
     if(foo > 0.9){label <- label + 1} 
     if(foo < 0.1){label <- label - 1} 
    } 
    return(max(min(label,num_class-1),0)) 
} 

# I generate a random train set and his labels 
features <- matrix(runif(featureNumber*obs, 1, 10), ncol = featureNumber) 
labels <- apply(features, 1, generateLabels,num_class = num_class) 
dTrain <- xgb.DMatrix(data = features, label = labels) 

# I generate a random test set and his labels 
testObs = floor(obs*0.25) 
featuresTest <- matrix(runif(featureNumber*testObs, 1, 10), ncol = featureNumber) 
labelsTest <- apply(featuresTest, 1, generateLabels, num_class = num_class) 
dTest <- xgb.DMatrix(data = featuresTest, label = labelsTest) 

# I train the 
xgbm <- xgb.train(data = dTrain, 
        nrounds = 10, 
        objective = "multi:softprob", 
        eval_metric = "mlogloss", 
        watchlist = list(train=dTrain, eval=dTest),       
        num_class = featureNumber) 

Bu kadar beklenen çalışır ve beklenen sonuçlar üretir, burada birkaç satır var:

[0] train-mlogloss:1.221495 eval-mlogloss:1.292785 
[1] train-mlogloss:0.999905 eval-mlogloss:1.121077 
[2] train-mlogloss:0.846809 eval-mlogloss:1.014519 
[3] train-mlogloss:0.735182 eval-mlogloss:0.942461 
[4] train-mlogloss:0.650207 eval-mlogloss:0.891341 
[5] train-mlogloss:0.580136 eval-mlogloss:0.851774 
[6] train-mlogloss:0.524390 eval-mlogloss:0.827973 
[7] train-mlogloss:0.475884 eval-mlogloss:0.815081 
[8] train-mlogloss:0.435342 eval-mlogloss:0.799799 
[9] train-mlogloss:0.402307 eval-mlogloss:0.789209 

ne elde edemez bunları daha sonra kullanmak üzere bu değerleri saklamaktır. Bunu yapmak mümkün mü? Parametreleri ayarlamak çok yardımcı olacaktır.

P.S. Benzer sonuçları elde etmek için pakette bulunan çapraz doğrulama yöntemini xgb.cv kullanabileceğimi biliyorum; ama bu yöntemi kullanarak neler olup bittiğine dair daha fazla kontrol sahibi olmayı tercih ediyorum, çünkü bu ölçütler hesaplandığından, bana ekranda okumadan ayrı olarak kullanma olanağı olmayan bir hesaplama gücü kaybı gibi görünüyor.

cevap

0

Sen xbgm$bestScore ve xbgm$bestInd

+0

ile en iyi tur parametrelere erişebilir Soruyu düzenlenebilir ve tam bir örnek kod dahil ettik komutlar BOŞ getiri önerdi ve ben belgelerinde onları bulamadık. Yardım etmeye çalıştığın için zaten teşekkürler. – zenagian