Estoy trabajando en un proyecto de aprendizaje automático en el que intento ajustar una curva en los datos. Desafortunadamente, la fecha tiene un vector de características algo alto. Por lo tanto, realmente no puedo trazarlos en un espacio 2D o 3D para adivinar cómo se ve la forma de los datos.
Entonces, aparte de hit y trial, ¿existe una forma matemática de encontrar el grado de polinomio que mejor se adapte a mis datos?
Quiero decir que sé que puedo buscar un error de mínimos cuadrados para cada grado y luego elegir el que tenga el error mínimo, pero será un problema de doble optimización, ya que el primer ciclo de optimización consistiría en encontrar un conjunto de pesos para la curva que se ajusta a los datos, mientras que el segundo bucle se usaría para verificar el grado. ¿Alguna sugerencia?
Respuestas:
Lo siento si esto es demasiado elemental, solo quería que esta respuesta fuera lo más autónoma posible. De hecho, no puedes hacer lo que estás describiendo: el mejor polinomio de gradok + 1 siempre encajará al menos tan bien como el mejor polinomio de grado k , desde el conjunto de k + 1 grado polinomios incluye todos k polinomios de grado (solo configurar unak + 1= 0 ) A medida que continúas aumentandok , en un momento determinado, podrá encontrar un polinomio que se ajuste perfectamente a los datos (es decir, con cero errores).
Por lo general, esta no es una solución muy atractiva porque es difícil imaginar un proceso que deba describirse, por ejemplo, en un polinomio de un millón de grados, y es casi seguro que este tipo de modelo será más complejo de lo necesario para describir adecuadamente los datos. . Este fenómeno se llama sobreajuste , y un buen ejemplo es esta imagen de Wikipedia. Los datos son claramente cercanos a los lineales, pero es posible (pero no deseable) obtener un error menor con un modelo más complejo.
En general, el objetivo es reducir al mínimo el error que se produzca en los datos nuevos del mismo modelo subyacente, en lugar de en el conjunto actual de datos. A menudo no es posible ni práctico obtener más datos, por lo que generalmente se emplearía alguna forma de validación cruzada para encontrar el modelo que generalice los mejores datos invisibles. Hay muchas formas de validación cruzada, y puede leer sobre ellas en el artículo de Wikipedia o en numerosas respuestas en CrossValidated (¡ja!). Pero, en efecto, todos se pueden reducir a: ajustar un modelo en algunos de sus datos y usar esto para predecir los valores para el resto de sus datos. Haga esto repetidamente y elija el modelo (en este caso, el grado de polinomio) que le ofrece el mejor rendimiento en promedio.
fuente
Una de las formas de resolver este problema de "búsqueda" es comenzar primero con un algoritmo metaheurístico como la Programación Genética y una vez que el programa pueda crear una función "cercana" (de buena condición física), comience con los algoritmos tradicionales de regresión de aprendizaje automático de grado identificado por GP. Aún deberá realizar validaciones cruzadas para ajustar su modelo polinomial de n grados. Pocas cosas debe asegurarse al ejecutar GP es que no debe proporcionar funciones que no deberían usarse, de lo contrario GP tiene la tendencia de crear modelos complejos que imitan el árbol de decisión + lineal + cuadrático, etc.
fuente