Previsão de tempo até o evento com Pytorch

Iniciar • Métodos • Critérios de avaliação • conjuntos de dados • Instalação • Referências
O Pycox é um pacote Python para análise de sobrevivência e previsão de tempo até o evento com a Pytorch, construída no pacote de tochas para o treinamento de modelos Pytorch. Uma versão R deste pacote está disponível no SurvivalModels.
O pacote contém implementações de vários modelos de sobrevivência, algumas métricas de avaliação úteis e uma coleção de conjuntos de dados de tempo de evento. Além disso, algumas ferramentas úteis de pré -processamento estão disponíveis no módulo pycox.preprocessing .
Para começar, você primeiro precisa instalar o Pytorch. Você pode instalar Pycox via PIP:
pip install pycoxOu, via conda:
conda install -c conda-forge pycox Recomendamos começar com 01_introduction.ipynb, que explica o uso geral do pacote em termos de pré -processamento, criação de redes neurais, treinamento de modelos e procedimento de avaliação. O notebook usa o método LogisticHazard para ilustração, mas a maioria dos princípios generaliza para os outros métodos.
Como alternativa, existem muitos exemplos listados na pasta Exemplos, ou você pode seguir o tutorial com base no LogisticHazard :
01_Introduction.ipynb: Uso geral do pacote em termos de pré -processamento, criação de redes neurais, treinamento de modelos e procedimento de avaliação.
02_Introduction.ipynb: esquema de discretização baseado em quantil, tuplas aninhadas com tt.tuplefy , incorporação de entidades de variáveis categóricas e taxas de aprendizado cíclico.
03_Network_architectures.ipynb: estendendo a estrutura com redes personalizadas e funções de perda personalizada. O exemplo combina um autoencoder com uma rede de sobrevivência e considera uma perda que combina a perda de autoencoder com a perda do LogisticHazard .
04_MNIST_DATALOADERS_CNN.IPYNB: Usando Dataloaders e redes convolucionais para o conjunto de dados MNIST. Repetimos as simulações de [8] em que cada dígito define o parâmetro de escala de uma distribuição exponencial.
Os seguintes métodos estão disponíveis no módulo pycox.methods .
| Método | Descrição | Exemplo |
|---|---|---|
| Coxtime | O Time de Cox é um modelo de risco relativo que estende a regressão de Cox além dos riscos proporcionais [1]. | caderno |
| Coxcc | O COX-CC é uma versão proporcional do modelo Cox-Time [1]. | caderno |
| Coxph (Deepsurv) | O Coxph é um modelo de riscos proporcionais de Cox também chamado de Deepsurv [2]. | caderno |
| Pchazard | O modelo de risco constante por partes (PC-Hazard) [12] assume que a função de risco em tempo contínuo é constante em intervalos predefinidos. É semelhante aos modelos exponenciais por partes [11] e Peann [14], mas com uma ativação softplus em vez da função exponencial. | caderno |
| Método | Descrição | Exemplo |
|---|---|---|
| Logistichazard (nnet-survival) | O método logístico-Hazard parametrizam os riscos discretos e otimizam a probabilidade de sobrevivência [12] [7]. Também é chamado de regressão logística parcial [13] e NNET-Survival [8]. | caderno |
| Pmf | O método PMF parametrizam a função de massa de probabilidade (PMF) e otimiza a probabilidade de sobrevivência [12]. É a base de métodos como DeepHit e MTLR. | caderno |
| Deephit, Deephitsingle | O DeepHit é um método PMF com uma perda para uma classificação melhorada que pode lidar com riscos concorrentes [3]. | único competindo |
| Mtlr (n-mtlr) | A regressão logística (neural) de várias tarefas é um método PMF proposto por [9] e [10]. | caderno |
| Bcesurv | Um método que representa um conjunto de classificadores binários que removem os indivíduos à medida que são censurados [15]. A perda é a entropia cruzada binária das estimativas de sobrevivência em um conjunto de tempos discretos, com alvos que são indicadores de sobrevivência a cada vez. | bs_example |
As seguintes métricas de avaliação estão disponíveis com pycox.evalutation.EvalSurv .
| Métrica | Descrição |
|---|---|
| concordance_td | O índice de concordância dependente do tempo avaliado nos horários do evento [4]. |
| BRIER_SCORE | A pontuação do Brier IPCW (probabilidade inversa de censurar a pontuação do Brier ponderada) [5] [6] [15]. Consulte a Seção 3.1.2 de [15] para obter detalhes. |
| Nbll | O IPCW (negativo) binomial Log-Likelinco [5] [1]. Ou seja, isso é menos a probabilidade binomial de log e não deve ser confundida com a distribuição binomial negativa. A ponderação é realizada como na Seção 3.1.2 de [15] para obter detalhes. |
| integrado_brier_score | A pontuação integrada do Brier IPCW. Integração numérica do `BRIER_SCORE` [5] [6]. |
| integrado_nbll | O IPCW integrado (negativo) binomial Log-Proveitura. Integração numérica do `nbll` [5] [1]. |
| BRIER_SCORE_ADMIN Integrated_BRIER_SCORE_ADMIN | A pontuação administrativa do Brier [15]. Funciona bem para dados com censura administrativa, o que significa que todos os tempos de censura são observados. Veja este notebook de exemplo. |
| nbll_admin integrated_nbll_admin | A probabilidade binomial administrativa (negativa) [15]. Funciona bem para dados com censura administrativa, o que significa que todos os tempos de censura são observados. Veja este notebook de exemplo. |
Uma coleção de conjuntos de dados está disponível no módulo pycox.datasets . Por exemplo, o código a seguir baixará o conjunto de dados metabric e o carregará na forma de um DataFrame de pandas
from pycox import datasets
df = datasets . metabric . read_df () O módulo datasets armazenará os conjuntos de dados no diretório de instalação por padrão. Você pode especificar um diretório diferente definindo a variável de ambiente PYCOX_DATA_DIR .
| Conjunto de dados | Tamanho | Conjunto de dados | Fonte de dados |
|---|---|---|---|
| Flchain | 6.524 | O ensaio do conjunto de dados de cadeia leve livre de soro (FLCHAIN). Veja [1] para pré -processamento. | fonte |
| gbsg | 2.232 | O Grupo de Estudo de Câncer de Mama Roterdã e Alemão. Veja [2] para obter detalhes. | fonte |
| Kkbox | 2.814.735 | Um conjunto de dados de sobrevivência criado a partir do desafio de previsão de agitação do WSDM - KKBOX 2017 com censura administrativa. Veja [1] e [15] para obter detalhes. Comparado ao KKBox_V1, esse conjunto de dados tem mais covariáveis e tempos de censura. Nota: Você precisa de credenciais Kaggle para acessar o conjunto de dados. | fonte |
| kkbox_v1 | 2.646.746 | Um conjunto de dados de sobrevivência criado a partir do desafio de previsão de rotatividade do WSDM - KKBOX 2017. Veja [1] para obter detalhes. Esta não é a versão preferida desse conjunto de dados. Use Kkbox em vez disso. Nota: Você precisa de credenciais Kaggle para acessar o conjunto de dados. | fonte |
| metabric | 1.904 | A taxonomia molecular do consórcio internacional do câncer de mama (metabric). Veja [2] para obter detalhes. | fonte |
| NWTCO | 4.028 | Dados do tumor nacional de Wilm (NWTCO). | fonte |
| apoiar | 8.873 | Estudo para entender o prognóstico Preferências resultados e riscos de tratamento (suporte). Veja [2] para obter detalhes. | fonte |
| Conjunto de dados | Tamanho | Conjunto de dados | Fonte de dados |
|---|---|---|---|
| rr_nl_nph | 25.000 | Conjunto de dados do estudo de simulação em [1]. Este é um estudo de simulação em tempo contínuo, com tempos de eventos extraídos de um modelo de riscos não lineares de risco relativo (RRNLNPH). | SimstudynonLinearnonph |
| SAC3 | 100.000 | Conjunto de dados do estudo de simulação em [12]. Este é um conjunto de dados de tempo discreto com 1000 possíveis eventos-tempos. | SimStudysAccensorConst |
| sac_admin5 | 50.000 | Conjunto de dados do estudo de simulação em [15]. Este é um conjunto de dados de tempo discreto com 1000 possíveis eventos-tempos. Muito semelhante ao `SAC3 ', mas com menos covariáveis de sobrevivência e censura administrativa determinada por 5 covariáveis. | SimStudySacadmin |
Nota: Este pacote ainda está em seus estágios iniciais de desenvolvimento; portanto, não hesite em relatar quaisquer problemas que você possa enfrentar.
O pacote funciona apenas para o Python 3.6+.
Antes de instalar o Pycox , instale o pytorch (versão> = 1.1). Você pode então instalar o pacote com
pip install pycox Para a versão Bleeding Edge, você pode instalar diretamente no GitHub (considere adicionar --force-reinstall ):
pip install git+git://github.com/havakv/pycox.gitA instalação da fonte depende do pytorch, portanto, verifique se está instalado. Em seguida, clone e instale com
git clone https://github.com/havakv/pycox.git
cd pycox
pip install .[1] Håvard Kvamme, Ørnulf Borgan e Ida Scheel. Previsão de tempo até o evento com redes neurais e regressão de Cox. Journal of Machine Learning Research , 20 (129): 1–30, 2019. [Paper]
[2] Jared L. Katzman, Uri Shaham, Alexander Cloninger, Jonathan Bates, Tingting Jiang e Yuval Kluger. Deepsurv: sistema de recomendação de tratamento personalizado usando um riscos proporcionais de Cox Rede neural profunda. Metodologia de Pesquisa Médica do BMC , 18 (1), 2018. [Artigo]
[3] Changhee Lee, William R Zame, Jinsung Yoon e Mihaela van der Schaar. Deephit: Uma abordagem de aprendizado profundo para a análise de sobrevivência com riscos concorrentes. Em Trinta e Segundo Conferência AAAI sobre Inteligência Artificial , 2018. [Artigo]
[4] Laura Antolini, Patrizia Boracchi e Elia Biganzoli. Um índice de discriminação dependente do tempo para dados de sobrevivência. Statistics in Medicine , 24 (24): 3927-3944, 2005. [Paper]
[5] Erika Graf, Claudia Schmoor, Willi Sauerbrei e Martin Schumacher. Avaliação e comparação de esquemas de classificação prognósticos para dados de sobrevivência. Statistics in Medicine , 18 (17-18): 2529-2545, 1999. [Artigo]
[6] Thomas A. Gerds e Martin Schumacher. Estimativa consistente da pontuação esperada de Brier nos modelos gerais de sobrevivência com os tempos de eventos censurados à direita. Biometical Journal , 48 (6): 1029-1040, 2006. [Paper]
[7] Charles C. Brown. Sobre o uso de variáveis indicadoras para estudar a dependência do tempo de parâmetros em um modelo de tempo de resposta. Biometrics , 31 (4): 863-872, 1975. [Paper]
[8] Michael F. Gensheimer e Balasubramanian Narasimhan. Um modelo de sobrevivência em tempo discreto escalável para redes neurais. Peerj , 7: E6257, 2019. [Papel]
[9] Chun-Nam Yu, Russell Greiner, Hsiu-Chin Lin e Vickie Baracos. Aprendendo distribuições de sobrevivência ao câncer específico do paciente como uma sequência de regressores dependentes. Em Avanços nos Sistemas de Processamento de Informações Neurais 24 , páginas 1845-1853. Curran Associates, Inc., 2011. [Artigo]
[10] Stephane Fotso. Redes neurais profundas para análise de sobrevivência com base em uma estrutura de várias tarefas. Arxiv pré -impressão Arxiv: 1801.05512 , 2018. [Paper]
[11] Michael Friedman. Modelos exponenciais por partes para dados de sobrevivência com covariáveis. The Annals of Statistics , 10 (1): 101-113, 1982. [Paper]
[12] Håvard Kvamme e Ørnulf Borgan. Previsão de sobrevivência contínua e de tempo discreto com redes neurais. Arxiv pré -impressão Arxiv: 1910.06724 , 2019. [Artigo]
[13] Elia Biganzoli, Patrizia Boracchi, Luigi Mariani e Ettore Marubini. Alimente as redes neurais avançadas para a análise de dados de sobrevivência censurados: uma abordagem parcial de regressão logística. Statistics in Medicine , 17 (10): 1169-1186, 1998. [Paper]
[14] Marco Fornili, Federico Ambrogi, Patrizia Boracchi e Elia Biganzoli. As redes neurais artificiais exponenciais por partes (Peann) para modelar a função de risco com dados censurados corretos. Métodos de inteligência computacional para bioinformática e bioestatística , páginas 125-136, 2014. [Paper]
[15] Håvard Kvamme e Ørnulf Borgan. A pontuação de Brier sob censura administrativa: problemas e soluções. Arxiv pré -impressão Arxiv: 1912.08581 , 2019. [Artigo]