Präzises und schnelles Regressionsmodell basierend auf einer soliden mathematischen Grundlage.
Der Code stellt die Implementierung des Kolmogorov-Arnold-Regressionsmodells und zwei Methoden zur Modellidentifikation dar. Dieser Ansatz hat in letzter Zeit unter dem Namen „KAN: Kolmogorov-Arnold Networks“ an Popularität gewonnen.
Der Code ist in MATLAB geschrieben.
Der Code ist das Ergebnis des Gemeinschaftsprojekts zwischen mir und Andrew Polar, das 2019–2023 durchgeführt wurde. Das Grundkonzept dieses Ansatzes wurde in Lit. veröffentlicht. 1 im Jahr 2021. Unser neuester Artikel, Ref. 2 , veröffentlicht als Preprint im Mai 2023 (erste Version), enthält die allgemeinste Formulierung des Ansatzes. Aktualisierte Ref. 2 , veröffentlicht als Preprint im Juni 2024 (zweite Version), enthält auch die datengesteuerte Lösung partieller Differentialgleichungen.
Die wichtigsten Highlights des Codes sind:
Das Hauptskript mainTriang
führt den Code aus. Im Skript wählt das Flag modelMethod
den Modelltyp (Splines oder stückweise linear) und die Parameterschätzungsmethode (GN oder NK) aus. Die neueste Ergänzung ist die beschleunigte NK-Methode (siehe Ref. 2 , Abschnitt zur Parallelisierung/Vektorisierung). In den Modellbaufunktionen schaltet das Flag printProgr
den Ausdruck des Fortschritts im Command Window.
Der Code erstellt das Modell und zeichnet log(RMSE)
als Funktion der Anzahl der Durchläufe durch die Daten auf. Das Modell besteht aus zwei Matrizen mit den Parametern: fnB
und fnT
.
Das erhaltene Modell kann verwendet werden, um eine Vorhersage für einen neuen Datensatz zu treffen. Für die Spline-Version des Modells:
y = modelKA_basisC( x, xmin, xmax, ymin, ymax, fnB, fnT );
ausgeführt werden, wobei x
die Eingabedaten im gleichen Format wie im Skript mainTriang
und y
die vorhergesagten Ausgabedaten sind. Für die stückweise lineare Version des Modells ist die Funktion, die die Vorhersage trifft, modelKA_linear
(sie hat das gleiche Format wie oben).
Das Rechenbeispiel ist ein synthetischer Datensatz – für jeden Datensatz sind die Eingaben die Koordinaten von drei Punkten in 2D und die Ausgabe ist die Fläche des Dreiecks, das durch die Punkte gebildet wird. Die Punkte gehören zum Einheitsquadrat. Das Standardbeispiel dauert auf einem Laptop mit Intel Core i5 der 11. Generation etwa 14 Sekunden.
Es gibt drei Skripte mit den Unit-Tests: testBasis
zum Überprüfen der Ableitungen der Basisfunktionen, testDeriv
zum Überprüfen der Ableitungen der Modellausgabe durch die Eingaben und durch die Parameter und testSpline
zum Vergleichen der implementierten Splines mit den integrierten MATLAB-Splines .
Die datengesteuerte Lösung partieller Differentialgleichungen wird separat im solvePDE_NK
implementiert. Das Rechenbeispiel ist eine PDE zweiter Ordnung; die Einzelheiten sind in Lit. angegeben. 2 , die aktualisierte Version vom Juni 2024. Das Standardbeispiel dauert auf einem Laptop mit Intel Core i5 der 11. Generation etwa 15 Sekunden.
Das Skript mainMIT
führt dasselbe Beispiel aus wie in einer aktuellen Python-Implementierung durch andere Forscher (Link in der Datei). Es wird nur hinzugefügt, um die neuesten Benchmark-Ergebnisse in Ref. zu reproduzieren. 2 .
Der Code wurde von Dr. Michael Poluektov (University of Dundee, Department of Mathematical Sciences and Computational Physics) entwickelt.
Der Autor möchte die große Hilfe von Dr. Andrew Polar würdigen, der gleichermaßen zum Forschungsprojekt beigetragen hat und auf seiner GitHub-Seite separate Implementierungen des Ansatzes in C# und C++ pflegt.
A. Polar und M. Poluektov, Eng. Appl. Artif. Intel. , 99:104137, 2021, Link. ↩
M. Poluektov und A. Polar, arXiv:2305.08194, 2023, Link. ↩ ↩ 2 ↩ 3 ↩ 4 ↩ 5