【问题标题】:Negative log likelihood in theano (cox regression)theano 中的负对数似然(cox 回归)
【发布时间】:2015-09-02 09:20:56
【问题描述】:

我正在尝试在 theano 中实现 cox 回归。

我使用逻辑回归教程 (http://deeplearning.net/tutorial/logreg.html) 作为框架,并将逻辑对数似然 (LL) 函数替换为 cox 回归 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)。但我不知道该怎么做。我应该使用扫描功能吗?

【问题讨论】:

    标签: python machine-learning theano cox-regression


    【解决方案1】:

    想通了。诀窍不是使用扫描功能,而是将双重求和转换为纯矩阵运算。

    【讨论】:

    • 出于好奇,您最终是否将其与任何包含 Theano 的 Keras 等深度学习框架集成在一起?我一直在尝试弄清楚如何使用 Keras 自己实现 cox 回归以进行生存分析。
    • 是的,我在多层神经网络中的 Theano 和 TensorFlow 中实现了它。你可以在这里找到我的 Theano 代码:pypi.python.org/pypi/cox-nnet/0.202。后来我切换到 TensorFlow,因为我认为它更容易使用。我对 Keras 不太熟悉。
    • 哇,非常感谢!有机会我会看看的。
    猜你喜欢
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2020-06-03
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多