7 votos

R modelo de red neuronal con el objetivo de vectores como de salida, que contiene la supervivencia de las predicciones

Descripción

Quiero simular la supervivencia de predicción usando redes neuronales se describe en este documento titulado "Aplicación de la Red Neuronal Artificial Basado en el Análisis de Supervivencia en Dos de Cáncer de Mama conjuntos de datos" por Chi, de la Calle y Wolberg donde un vector blanco de 1 representa los puntos de tiempo se evalúa y devuelve un vector de probabilidades. Lamentablemente no proporcionar el software utilizado para crear el método.

Por ejemplo, un conjunto de datos con time, status (lo que indica vivo o muerto) y otras variables predictoras son necesarios para ser entrenado en una red neuronal. Habrá una estructura de datos para mantener los puntos de tiempo de las necesidades de la investigación (por ejemplo, un {1,1,1,1,1,1}, intervalos de seis meses en tres años). La salida de este modelo, después de tomar en cuenta las mencionadas variables predictoras tendrá este aspecto: {0.98761,0.91111,0.82710,0.70003,0.64253,0.47181} que corresponde a:

          6      12      18      24      30      36
1   0.98761 0.91111 0.82710 0.70003 0.64253 0.47181
2   ...

Estos datos pueden ser utilizados para futuros registros que serán alimentados en la red.


R red neuronal de paquetes

He estado buscando la manera de implementar esto en la nnet, neuralnet y rminer paquetes y por desgracia, mi limitado conocimiento no puede modificar para adaptarse a mis necesidades. Sólo sé que estos predecir el valor nominal y los valores numéricos pero ahora, ¿cómo hacer vectores.

Hasta ahora las funciones relacionadas con la predicción de los paquetes no dar una pista sobre el uso de un vector de salida.

  1. nnet's predict()'s descripción dice claramente a continuación.

    Predecir nuevos ejemplos por una red neuronal entrenada.

    # X1, X2, and the rest of predictive variables
    model.nnet <- nnet(Surv(time,status)~X1+X2, data=data.train, size=1, maxit=500)
    
  2. neuralnet's compute() no es compatible con similar objetivo de vectores de soporte.

    Cálculo de una red neuronal para un determinado covariable vectores.

  3. rminer's predict() y lforecast() demostrar que tiene potencial (basado en los ejemplos), pero no tengo idea de cómo transformarlos en lo que quiero hacer.

  4. el survnnet paquete se dice que es compatible con el común de la predictSurvProb función de la pec paquete pero yo me mantenía alejado de él a causa de la poca documentación y apoyo aquí en el Internet.

    Predecir nuevos ejemplos por un agente de la supervivencia de la red neuronal.

    model.survnet <- survnnet(Surv(time,status)~X1+X2, data=dat,
        model='llog', decay=0.1, bias.decay=25, size=1,
        skip=T, alpha=0.1)  
    predictions   <- predict(model.survnet, data.train, type="raw")
    

Cox PH (actual método conocido)

El más cercano método que he conseguido hasta ahora era coxph y cph aplicado con la predictSurvProb función donde un times variable es declarada con el número de puntos de interés.

Generalmente hago esto:

data.train  <- SimSurv(300)
model.coxph <- cph(Surv(time,status)~X2,data=dat,surv=TRUE,x=TRUE,y=TRUE)

# declare target times as 25,50,75,100,150 for probabilities
predictions <- predictSurvProb(coxph12, newdata=data.train, times=c(25,50,75,100,150))
round(predictions, digits=6) 

y me gustaría tener una salida de probabilidades por período de tiempo que se especifica:

          25       50       75      100      150
1   0.648268 0.509353 0.460196 0.425917 0.324364
2   0.648268 0.509353 0.460196 0.425917 0.324364
3   0.756732 0.648020 0.607077 0.577596 0.484789
4   0.648268 0.509353 0.460196 0.425917 0.324364
5   0.648268 0.509353 0.460196 0.425917 0.324364

Estos están ahora listos para ser integrados como nuevas variables en el conjunto de datos para otros fines.


Ahora quiero implementar esto en una red neuronal con el objetivo de vectores o de una implementación similar a la de la Cox PH proceso como en el ejemplo anterior.

Lamentablemente no puedo encontrar un sencillo paquete o tutorial en línea que afirma que si es posible hacerlo, como he dicho antes.

Me registré en el software de minería de datos WEKA s MultilayerPerceptron ejecución, sino que requiere que la variable de resultado (o en mi caso un vector de probabilidades) existente en primer lugar, lo que me lleva de vuelta aquí en R.

Este método es posible en estos paquetes de R, o la única manera es crear mi propia? Toda la ayuda y sugerencias serán bienvenidos.

4voto

Jack Puntos 18

¿Por qué no acaba de poner indicador binario para el evento como una variable de destino y periodo de tiempo como una variable explicativa (además de otras covariables)? Si ocurre un hecho objetivo, es 1 y el periodo de tiempo se calcula como el tiempo hasta que ocurre un hecho - hora de inicio. Algunas observaciones donde el objetivo es 0 este período de tiempo es de 36, si se mide en meses. Algunas observaciones donde el objetivo es 1 puede ser mucho menos.

Puede haber panel de desgaste donde alguna observación es eliminado del conjunto de datos antes de todo el período de vigilancia? Que deben ser tomados en cuenta de alguna manera.

Para conseguir la supervivencia del individuo probabilidades para distintos intervalos de tiempo de calificación nuevo conjunto de datos con un sólo modelo desarrollado objeto veces en la que el número de diferentes períodos de tiempo y período de tiempo en particular tiene el valor de n. Luego concatenar sólo me vectores que contienen período de tiempo específico probabilidades.

La Idea es que mide período de tiempo con otras covariables cuentas para la supervivencia de la probabilidad condicional en la longitud de tiempo en el estudio de observación.

EDITAR:

Miré para el paquete de R neuralnet. Usted puede tener un período de tiempo de supervivencia específica de eventos en el destino de la matriz de la siguiente manera. C1 es covariate1, T1 es el vector de supervivencia de eventos en el periodo de tiempo 1 etc. El marco de datos / matriz podría tener este aspecto:

ID T1 T2 T3 T4 T5 T6 C1 C2 C3 CN  
1 1 1 1 1 1 1 X11 X12 X13 X1N  
2 1 0 0 0 0 0 X21 X22 X23 X2N  
..  

Utilice el siguiente código:

survexample=neuralnet(T1+T2+T3+T4+T5+T6~C1+C2+...+CN,data=example,hidden=n,err.fct="ce",linear.output=FALSE)  

Este ejemplo de código de la clasificación y de las fuerzas de salida vector de valores en el rango de [0,1].

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X