El test MMPI-2 es un cuestionario que permite determinar varias estados psicologicos de un paciente. Esta aplicación determina el nivel de depresión del paciente utilizando una red neuronal back-propagation.
Para instalar la aplicación es necesario realizar los siguientes pasos:
- rvm (Linux)
- RubyIntaller (Windows).
Con el siguiente comando parado en el directorio principal de la aplicación:
bundle install
Nota: Si bundle no esta instalado correr el siguiente comando:
gem install bundle
#Uso#
cd bin
ruby train_and_save_net.rb 100
Este comando genera 100 tests MMPI-2 con respuestas aleatorias y entrena la red con 10 iteraciones. Finalmente, guarda la red entrenada en el archivo net_trained.dat. Una vez que tenemos persistida la red, ya no hace falta entrenarla cada vez que necesitamos usarla.
El siguente comando prueba la red (ya entrenada en el paso anterior) generando un caso aleatorio para el cual ya se conoce su resultado.
cd bin
ruby test_net.rb
Para realizar el test hay que ejecutar el siguiente comando:
cd bin
ruby mmpi2_test.rb
Nos ira haciendo una serie de preguntas para finalmente calcular nuestro nivel de depresión.
Es posible entrenar y probar la red en un solo paso, aunque puede demorar algún tiempo dependiendo del cuantos test se utilicen para entrenar la red.
cd bin
ruby train_and_test_net.rb 100
Donde 100 es el número de tests MMPI-2 utilizados para entrenar la red.
La red se puede configurar desde el archivo config/net_configuration.rb. Veamos su contenido:
module NetConfiguration
NEURON_LEVELS = [32,32,5]
# NEURON_LEVELS = [32,32,20] --> Comentado
LEARNING_RATE = 0.25
MOMENTUM = 0.1
MAX_ERROR = 0.001
OUTPUT_CONVERTER = BinaryOutputConverter.new 5
# OUTPUT_CONVERTER = BinaryOutputConverter.new 20+1 --> Comentado
end
- Neuron Levels: Aqui se configura cuantas neuronas hay en cada nivel y por ende el numero de niveles de la red. En el ejemplo se puede ver que tenemos un nivel de entrada de 32 neuronas, uno intermedio de 32 y la salida tiene 5 neuronas.
- Learning Rate: Es le factor de aprendizaje de la red. Puede variar entre 0,05 y 0,25.
- Momentum: Cuanto más grande es el Momento, la convergencia es más rápida. Por defecto es 0,1.
- Error: El máximo error de la red en la etapa de entrenamiento. El error estra expresado como: Error = 0.5 * sum( (expected_value-output_value)**2 )
- Output converter: Dependiendo la cantidad de salidas hay dos estrategia:
- BinaryOutputConverter: Usada para una salida binaria de 5 neuronas.
- OutputByNumberConverter: Usada para una salida por cada valor posible. Por ejemplo: si tengo 20 valores posible, tendre 20 neuronas de salida.
existe un solo log el cual se encuentra en el directorio log. Para leerlo a medida que se va generando se puede usar el siguieten comando:
tail -f log/mmpi2.log
Para correr los tests desde el directorio de la aplicación ejecutar el siguiente comando:
rake test
mmpi2-backpropagation is released under the MIT License.