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
    ruidored
    los pesos

    También 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.

    En los dos primeros la cantidad de pruebas no afecta al cardinal del conjunto, pero el último sí, así que controlamos cuántas pruebas hacer con dos valores valores:

    pruebasgen
    Para partición separada y bootstrap
    pruebasvalcruz
    Para validación cruzada

    Una vez recogido hasta donde podemos llegar en el ajuste (en promedio) usamos esa información en el ajuste en la red definitiva.

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