Gradien untuk fungsi kehilangan logistik

12

Saya akan mengajukan pertanyaan terkait dengan ini .

Saya menemukan contoh penulisan fungsi kehilangan kustom untuk xgboost di sini :

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))
}

Fungsi kerugian logistik adalah

log(1+eyP)

di mana adalah peluang-log dan adalah label (0 atau 1).yPy

Pertanyaan saya adalah: bagaimana kita bisa mendapatkan gradien (turunan pertama) sama dengan perbedaan antara nilai sebenarnya dan probabilitas yang diprediksi (dihitung dari log-odds sebagai preds <- 1/(1 + exp(-preds)))?

Ogurtsov
sumber
Anda harus menggunakan hilangnya kesalahan kuadrat untuk mencapai itu. Notasi Anda membingungkan dan harus didefinisikan dalam posting. Jika adalah risiko yang diprediksi, maka kerugian adalah apa yang Anda inginkan. Saya bingung karena kita tidak pernah menggunakan untuk mengartikan peluang log. ( y - p ) 2 pp(yp)2p
AdamO
P ( y - f ( x ) ) 2 f ( x ) - yp tetap ke ibukota . Log-odds, dan ditandai dengan jelas dalam pertanyaan. Saya tahu bahwa gradien untuk fungsi kerugian adalah , tetapi itu adalah kerugian yang dikurangkan, bukan logistik. P(yf(x))2f(x)y
Ogurtsov
Ketika Anda mengatakan "gradien", gradien apa yang Anda maksud? Kemiringan kerugian? Ini adalah hubungan matematis sederhana bahwa jika turunan dari suatu ekspresi adalah perbedaan linear, maka ekspresi itu adalah perbedaan kuadratik, atau kuadrat kesalahan yang hilang.
AdamO
Ya, itu semua tentang gradien kerugian. Ini sederhana, ketika fungsi kerugian adalah kesalahan kuadrat. Dalam hal ini fungsi kerugian adalah kehilangan logistik ( en.wikipedia.org/wiki/LogitBoost ), dan saya tidak dapat menemukan korespondensi antara gradien fungsi ini dan contoh kode yang diberikan.
Ogurtsov

Jawaban:

19

Jawaban saya untuk pertanyaan saya: ya, dapat ditunjukkan bahwa gradien untuk kehilangan logistik sama dengan perbedaan antara nilai sebenarnya dan probabilitas yang diprediksi. Penjelasan singkat ditemukan di sini .

Pertama, kehilangan logistik hanyalah log-likelihood negatif, jadi kita bisa mulai dengan ekspresi untuk log-likelihood ( p. 74 - ungkapan ini adalah log-likelihood itu sendiri, bukan log-likelihood negatif):

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

pipi=11+ey^iy^i

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

Derivatif pertama diperoleh dengan menggunakan 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

Setelah mengubah tanda kami memiliki ekspresi untuk gradien fungsi kehilangan logistik:

piyi
Ogurtsov
sumber
2
y^yν1pi(1pi)(yipi)