3 votos

Novato en redes neuronales

Estoy empezando a jugar con las redes neuronales por diversión después de jugar con algo de regresión lineal básica. Soy profesor de inglés, así que no tengo conocimientos de matemáticas y tratar de leer un libro sobre este tema me supera. Pensé que esta sería una mejor vía para obtener algunas preguntas básicas contestadas (aunque sospecho que no hay una respuesta fácil). Sólo busco una orientación general en términos sencillos. Estoy utilizando una versión de prueba de un complemento de Excel llamado NEURO XL. Me disculpo si estas preguntas son demasiado "elementales".

Mi primer proyecto está relacionado con la predicción de la puntuación verbal de un estudiante en el SAT en base a una serie de resultados de los exámenes, el GPA, las puntuaciones de los exámenes de práctica, etc., así como algunos datos cualitativos (género: M=1 , F=0 ; tomó clases de preparación para el SAT: Y=1 , N=0 ; practica deportes universitarios: Y=1 , N=0 ).

En total, tengo 21 variables que me gustaría introducir en la red, siendo la salida la puntuación real (200-800).

Tengo 9000 registros de datos que abarcan muchos años/alumnos. Estas son mis preguntas:

1) ¿Cuántos registros de los 9000 debo utilizar para entrenar la red? 1a. ¿Debería aleatorizar completamente la selección de estos datos de entrenamiento o implicarme más y asegurarme de incluir una variedad de puntuaciones de salida y un amplio rango de cada una de las variables de entrada?

2) Si divido los datos en un número par, digamos 9 $\times$ 1000 (o el número que sea) y creé una red para cada una, luego probé los resultados de cada una de estas 9 en los otros 8 conjuntos para ver cuál tenía el MSE más bajo en todas las muestras, ¿sería esta una forma válida de "elegir" la mejor red si quisiera predecir las puntuaciones de mis estudiantes entrantes (no incluidos en estos datos en absoluto)?

3) Dado que las puntuaciones de las pruebas que estoy utilizando como entradas varían en la escala (algunas están en 1-100 y otras en 1-20, por ejemplo), ¿debo normalizar todas las entradas a sus respectivas puntuaciones z? ¿Cuándo es recomendable o no?

4) Estoy prediciendo la puntuación real, pero en realidad, NO me preocupa tanto la puntuación exacta sino más bien un rango. ¿Sería mi red más precisa si agrupara las puntuaciones de salida en cubos y luego tratara de predecir este número en lugar de la puntuación real?

Por ejemplo

750-800 = 10
700-740 = 9

etc.

¿Hay alguna ventaja en hacer esto o debería seguir adelante e intentar predecir la puntuación exacta?

Y si lo único que me importaba era si la puntuación era superior o inferior a 600. Entonces, ¿podría simplemente hacer la salida 0 (por debajo de 600) o 1 (por encima de 600)?

5a) He leído en algún sitio que no es bueno utilizar 0 y 1, sino 0,1 y 0,9, ¿por qué?

5b) ¿Qué tal -1(por debajo de 600), 0(exactamente 600), 1(por encima de 600), funcionaría esto?

5c) ¿La red siempre dará como resultado -1, 0, 1 - o dará como resultado fracciones que luego tendré que redondear hacia arriba o hacia abajo para finalizar la predicción?

5d) Una vez que haya encontrado la "mejor" red de la pregunta 3, ¿podría jugar con los diferentes parámetros (número de épocas, número de neuronas en la capa oculta, impulso, tasa de aprendizaje, etc.) para optimizarla aún más?

6a) ¿Qué pasa con la función de activación? ¿Servirá la función Log-sigmoide o debo probar las otras opciones que tiene mi software (umbral, tangente hiperbólica, log-sigmoide de base cero)?

6b) ¿Cuál es la diferencia entre log-sigmoide y log-sigmoide de base cero?

3 votos

Si tus conocimientos de machine learning o estadística son bajos te sugiero que evites la red neuronal y utilices una herramienta más sencilla. Por ejemplo, random forest.

1 votos

Estoy de acuerdo en que debería evitar las redes neuronales por completo, pero no considero que el bosque aleatorio sea una herramienta más sencilla. Yo recomendaría k-nearest neighbours o Naive Bayes.

0 votos

Aunque esta pregunta es interesante, hay un problema fundamental en ella: contiene demasiadas preguntas y, por tanto, debería marcarse como demasiado amplia. ¿Y qué pasa con eso?

1voto

Zhubarb Puntos 2330

1) ¿Cuántos registros de los 9000 debo utilizar para entrenar la red? 1a. ¿Debo seleccionar los datos de entrenamiento de forma totalmente aleatoria o ser más cuidadoso y asegurarme de incluir una variedad de puntuaciones de salida y un amplio rango de cada una de las variables de entrada?

