Discusión sobre el artículo "Neuroredes profundas (Parte II). Desarrollo y selección de predictores"

 

Artículo publicado Neuroredes profundas (Parte II). Desarrollo y selección de predictores:

En este segundo artículo de la serie sobre redes neuronales profundas se analizarán la transformación y la selección en el proceso de preparación de los datos para el entrenamiento del modelo.

Veamos cómo están distribuidos los NA en las variables después de que los valores atípicos hayan sido eliminados.

require(VIM)
evalq(a <- aggr(x.sin.out), env)

SinMissAggr

Fig.6. Distribución de NA en el conjunto de datos

Autor: Vladimir Perervenko

 

Interesante:

Обрезка минимального значения — это простой в использовании алгоритм, при котором на каждом шаге отключаются веса с наименьшим абсолютным значением. Этот алгоритм требует ретрансляции сети практически на каждом шаге и дает субоптимальные результаты.

¿Estoy entendiendo correctamente el orden de funcionamiento de esta función?

1) Entrenar completamente la red original 12-8-5-1

2) encontrar un enlace con el peso mínimo y eliminar la entrada

3) Volver a entrenar la red 11-8-5-1 sin la entrada remota de nuevo

Y así sucesivamente durante varias docenas de ciclos de reentrenamiento. Hasta que no quede ninguna red 6-2-1-1.

Me parece que el tiempo empleado en esa eliminación de pesos, entradas y neuronas internas insignificantes será mucho mayor que el de un único entrenamiento completo (que hicimos en el paso 1).

¿Cuáles son las ventajas de este enfoque?

 
elibrarius:

Interesante:

¿Estoy entendiendo correctamente el orden de funcionamiento de esta función?

1) Entrenar completamente la red original 12-8-5-1

2) encontrar un enlace con el peso mínimo y eliminar la entrada

3) Volver a entrenar la red 11-8-5-1 de nuevo sin entrada remota

Y así sucesivamente durante varias decenas de ciclos de reentrenamiento. Hasta que no quede ninguna red 6-2-1-1-1.

Me parece que el tiempo empleado en esa eliminación de pesos, entradas y neuronas internas insignificantes será mucho mayor que el de un único entrenamiento completo (que hicimos en el paso 1).

¿Cuáles son las ventajas de este enfoque?

1- El algoritmo funciona exactamente así. Con una excepción: se descartan las neuronas de todas las capas ocultas.

2- Se define un conjunto mínimo de entradas y una estructura mínima que da el mismo resultado que el conjunto completo.

¿Ventajas? Eliminamos todo lo innecesario que genera falsas clasificaciones. Eso es lo que afirman los desarrolladores.

Es sólo una forma de seleccionar predictores importantes

Suerte

 
Vladimir Perervenko:

1. El algoritmo funciona exactamente así. Con una excepción: se descartan las neuronas de todas las capas ocultas.

2. Se define un conjunto mínimo de entradas y una estructura mínima que dan el mismo resultado que el conjunto completo.

¿Ventajas? Eliminamos todo lo innecesario que genera falsas clasificaciones. Eso es lo que afirman los desarrolladores.

Es sólo una forma de seleccionar predictores importantes

Buena suerte

1) Si no hay conexiones desde las entradas a las neuronas intrínsecas, entonces se pueden desconectar las propias entradas.

2) Me confunde que se emplee mucho más tiempo que si se entrena el modelo completo según el punto 1. Si el resultado es el mismo, ¿por qué emplear tanto tiempo?

Puedo suponer que los predictores eliminados se ignorarán en el futuro al volver a entrenar/reentrenar y el ahorro de tiempo será sólo entonces. Pero la importancia de los predictores también puede cambiar con el tiempo.

Me interesaba este truco, ya que yo también empecé a hacerlo, pero desistí al darme cuenta del tiempo que lleva.

Quizás los bucles de abandono permiten más errores y menos épocas de reentrenamiento que el entrenamiento final.


Me pregunto qué lógica se utiliza para filtrar las neuronas ocultas. Cada neurona tiene muchas conexiones de entrada. ¿Por la suma mínima de pesos de entrada? ¿O por la suma mínima de pesos de salida? ¿O por la suma total?

 
elibrarius:

1) Si no hay conexiones desde las entradas a las neuronas internas, entonces se pueden desconectar las propias entradas.

2) Me confunde el hecho de que se necesite mucho más tiempo que si se entrena el modelo completo según el punto 1. Si el resultado es el mismo, ¿por qué perder tanto tiempo?

