Modelo de regressão preciso e rápido baseado em bases matemáticas sólidas.
O código representa a implementação do modelo de regressão Kolmogorov-Arnold e dois métodos de identificação do modelo. Esta abordagem ganhou popularidade recentemente com o nome "KAN: Kolmogorov-Arnold Networks".
O código está escrito em MATLAB.
O código é resultado do projeto colaborativo entre mim e Andrew Polar conduzido em 2019-2023. O conceito básico desta abordagem foi publicado na Ref. 1 em 2021. Nosso artigo mais recente, Ref. 2 , publicado em preprint em maio de 2023 (primeira versão), apresenta a formulação mais geral da abordagem. Ref. Atualizada. 2 publicado como pré-impressão em junho de 2024 (segunda versão) também inclui solução de equações diferenciais parciais baseada em dados.
Os principais destaques do código são:
O script principal mainTriang
executa o código. No script, o sinalizador modelMethod
seleciona o tipo de modelo (splines ou linear por partes) e o método de estimativa de parâmetro (GN ou NK). A última adição é o método NK acelerado (ver Ref. 2 , seção sobre paralelização/vetorização). Nas funções de construção de modelo, o sinalizador printProgr
alterna a impressão do progresso na janela de comando.
O código constrói o modelo e plota log(RMSE)
em função do número de passagens pelos dados. O modelo constitui duas matrizes com os parâmetros: fnB
e fnT
.
O modelo obtido pode ser usado para fazer uma previsão em um novo conjunto de dados. Para a versão spline do modelo,
y = modelKA_basisC( x, xmin, xmax, ymin, ymax, fnB, fnT );
deve ser executado, onde x
são os dados de entrada no mesmo formato do script mainTriang
e y
serão os dados de saída previstos. Para a versão linear por partes do modelo, a função que faz a previsão é modelKA_linear
(tem o mesmo formato acima).
O exemplo computacional é um conjunto de dados sintético – para cada registro, as entradas são as coordenadas de três pontos em 2D e a saída é a área do triângulo formado pelos pontos. Os pontos pertencem ao quadrado unitário. O exemplo padrão leva aproximadamente 14 segundos em um laptop com Intel Core i5 de 11ª geração.
Existem três scripts com os testes unitários: testBasis
para verificar as derivadas das funções de base, testDeriv
para verificar as derivadas da saída do modelo pelas entradas e pelos parâmetros, e testSpline
para comparar os splines implementados com os splines integrados do MATLAB. .
A solução de equações diferenciais parciais baseada em dados é implementada separadamente no script solvePDE_NK
. O exemplo computacional é um EDP de segunda ordem; os detalhes são fornecidos na Ref. 2 , a versão atualizada de junho de 2024. O exemplo padrão leva aproximadamente 15 segundos em um laptop com Intel Core i5 de 11ª geração.
O script mainMIT
executa o mesmo exemplo de uma implementação recente do Python feita por outros pesquisadores (link no arquivo). É adicionado apenas para reproduzir os últimos resultados de benchmark relatados na Ref. 2 .
O código foi desenvolvido pelo Dr. Michael Poluektov (Universidade de Dundee, Departamento de Ciências Matemáticas e Física Computacional).
O autor gostaria de agradecer a grande ajuda do Dr. Andrew Polar, que contribuiu igualmente para o projeto de pesquisa e mantém implementações separadas da abordagem em C# e C++ em sua página GitHub.
A. Polar e M. Poluektov, Eng. Apl. Artefato. Intel. , 99:104137, 2021, ligação. ↩
M. Poluektov e A. Polar, arXiv:2305.08194, 2023, link. ↩ ↩ 2 ↩ 3 ↩ 4 ↩ 5