Estou trabalhando em um projeto de aprendizado de máquina em que estou tentando ajustar uma curva nos dados. Infelizmente, a data possui um vetor de característica um pouco alto. Portanto, não posso plotá-los em um espaço 2D ou 3D para adivinhar como é a forma dos dados.
Portanto, além do sucesso, existe uma maneira matemática de encontrar o grau de polinômio que melhor se ajusta aos meus dados.
Quero dizer, eu sei que posso procurar um erro mínimo quadrado para cada grau e, em seguida, escolher aquele com o erro mínimo, mas haverá um problema de otimização duplo, pois o primeiro loop de otimização consistirá em encontrar um conjunto de pesos para a curva que se ajusta aos dados, enquanto o segundo loop seria usado para verificar o grau. Alguma sugestão?
Respostas:
Desculpe se isso é muito elementar, eu só queria tornar essa resposta o mais independente possível. De fato, você não pode fazer o que está descrevendo: o melhor polinômio de grau sempre se ajustará ao menos o melhor polinômio de grau , pois o conjunto de polinômios de grau inclui todos os graus polinômios (basta definir ). À medida que você aumenta o , em um determinado momento, você poderá encontrar um polinômio que se ajusta perfeitamente aos dados (ou seja, com erro zero).k + 1 k k + 1 k umak + 1= 0 k
Isso geralmente não é uma solução muito atraente, porque é difícil imaginar um processo que deva ser descrito por, por exemplo, um polinômio de um milhão de graus, e é quase certo que esse tipo de modelo será mais complexo do que o necessário para descrever adequadamente os dados. . Esse fenômeno é chamado de super adaptação , e um bom exemplo é esta imagem da Wikipedia. Os dados estão claramente próximos de lineares, mas é possível (mas não desejável) obter um erro menor com um modelo mais complexo.
Em geral, o objetivo é minimizar o erro que iria ocorrer em novos dados do mesmo modelo subjacente, em vez do conjunto atual de dados. Frequentemente, não é possível ou prático obter apenas mais dados; portanto, usaria-se alguma forma de validação cruzada para encontrar o modelo que generaliza melhor os dados não vistos. Existem várias formas de validação cruzada, e você pode ler sobre elas no artigo da Wikipedia ou em várias respostas no CrossValidated (ha!). Mas, na verdade, todos eles podem ser reduzidos para: ajustar um modelo em alguns dos seus dados e usá-lo para prever os valores para o restante dos dados. Faça isso repetidamente e escolha o modelo (neste caso, o grau de polinômio) que oferece o melhor desempenho, em média.
fonte
Uma das maneiras de resolver esse problema de "pesquisa" é começar primeiro com algum algoritmo meta-heurístico como a Programação Genética e, uma vez que o programa é capaz de criar uma função "próxima" (de aptidão decente), comece com os algoritmos tradicionais de regressão de aprendizado de máquina grau identificado pelo GP. Você ainda precisará executar validações cruzadas para ajustar seu modelo polinomial de n graus. Poucas coisas que você precisa para garantir que, ao executar o GP, não forneça funções que não devem ser usadas; caso contrário, o GP tem a tendência de criar modelos complexos, imitando a árvore de decisão + linear + quadrática etc.
fonte