Modelo de regresión preciso y rápido basado en una sólida base matemática.
El código representa la implementación del modelo de regresión de Kolmogorov-Arnold y dos métodos de identificación del modelo. Este enfoque ha ganado popularidad recientemente con el nombre "KAN: Kolmogorov-Arnold Networks".
El código está escrito en MATLAB.
El código es el resultado del proyecto de colaboración entre Andrew Polar y yo realizado en 2019-2023. El concepto básico de este enfoque ha sido publicado en la Ref. 1 en 2021. Nuestro último artículo, Ref. 2 , publicado como preimpresión en mayo de 2023 (primera versión), tiene la formulación más general del enfoque. Ref. actualizada. 2 , publicado como preimpresión en junio de 2024 (segunda versión), también incluye la solución basada en datos de ecuaciones diferenciales parciales.
Los aspectos más destacados del código son:
El script principal mainTriang
ejecuta el código. En el script, el indicador modelMethod
selecciona el tipo de modelo (splines o lineal por partes) y el método de estimación de parámetros (GN o NK). La última incorporación es el método NK acelerado (ver Ref. 2 , sección sobre paralelización/vectorización). En las funciones de construcción del modelo, la bandera printProgr
cambia la impresión del progreso en la ventana de comandos.
El código construye el modelo y traza log(RMSE)
en función del número de pasadas por los datos. El modelo constituye dos matrices con los parámetros: fnB
y fnT
.
El modelo obtenido se puede utilizar para hacer una predicción sobre un nuevo conjunto de datos. Para la versión spline del modelo,
y = modelKA_basisC( x, xmin, xmax, ymin, ymax, fnB, fnT );
debe ejecutarse, donde x
son los datos de entrada en el mismo formato que en el script mainTriang
e y
serán los datos de salida previstos. Para la versión lineal por partes del modelo, la función que realiza la predicción es modelKA_linear
(tiene el mismo formato que el anterior).
El ejemplo computacional es un conjunto de datos sintéticos: para cada registro, las entradas son las coordenadas de tres puntos en 2D y la salida es el área del triángulo formado por los puntos. Los puntos pertenecen al cuadrado unitario. El ejemplo predeterminado tarda aproximadamente 14 segundos en una computadora portátil con Intel Core i5 de 11.a generación.
Hay tres scripts con las pruebas unitarias: testBasis
para verificar las derivadas de las funciones base, testDeriv
para verificar las derivadas de la salida del modelo por las entradas y por los parámetros, y testSpline
para comparar los splines implementados con los splines incorporados en MATLAB. .
La solución basada en datos de ecuaciones diferenciales parciales se implementa por separado en el script solvePDE_NK
. El ejemplo computacional es una PDE de segundo orden; los detalles se dan en la Ref. 2 , la versión actualizada de junio de 2024. El ejemplo predeterminado tarda aproximadamente 15 segundos en una computadora portátil con Intel Core i5 de 11.a generación.
El script mainMIT
ejecuta el mismo ejemplo que en una implementación reciente de Python realizada por otros investigadores (enlace en el archivo). Se agrega únicamente para reproducir los últimos resultados de referencia informados en la Ref. 2 .
El código ha sido desarrollado por el Dr. Michael Poluektov (Universidad de Dundee, Departamento de Ciencias Matemáticas y Física Computacional).
El autor desea agradecer la gran ayuda del Dr. Andrew Polar, quien contribuyó igualmente al proyecto de investigación y mantiene implementaciones separadas del enfoque en C# y C++ en su página de GitHub.
A. Polar y M. Poluektov, Ing. Aplica. Artif. Intel. , 99:104137, 2021, enlace. ↩
M. Poluektov y A. Polar, arXiv:2305.08194, 2023, enlace. ↩ ↩ 2 ↩ 3 ↩ 4 ↩ 5