Передача дополнительной информации в настраиваемую целевую функцию - PullRequest
0 голосов
/ 03 февраля 2020

Сейчас я работаю над проектом, который включает использование пакета xgboost в R для правильной цензуры конечных точек времени до события из двумерного исследования. Похоже, пакет xgboost не имеет встроенной целевой функции для данных о времени до события, подвергнутых правильной цензуре, поэтому я написал свою настраиваемую целевую функцию, которая представляет собой частичное отрицательное значение вероятности записи в журнал в соответствии с alivecomp package as

survobj <- function(preds, dtrain) {

  labels <- getinfo(dtrain, "label")

  n <- length(preds)
  r <- rank(labels)

  ita <- preds
  expita <- exp(ita)

  dono <- rep(0, n)
  grad.dono <- rep(0, n)

  for (i in 1:n) {
    dono[i] <- sum(expita[r >= r[i]])
    # derivative of dono
    grad.dono[i] <- sum(t.mod[r >= r[i]] * expita[r >= r[i]])
  }

  # gradient and hessian of the log partial likelihood

  # llk <- -(ita - log(dono))*event ### negative log partial likelihood
  grad <- -(t.mod - grad.dono / dono)*event
  hess <- (dono^2 - grad.dono^2)/ dono^2 * event

  return(list(grad = grad, hess = hess))
}

Поскольку эта настраиваемая целевая функция включает группу лечения и индекс цензуры. Мой вопрос заключается в том, можно ли передать индикатор групповой обработки и индекс цензуры в настраиваемую целевую функцию в качестве дополнительных аргументов? Я обнаружил, что аргумент dtrain относится к классу DMatrix, и может быть возможно перенести эту информацию, изменив структуру DMatrix, есть ли способ передать эту информацию в DMatrix?

Спасибо,

Есен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...