2015-12-09 21 views
22

Sự khác biệt giữa Mục tiêu và feval trong xgboost trong R là gì? Tôi biết đây là một cái gì đó rất cơ bản nhưng tôi không thể xác định chính xác chúng/mục đích của chúng. Ngoài ra, mục tiêu softmax là gì, trong khi thực hiện phân loại đa lớp?Sự khác nhau giữa mục tiêu và feval trong xgboost

Trả lời

34

Mục tiêu

Objective trong xgboostfunction mà thuật toán học sẽ cố gắng và tối ưu hóa. Theo định nghĩa, nó phải có khả năng tạo ra 1 (gradient) và 2 (hessian) dẫn xuất w.r.t. các dự đoán tại một vòng đào tạo nhất định.

Một tùy chỉnh Objective chức năng ví dụ: link

# user define objective function, given prediction, return gradient and second order gradient 
# this is loglikelihood loss 
logregobj <- function(preds, dtrain) { 
    labels <- getinfo(dtrain, "label") 
    preds <- 1/(1 + exp(-preds)) 
    grad <- preds - labels 
    hess <- preds * (1 - preds) 
    return(list(grad = grad, hess = hess)) 
} 

Đây là chức năng quan trọng đối với đào tạo và không có mô hình xgboost có thể được đào tạo mà không xác định một. Các hàm Objective được sử dụng trực tiếp trong việc chia tách tại mỗi nút trong mỗi cây.

feval

feval trong xgboost lượt không có vai trò trực tiếp tối ưu hóa hoặc đào tạo mô hình của bạn. Bạn thậm chí không cần một để đào tạo. Nó không ảnh hưởng đến việc chia tách. Tất cả những gì nó làm là ghi điểm cho mô hình của bạn SAU KHI nó đã được đào tạo. Xem ví dụ về tùy chỉnh feval

evalerror <- function(preds, dtrain) { 
    labels <- getinfo(dtrain, "label") 
    err <- as.numeric(sum(labels != (preds > 0)))/length(labels) 
    return(list(metric = "error", value = err)) 
} 

Thông báo, chỉ trả về tên (chỉ số) và điểm (giá trị). Thông thường, fevalobjective có thể giống nhau, nhưng có lẽ cơ chế tính điểm bạn muốn có một chút khác biệt hoặc không có các dẫn xuất. Ví dụ: mọi người sử dụng logloss objective để đào tạo, nhưng tạo AUC feval để đánh giá mô hình.

Ngoài ra, bạn có thể sử dụng số feval để ngăn mô hình của mình không được đào tạo khi nó ngừng cải thiện. Và bạn có thể sử dụng nhiều chức năng feval để chấm điểm mô hình của mình theo những cách khác nhau và quan sát tất cả chúng.

Bạn không cần chức năng feval để đào tạo mô hình. Chỉ để đánh giá nó, và giúp nó ngừng đào tạo sớm.

Tóm tắt:

Objective là ngựa thồ chính.

feval là người trợ giúp để cho phép xgboost làm một số điều thú vị.

softmax là chức năng objective thường được sử dụng trong phân loại nhiều lớp. Nó đảm bảo rằng tất cả các dự đoán của bạn tổng hợp một, và được thu nhỏ bằng cách sử dụng hàm mũ. softmax

Các vấn đề liên quan