Suporte à regressão vetorial em dados com distorção / alta curtose

8

Estou usando a regressão de vetores de suporte para modelar alguns dados bastante distorcidos (com alta curtose). Eu tentei modelar os dados diretamente, mas estou recebendo previsões errôneas, principalmente devido à distribuição dos dados, que é distorcida com caudas muito grossas. Tenho certeza de que alguns discrepantes (que são pontos de dados legítimos) estão afetando o treinamento em SVR, e talvez também na validação cruzada, onde no momento estou otimizando os hiperparâmetros minimizando o erro médio quadrático.

Eu tentei escalar meus dados antes de aplicar o SVR (por exemplo, usando uma função sqrt para reduzir os valores discrepantes), bem como usar uma função de minimização de hiperparâmetro diferente (por exemplo, erro absoluto), que parece dar melhores resultados, mas ainda não muito boa. Estou curioso se alguém encontrou problemas semelhantes e como eles abordaram isso? Todas as sugestões e / ou métodos alternativos são bem-vindos.

tomas
fonte
Se as variáveis são positivas do que aplicar log (um caso especial de transformação Box-Cox) pode ser útil
Yevgeny
Obrigado Yevgeny. Infelizmente, as variáveis ​​são positivas e negativas. Ainda existe uma maneira de aplicar uma transformação de poder ou Box-Cox?
tomas

Respostas:

9

Você pode usar distribuições Lambert W inclinadas ou pesadas para transformar seus dados em algo mais bem-comportado (isenção de responsabilidade: eu sou o autor dos documentos e do pacote LambertW R). A vantagem sobre a transformação Box-Cox é que eles não têm nenhuma restrição de positividade, os parâmetros ideais da transformação podem ser estimados (MLE) a partir dos dados, e você também pode esquecer a transformação e modelar seus dados como um Lambert W x Distribuição F diretamente.

O pacote LambertW R fornece vários estimadores, transformações, métodos etc. Eu recomendo especialmente uma olhada em

   Gaussianize()
   IGMM()
   MLE_LambertW()

A distribuição Lambert W x F inclinada é uma estrutura geral para criar uma versão inclinada de qualquer distribuição F. Por outro lado, você pode tornar seus dados inclinados novamente simétricos; a distribuição desses dados simétricos basicamente determina que tipo de Lambert W x F você possui; se os dados são um pouco assimétricos, você pode ter um Lambert W x Gaussian inclinado; se seus dados são adicionalmente pesados, talvez você possa experimentar um Lambert W x t inclinado.

Lambert de cauda pesada W x F são uma generalização da distribuição h de Tukey e fornecem uma transformação inversa para tornar os dados gaussianos (também de assimétricos). No artigo, demonstro que mesmo um Cauchy pode ser gaussianizado a um nível que você - e também vários testes de normalidade - não conseguem distinguir de uma amostra normal.

Georg M. Goerg
fonte
Bem-vindo ao nosso site, Georg!
whuber
1

Uma maneira de lidar com valores negativos é mudar as variáveis ​​para o intervalo positivo (digamos, maior ou igual a 0,1), aplicar a transformação Box-Cox (ou apenas log () para um teste rápido) e padronizar. A padronização pode ser importante para o SVR, já que o SVR depende da penalidade quadrática aplicada a todos os coeficientes de maneira uniforme (portanto, o SVR não é invariável à escala e pode se beneficiar da padronização variável). Certifique-se de verificar as distribuições de variáveis ​​resultantes - elas não devem ser muito distorcidas (idealmente, devem parecer gaussianas)

Outra técnica que se poderia tentar é aplicar a transformação de "sinal espacial" aos vetores de entrada, x <- x / norm(x)conforme "Pré-processamento de sinal espacial: uma maneira simples de conferir robustez moderada a estimadores multivariados". J. Chem. Inf. Model (2006) vol. 46 (3) pp. 1402–1409 Não tive muita sorte com essa técnica, mas a milhagem pode variar.

Yevgeny
fonte
1
Obrigado Yevgeny. Vou dar uma olhada nisso. Eu estava pensando em usar uma transformação senoidal hiperbólica inversa, pois era uma técnica que parecia funcionar para valores positivos e negativos. Infelizmente, não tenho certeza de como estimar o parâmetro theta. Você está familiarizado com isso? Obrigado.
tomas
Eu vi essa fórmula (parâmetro livre): x <- log (x + sqrt (x ^ 2 + 1))
Yevgeny
0

Uma maneira de abordar a solução seria criar dois modelos: um para os valores alinhados à distribuição e outro para os outliers. Minha sugestão nesse sentido seria criar uma variável de resposta binária (0,1) com 0 sendo o valor se o ponto de dados estiver dentro dos limites de sua distribuição e 1 se estiver fora. Portanto, para os casos dos outliers que você deseja manter em seus dados, você terá 1 na variável de destino e o restante como 0. Agora, execute uma regressão logística para prever as probabilidades dos outliers e você pode multiplicar o valor médio para o grupo de discrepantes com probabilidades individuais para obter as previsões. Para o restante dos dados, você pode executar seu SVM para prever os valores.

Como os valores são discrepantes, eles terão baixas probabilidades associadas a ele e, mesmo que você faça uma média dos discrepantes que serão distorcidos, o valor esperado dos discrepantes será reduzido pelas probabilidades baixas associadas e, portanto, tornando-o mais previsão razoável.

Encontrou um cenário semelhante ao prever o valor das reivindicações para um provedor de serviços de seguros. Eu tinha usado a técnica acima mencionada para aumentar drasticamente o desempenho do meu modelo.

Outra maneira poderia ser a transformação de log da sua variável de destino, o que é possível se você tiver apenas um valor positivo na sua variável de destino. Mas verifique se você está fazendo uma transformação de log da sua variável de destino e, ao prever a variável, também precisa incluir o componente de erro.

Assim, registro(Y)=uma+BX+ϵ é a sua equação de modelo para, por exemplo

então, Y=exp(uma+BX+ϵ)

Você pode dar uma olhada no seguinte link para transformação de log: http://www.vims.edu/people/newman_mc/pubs/Newman1993.pdf

user2361683
fonte