Отрицательная логарифмическая вероятность в теано (регрессия Кокса)

Я пытаюсь реализовать регрессию Кокса в theano.

Я использую учебник по логистической регрессии (http://deeplearning.net/tutorial/logreg.html) в качестве основы и замены функции логистического логарифмического правдоподобия (LL) функцией LL регрессии Кокса (https://en.wikipedia.org/wiki/Proportional_hazards_model#The_partial_likelihood).

Вот что у меня есть до сих пор:

class CoxRegression(object):
def __init__(self, x, n_in):
    self.W = theano.shared(value=numpy.zeros(n_in,dtype=theano.config.floatX), name='W',borrow=True)
    self.b = theano.shared(numpy.cast['float64'](0), borrow=True)
    self.theta = T.dot(x, self.W) + self.b
    self.exp_theta = T.exp(self.theta)
    self.params = [self.W, self.b]
    self.x = x

def negative_log_likelihood(self, ytime, ystatus):
    LL_i = T.switch(T.eq(ystatus[i],1), self.theta - T.log(T.sum(self.exp_theta * T.gt(ytime, ytime[i]))),0)

По сути, мне нужно суммировать LL_i (где i от 0 до ytime.shape - 1). Но я не уверен, как это сделать. Должен ли я использовать функцию сканирования?


person thc    schedule 01.09.2015    source источник


Ответы (1)


Догадаться. Хитрость заключалась не в том, чтобы использовать функцию сканирования, а в том, чтобы преобразовать двойное суммирование в чисто матричную операцию.

person thc    schedule 02.09.2015
comment
Из любопытства, вы в конечном итоге интегрировали это с какими-либо фреймворками глубокого обучения, такими как Keras, которые обертывают Theano? Я пытался выяснить, как реализовать регрессию Кокса для анализа выживания с помощью Keras. - person Pylander; 07.09.2016
comment
Да, я реализовал это в Theano и TensorFlow в многослойной нейросети. Вы можете найти мой код для Theano здесь: pypi.python.org/pypi/cox-nnet /0,202. Позже я переключился на TensorFlow, потому что думал, что его проще использовать. Я не слишком хорошо знаком с Керасом. - person thc; 07.09.2016
comment
Вау, большое спасибо! Я посмотрю на это, когда у меня будет шанс. - person Pylander; 08.09.2016