Estou usando libsvm no modo C-SVC com um kernel polinomial de grau 2 e sou obrigado a treinar vários SVMs. Cada conjunto de treinamento possui 10 recursos e 5000 vetores. Durante o treinamento, recebo este aviso para a maioria dos SVMs que treino:
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000
Alguém poderia explicar o que esse aviso implica e, talvez, como evitá-lo?
Também quero aplicar a validação cruzada para meus modelos para determinar as melhores opções para gama e C (regularização). Meu plano é apenas tentar todas as combinações desses 10 valores: 0,00001, 0,0001, 0,001, 0,01, 0,1, 1, 10, 100, 1000, 10000 para ambos os parâmetros e ver qual combinação produz a melhor precisão durante a validação cruzada. Isso é suficiente? Devo usar mais valores nesse intervalo ou devo escolher um intervalo maior?
fonte
Respostas:
Este meio de aviso que a rotina iterativo usado por LIBSVM para resolver problema de otimização quadrática, a fim de encontrar o hiperplano margem máxima (ou seja, os parâmetros e ) que separa os seus dados atingiu o número máximo de iterações e terá de parar, enquanto a aproximação atual pois pode ser aprimorado ainda mais (ou seja, pode ser alterado para tornar o valor da função objetivo mais extremo). Em resumo, isso significa que o LIBSVM acha que não conseguiu encontrar o hiperplano de margem máxima, o que pode ou não ser verdadeiro.b wW b W W
Há muitas razões pelas quais isso pode acontecer, sugiro que você faça o seguinte:
É uma boa idéia pesquisar ideal em uma escala logarítmica, como você faz. Para os dados normalizados, acho que o intervalo de pesquisa para que você sugeriu deve estar OK. Uma verificação útil: a precisão do classificador não deve mudar muito nas bordas desse intervalo e entre dois valores do seu conjunto. Se isso acontecer, estenda o intervalo ou adicione valores intermediários.CC C
Observe que o LIBSVM distributivo para Windows deve conter um script Python chamado grid.py, que pode fazer a seleção de parâmetros para você (com base na validação cruzada e nos intervalos de pesquisa especificados). Também pode produzir gráficos de contorno para a precisão do SVM. Essa ferramenta pode ser bastante útil.
A seguinte pergunta no StackOverflow e suas perguntas relacionadas também podem ajudar: libsvm Shrinking Heuristics
fonte