1. Primero vamos a jugar con el ajuste/aprendizaje de la red.

    Descárgate el fichero base, nuevamente para el problema de los precios de las casas. Aparte de los valores de otras veces que tienes:

    proceso
    Distintas posibilidades de preproceso. Analiza qué importancia tiene. Tienes:

    'mediavar'
    media nula y varianza unidad
    'normalpow'
    otro método para lo mismo, en caso de que te diera problemas el anterior
    'medianavar'
    llevarlo a mediana 0, intercuartil 1; robusto si tienes abundantes valores extremos
    'normalquant'
    otro variante de la misma idea
    'unifor
    ecualización (distribución uniforme)
    'rango1'
    mínimo a 0, máximo a 1
    funerror
    La función de error a optimizar. Tienes como opciones:
    'MSE'
    error medio cuadrático
    'L1'
    error medio en valor absoluto
    'SmoothL1'
    cuadrático en errores bajos y lineal en altos
    'satura'
    logaritmo del error medio cuadrático
    'maximo'
    máximo valor absoluto de error
    'medabs'
    mediana de los valores absolutos de los errores
    'd2'
    verosimilitud de distribución gamma
    algoritmo
    es el método de ajuste que utiliza la red. Puedes probar con 'SGD', 'LBFGS', 'Rprop', 'RMSprop', 'Adam', 'Adagrad', 'ASGD'
    inicio
    el método de dar los valores iniciales a los pesos. Prueba con 'inibase', 'inio', 'inixn', 'inixu'

    Si quieres más control sobre el ajuste, puedes ir cambiando la velocidad. Para ello pones en control 'paso' o 'ajuste' o 'validación', según en qué quieras que se fije para cambiar la velocidad. En el primer caso pones en ajusteveloc una función lambda que aplique un factor multiplicativo a la velocidad; va a recibir como argumento el paso de iteración; Un ejemplo puede ser: lambda paso: 0.99 if paso<20 else 0.95. Si controlas por ajuste o validación, entonces en ajusteveloc pones directamente el factor multiplicativo, que aplicará cuando vea que ese error no avanza.

    ¿Con qué métodos, y con qué parámetros, obtienes mejores resultados?

  2. Ahora vamos a tratar de estimar el error en generalización.

    Ya sabemos que medimos la eficiencia del modelo por el error de predicción. Pero, en primer lugar, no debemos medirlo sobre la muestra de ajuste, sino sobre un conjunto más general. En segundo lugar, una sola estimación seguramente no es suficiente. Por ello vamos a obtener varias estimaciones. Estimamos varias veces y obtenemos finalmente el histograma de medidas de error en las distintas pruebas. Los métodos que vienen a continuación se diferencian en cómo se elige los conjuntos de puntos de ajuste dentro de la muestra completa de la que disponemos. Cada uno lo eliges dando valor a la variable estimacion y en todos la cantidad de estimaciones es el valor de numpruebas

  3. Un inconveniente de dividir en ajuste, validación y prueba es que perdemos puntos para el ajuste. Una forma de evitar esto es usar el método de remuestreo para controlar el ajuste. La idea es hacer varias pruebas de las anteriores y luego usar esa información en el ajuste en la red definitiva. Para hacer esto, cambia el valor de todofinal al nombre de una función de statistics que quieras usar para estimar a partir de los resultados de las pruebas): 'median', 'mean', 'geometric_mean' o 'harmonic_mean'. Al final ¿con qué te quedas?