로지스틱 손실 함수에 대한 그라디언트


12

나는 이것 과 관련된 질문을 할 것 입니다.

xgboost에 대한 사용자 정의 손실 함수를 작성하는 예를 찾았 습니다 .

loglossobj <- function(preds, dtrain) {
  # dtrain is the internal format of the training data
  # We extract the labels from the training data
  labels <- getinfo(dtrain, "label")
  # We compute the 1st and 2nd gradient, as grad and hess
  preds <- 1/(1 + exp(-preds))
  grad <- preds - labels
  hess <- preds * (1 - preds)
  # Return the result as a list
  return(list(grad = grad, hess = hess))
}

물류 손실 기능은

log(1+eyP)

여기서 는 로그 홀수이고Py 는 레이블 (0 또는 1)입니다.

내 질문은 : 어떻게 실제 값과 예측 확률 (log-odds로 계산)의 차이와 단순히 그라디언트 (일차 미분)를 얻을 수 preds <- 1/(1 + exp(-preds))있습니까?


이를 달성하려면 제곱 오류 손실을 사용해야합니다. 귀하의 표기법은 혼란스럽고 게시물에 정의되어 있어야합니다. 경우 다음 예측 위험하다 ( Y - p가 ) 2 손실은 당신이 원하는 것입니다. 우리 p 를 사용 하여 로그 홀수를 의미 하지 않기 때문에 혼란 스럽습니다 . p(yp)2p
AdamO

는 대문자 P 로 고정되었습니다. 로그 홀수이며 질문에 명확하게 표시되어 있습니다. I 손실 함수 것을 알 구배 ( Y - F ( X ) ) 2 F ( X ) - (Y)를 , 그러나 squred 손실 물류 아니다. pP(yf(x))2f(x)y
Ogurtsov 2016 년

"그라데이션 (gradient)"이라고 말할 때, 어떤 그라디언트를 의미합니까? 손실의 구배? 식의 미분이 선형 차이 인 경우식이 2 차 차이 또는 제곱 오차 손실이라는 단순한 수학적 관계입니다.
AdamO

그렇습니다. 손실의 구배에 관한 것입니다. 손실 함수가 제곱 오차 일 때 간단합니다. 이 경우 손실 함수는 물류 손실 ( en.wikipedia.org/wiki/LogitBoost ) 이며이 함수의 그라디언트와 주어진 코드 예제 사이의 대응 관계를 찾을 수 없습니다.
Ogurtsov 2016 년

답변:


19

내 질문에 대한 내 대답 : 예, 물류 손실의 기울기가 실제 값과 예측 확률의 차이와 같다는 것을 알 수 있습니다. 여기에 간단한 설명이 있습니다 .

첫째, 로지스틱 손실은 음의 로그 우도 일 뿐이므로 로그 우도에 대한 표현식으로 시작할 수 있습니다 ( 74 페이지 -이 표현식은 음의 로그 우도가 아니라 로그 우도 자체 임).

L=yilog(pi)+(1yi)log(1pi)

pipi=11+ey^iy^i

L=yilog(11+ey^i)+(1yi)log(ey^i1+ey^i)

Wolfram Alpha를 사용하여 얻은 첫 번째 파생 상품 :

L=yi(1yi)ey^i1+ey^i

ey^iey^i

L=yiey^i+yi11+ey^i=yi(1+ey^i)1+ey^i11+ey^i=yipi

부호를 변경 한 후 로지스틱 손실 함수의 그라디언트에 대한 표현식이 있습니다.

piyi

2
y^yν1pi(1pi)(yipi)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.