Modèle de régression précis et rapide basé sur des bases mathématiques solides.
Le code représente la mise en œuvre du modèle de régression de Kolmogorov-Arnold et de deux méthodes d'identification du modèle. Cette approche a récemment gagné en popularité sous le nom de « KAN : Kolmogorov-Arnold Networks ».
Le code est écrit en MATLAB.
Le code est le résultat du projet de collaboration entre moi et Andrew Polar mené en 2019-2023. Le concept de base de cette approche a été publié dans Réf. 1 en 2021. Notre dernier article, Réf. 2 publié en prépublication en mai 2023 (première version), présente la formulation la plus générale de l’approche. Réf. mise à jour. 2 publié sous forme de prépublication en juin 2024 (deuxième version) comprend également une solution basée sur les données des équations aux dérivées partielles.
Les principaux points forts du code sont :
Le script principal mainTriang
exécute le code. Dans le script, l'indicateur modelMethod
sélectionne le type de modèle (splines ou linéaire par morceaux) et la méthode d'estimation des paramètres (GN ou NK). La dernière nouveauté est la méthode NK accélérée (voir Réf. 2 , section sur la parallélisation/vectorisation). Dans les fonctions de création de modèles, l'indicateur printProgr
change l'impression de la progression dans la fenêtre de commande.
Le code construit le modèle et trace log(RMSE)
en fonction du nombre de passages dans les données. Le modèle constitue deux matrices avec les paramètres : fnB
et fnT
.
Le modèle obtenu peut être utilisé pour faire une prédiction sur un nouvel ensemble de données. Pour la version spline du modèle,
y = modelKA_basisC( x, xmin, xmax, ymin, ymax, fnB, fnT );
doit être exécuté, où x
sont les données d'entrée dans le même format que dans le script mainTriang
et y
seront les données de sortie prédites. Pour la version linéaire par morceaux du modèle, la fonction qui effectue la prédiction est modelKA_linear
(elle a le même format que ci-dessus).
L'exemple de calcul est un ensemble de données synthétiques : pour chaque enregistrement, les entrées sont les coordonnées de trois points en 2D et la sortie est l'aire du triangle formé par les points. Les points appartiennent au carré unité. L'exemple par défaut prend environ 14 secondes sur un ordinateur portable équipé d'un Intel Core i5 de 11e génération.
Il existe trois scripts avec les tests unitaires : testBasis
pour vérifier les dérivées des fonctions de base, testDeriv
pour vérifier les dérivées du modèle en sortie par les entrées et par les paramètres, et testSpline
pour comparer les splines implémentées avec les splines MATLAB intégrées. .
La solution basée sur les données des équations aux dérivées partielles est implémentée séparément dans le script solvePDE_NK
. L'exemple de calcul est une PDE du second ordre ; les détails sont donnés dans la Réf. 2 , la version mise à jour de juin 2024. L'exemple par défaut prend environ 15 secondes sur un ordinateur portable équipé d'un Intel Core i5 de 11e génération.
Le script mainMIT
exécute le même exemple que dans une implémentation Python récente par d'autres chercheurs (lien dans le fichier). Il est ajouté uniquement pour reproduire les derniers résultats de référence rapportés dans la réf. 2 .
Le code a été développé par le Dr Michael Poluektov (Université de Dundee, Département des sciences mathématiques et de physique computationnelle).
L'auteur tient à remercier pour l'aide précieuse du Dr Andrew Polar, qui a contribué à parts égales au projet de recherche et maintient des implémentations distinctes de l'approche en C# et C++ sur sa page GitHub.
A. Polar et M. Poluektov, ing. Appl. Artif. Intell. , 99 : 104137, 2021, lien. ↩
M. Poluektov et A. Polar, arXiv :2305.08194, 2023, lien. ↩ ↩ 2 ↩ 3 ↩ 4 ↩ 5