Puedo suponer que los predictores eliminados se ignorarán en el futuro al volver a entrenar/reentrenar y el ahorro de tiempo será sólo entonces. Pero, después de todo, la importancia de los predictores también puede cambiar con el tiempo.

Me interesaba este truco, ya que yo también empecé a hacerlo, pero desistí al darme cuenta del tiempo que lleva.

Quizás los bucles de abandono permiten más errores y menos épocas de reentrenamiento que el entrenamiento final.


Me pregunto qué lógica se utiliza para filtrar las neuronas ocultas. Cada neurona tiene muchas conexiones de entrada. ¿Por la suma mínima de pesos de entrada? ¿O por la suma mínima de pesos de salida? ¿O por la suma total?

Mira el paquete y la descripción de la función. No lo he mirado en profundidad. Pero en varios modelos (como H2O) es así como determinan la importancia de los predictores. Acabo de comprobarlo y no me parece fiable.

Por supuesto, la importancia de los predictores cambia con el tiempo. Pero si has leído mis artículos, te habrás dado cuenta de que recomiendo encarecidamente volver a entrenar el modelo con regularidad cuando la calidad disminuya por debajo de un límite predefinido.

Es la única forma correcta. EN MI OPINIÓN

Suerte

Suerte

 
Vladimir Perervenko:

Echa un vistazo al paquete y a la descripción de la función. No lo he estudiado en profundidad. Pero en varios modelos (por ejemplo H2O) es como determinan la importancia de los predictores. Acabo de comprobarlo y no me parece fiable.

Por supuesto, la importancia de los predictores cambia con el tiempo. Pero si has leído mis artículos, te habrás dado cuenta de que recomiendo encarecidamente volver a entrenar el modelo con regularidad cuando la calidad disminuya por debajo de un límite predefinido.

Es la única forma correcta. EN MI OPINIÓN

Suerte

Suerte

Muchas gracias.
 

¿No sería mejor introducir los datos de horas y días en el NS no con un único predictor, sino con predictores separados para el número de horas y días?

Si es uno, entonces el peso/valor del lunes (1) y el martes (2) diferirá en un 100%, y el del jueves (4) y el viernes (5) en un 20%. Con las horas 1,2 y 22,23 la diferencia es aún mayor. Y pasar de la 5 a la 1 o de la 23 a la 1 supondría un salto enorme en el peso total.

Es decir, habrá distorsiones en la importancia de los días y las horas si están representados por un único predictor.

5 y 24 predictores adicionales es mucho. Pero como la secuencia de días y horas es cíclica, pueden traducirse en un ángulo sobre un círculo y hacer lo mismo que los ángulos regulares: "Tiene más sentido dar el seno y el coseno de este ángulo como entradas". Es decir, habrá 2 predictores para las horas y los días. La idea está tomada de aquí http://megaobuchalka.ru/9/5905.html
 
elibrarius:

¿No sería mejor introducir los datos de horas y días en el NS no con un único predictor, sino con predictores separados para el número de horas y días?

Si es uno, entonces el peso/valor del lunes (1) y el martes (2) diferirá en un 100%, y el del jueves (4) y el viernes (5) en un 20%. Con las horas 1,2 y 22,23 la diferencia es aún mayor. Y pasar de la 5 a la 1 o de la 23 a la 1 supondría un salto enorme en el peso total.

Es decir, habrá distorsiones en la importancia de los días y las horas si están representados por un único predictor.

5 y 24 predictores adicionales es mucho. Pero como la secuencia de días y horas es cíclica, pueden traducirse en un ángulo sobre un círculo y hacer lo mismo que los ángulos regulares: "Tiene más sentido dar el seno y el coseno de este ángulo como entradas". Es decir, habrá 2 predictores para las horas y los días. La idea está tomada de aquí http://megaobuchalka.ru/9/5905.html

La hora del día y el día(semana, mes, año) son variables nominales, no numéricas. Sólo podemos hablar de si están ordenadas o no. Así que gracias por la sugerencia, pero no se acepta.

¿Usar estas variables como variables numéricas? Puedes experimentar, pero yo no voy en esa dirección. Si tienes algún resultado, por favor compártelo.

Suerte

 
He leído el artículo, en la primera parte hay un montón de transformaciones de predictores, es ciertamente informativo, pero me gustaría ver dos modelos con y sin transformación para evaluar la eficacia de todas estas transformaciones. Además, ¿qué sentido tiene esforzarse por conseguir una distribución normal?
 

Discusión y preguntas sobre el código se puede hacer en el hilo

Suerte

 
¿el paquete funModelling de R no tiene la función "
bayesian_plot()
?

El paquete funModeling de R no tiene la función "?