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

    Descárgate el fichero base y su fichero de configuración, 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
    'pca'
    decorrelar mediante PCA
    'aleat'
    proyección aleatoria
    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
    'BCE'
    entropía cruzada en clasificación binaria
    'CrossEntropy'
    entropía cruzada multiclase, si usas Softmax a la salida
    algoritmo
    es el método de ajuste que utiliza la red. Puedes probar con 'SGD', 'LBFGS', 'Rprop', 'RMSprop', 'Adam', 'Adagrad', 'ASGD'. Sobre todo con SGD, y en parte con los demás, te conviene ir a la velocidad más alta que puedas (pero que no se inestabilice)
    inicio
    el método de dar los valores iniciales a los pesos. Prueba con 'inibase', 'inio', 'inixn', 'inixu', 'initn', 'initd'

    Si quieres más control sobre el ajuste, puedes ir cambiando la velocidad. Para ello pones en control 'paso' o 'factor' o 'ajuste' o 'validación', según en qué quieras que se fije para cambiar la velocidad.

    paso
    pones en ajusteveloc un texto cuyo valor sea una función lambda que aplique un factor multiplicativo a la velocidad inicial; va a recibir como argumento el paso de iteración; Un ejemplo (interesante)): lambda paso: 1/(1+k*paso) Prueba distintos valores de k, pero en cualquier caso pequeños (centésimas)
    factor
    pones en ajusteveloc un texto cuyo valor sea una función lambda que aplique un factor multiplicativo a la velocidad del paso previo; va a recibir como argumento el paso de iteración; Un ejemplo puede ser: lambda paso: 0.99 if paso<20 else 0.95
    ajuste o validación
    en ajusteveloc pones directamente el factor multiplicativo, que aplicará cuando vea que ese error no avanza

    También puedes intentar robustecer el ajuste inyectando ruido. Puedes hacerlo con las siguientes variables, cuyo valor, de no ser nulo, será la ganancia de la perturbación (centésimas o milésimas):

    ruidodatos
    las entradas
    ruidosal
    las salidas
    ruidosal
    los pesos

    ¿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?