Le recomiendo que lea sobre la validación cruzada aquí . El concepto no es matemáticamente pesado. La siguiente figura puede ser útil para ilustrarlo: enter image description here

En cuanto a la selección de sus subconjuntos para la validación cruzada, sospecho que las 9000 muestras abarcan bastantes años, a lo largo de los cuales los efectos de las diferentes variables aleatorias en su resultado pueden haber cambiado. Le sugiero que preste atención a que cada subconjunto esté repartido de forma homogénea a lo largo del intervalo, en lugar de que el primer subconjunto esté formado exclusivamente por registros de 1999, mientras que el último sólo contenga registros de 2014.

2) Si dividiera los datos en un número par, digamos 9×1000 (o como sea número) y creaba una red para cada uno, luego probaba los resultados de cada uno de estos 9 en los otros 8 conjuntos para ver cuál tenía el menor MSE de las muestras, ¿sería ésta una forma válida de "elegir" la mejor red red si quisiera predecir las puntuaciones de mis estudiantes entrantes (que no están incluidos en estos datos)?

Después de leer el enlace de validación cruzada anterior, te recomiendo que eches un vistazo a la respuesta de @Dikran Marsupial aquí . El resumen es que hay que utilizar el conjunto de datos completo para llegar al modelo final.

3) Dado que las puntuaciones de las pruebas que estoy utilizando como insumos varían en escala (algunas están en 1-100, y otras en 1-20, por ejemplo), ¿debo normalizar todas las entradas a sus respectivas puntuaciones z? ¿Cuándo es esto ¿se recomienda o no se recomienda?

Esta es una buena pregunta y ha sido respondida aquí .

4) Estoy prediciendo la puntuación real, pero en realidad, no estoy tan preocupado por la puntuación exacta, sino más bien por un rango. ¿Sería mi red si agrupara las puntuaciones de salida en cubos y luego tratara de y luego tratar de predecir este número en lugar de la puntuación real?

No veo ningún valor añadido en discretizar su variable de resultado de esta manera. Sin embargo, hay que tener cuidado porque si se hace esto, los diferentes rangos serán ordinal . Así, la categoría 3 estará más cerca de la categoría 5 que de la 6. No estoy seguro de las redes neuronales, pero si estuviera aprendiendo la regresión logística, podría entrenar una regresión logística ordenada en lugar de un modelo general, que supone que la variable de resultado es nominal (por ejemplo pass/fail , blue/red/green ).

5b) ¿Qué pasa con -1(por debajo de 600), 0(exactamente 600), 1(por encima de 600), funcionaría esto funciona?

Te aconsejo que no lo hagas, verás que exactly 600 casi nunca ocurre, por lo que la probabilidad de obtener una puntuación de exactamente 600 será casi nula. Además, al entrenar tu modelo, no podrás encontrar muchos ejemplos con una puntuación exacta de 600, por lo que lo más probable es que tu modelo no sea fiable. Si 600 es el umbral de aprobado/desaprobado, puedes entrenarlo como un clasificador binario.

0voto

Te recomiendo que hagas el próximo curso de Coursera de Andrew Ng https://www.coursera.org/course/ml Creo que la mayoría de tus preguntas, si no todas, estarán cubiertas en este curso. También te alejará del uso de Neuro XL, después de todo, ¿qué harás cuando se acabe el periodo de prueba?

0 votos

Definitivamente voy a echar un vistazo al curso, pero su curso también requiere algo de programación. NeuroXL es sólo $ 99 una vez que expira, así que si puedo entender algunos conceptos básicos con la herramienta, que va a trabajar para mí.

0 votos

Hay muchos programas gratuitos de NN de última generación, como pylearn2 y Theano .

0voto

user2514608 Puntos 11
  1. En lugar de dividir en 9 grupos de 1.000, es mejor dividir en 9 grupos de 8.000 en los que cada muestra falta exactamente en uno de los nueve grupos. Entonces podrá probar cada muestra en las otras 8 redes para las que no se utilizó como ejemplo de entrenamiento.

  2. No estoy seguro de que sea más preciso de esta manera.

5a. Algunas redes neuronales no pueden dar salida a nada superior a 1,0 o inferior a 0. Es más fácil que la red dé salida a un 0,9 en su lugar. Es posible que esto no se aplique a tu caso dependiendo de cómo esté configurada la red.

5b. No estoy seguro de que la categoría de exactamente 600 ocurra lo suficiente como para que haya suficientes ejemplos de entrenamiento. Pero sí se podrían crear tres rangos diferentes, es decir, por debajo de 550, 550-650 y por encima de 650

5c. Se obtendrán fracciones. Puedes redondear a la unidad más cercana. A veces se configura para tener múltiples neuronas de salida correspondientes a las diferentes categorías de salida y sólo se elige la que tiene la respuesta más alta.

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