Soutenir la régression vectorielle sur les données asymétriques / à kurtosis élevé

8

J'utilise la régression vectorielle de support pour modéliser certaines données assez asymétriques (avec un kurtosis élevé). J'ai essayé de modéliser les données directement, mais je reçois des prédictions erronées, je pense principalement en raison de la distribution des données, qui est faussée à droite avec des queues très grasses. Je suis à peu près sûr que quelques valeurs aberrantes (qui sont des points de données légitimes) affectent la formation SVR, et peut-être aussi dans la validation croisée, où en ce moment j'optimise les hyperparamètres en minimisant l'erreur quadratique moyenne.

J'ai essayé de mettre à l'échelle mes données avant d'appliquer SVR (par exemple en utilisant une fonction sqrt pour réduire les valeurs aberrantes) ainsi que d'utiliser une fonction de minimisation hyperparamétrique différente (par exemple, erreur absolue), qui semble donner de meilleurs résultats, mais toujours pas très bonne. Je suis curieux de savoir si quelqu'un a rencontré des problèmes similaires et comment ils l'ont abordé? Toutes suggestions et / ou méthodes alternatives sont les bienvenues.

tomas
la source
si les variables sont positives que l'application de log (un cas particulier de transformation de Box-Cox) peut être utile
Yevgeny
Merci Yevgeny. Les variables sont malheureusement à la fois positives et négatives. Existe-t-il encore un moyen d'appliquer une transformation de puissance ou une transformation Box-Cox?
tomas

Réponses:

9

Vous pouvez utiliser des distributions Lambert W asymétriques ou lourdes pour transformer vos données en quelque chose de plus sage (avertissement: je suis l'auteur des deux articles et du package LambertW R). L'avantage par rapport à la transformation Box-Cox est qu'ils n'ont pas de restriction de positivité, les paramètres optimaux de la transformation peuvent être estimés (MLE) à partir des données, et vous pouvez également oublier la transformation et modéliser vos données comme un Lambert W x Distribution F directement.

Le package LambertW R fournit plusieurs estimateurs, transformations, méthodes, etc. Je recommande particulièrement de consulter

   Gaussianize()
   IGMM()
   MLE_LambertW()

La distribution Lambert W x F asymétrique est un cadre général pour créer une version asymétrique de n'importe quelle distribution F. Inversement, vous pouvez ensuite rendre vos données asymétriques à nouveau symétriques; la distribution de ces données symétrisées détermine essentiellement le type de Lambert W x F que vous avez; si les données sont juste un peu asymétriques, alors vous pourriez avoir un Lambert W x Gaussian asymétrique; si vos données sont en plus lourdes, vous pouvez peut-être essayer un Lambert W x t asymétrique.

Lambert W x F à queue lourde est une généralisation de la distribution h de Tukey, et ils fournissent une transformation inverse pour rendre les données gaussiennes (également à partir d'asymétrique). Dans l'article, je démontre que même un Cauchy peut être gaussianisé à un niveau que vous - et également plusieurs tests de normalité - ne pouvez pas le distinguer d'un échantillon normal.

Georg M. Goerg
la source
Bienvenue sur notre site, Georg!
whuber
1

Une façon de gérer les valeurs négatives consiste à déplacer les variables dans la plage positive (disons supérieure ou égale à 0,1), d'appliquer la transformée de Box-Cox (ou simplement log () pour un test rapide), puis de normaliser. La normalisation peut être importante pour le SVR car le SVR repose sur une pénalité quadratique appliquée à tous les coefficients uniformément (donc le SVR n'est pas invariant à l'échelle et peut bénéficier d'une standardisation variable). Assurez-vous de vérifier les distributions de variables résultantes - elles ne devraient pas être très biaisées (idéalement, elles devraient avoir l'air gaussiennes)

Une autre technique que l'on pourrait essayer est d'appliquer une transformation de "signe spatial" aux vecteurs d'entrée x <- x / norm(x)selon le "prétraitement des signes spatiaux: un moyen simple de conférer une robustesse modérée aux estimateurs multivariés". J. Chem. Inf. Modèle (2006) vol. 46 (3) pp. 1402-1409 Je n'ai pas eu beaucoup de chance avec cette technique mais le kilométrage peut varier.

Yevgeny
la source
1
Merci Yevgeny. Je vais y jeter un œil. Je pensais à utiliser une transformation sinus hyperbolique inverse car c'était une technique qui semblait fonctionner à la fois pour les valeurs positives et négatives. Malheureusement, je ne sais pas comment estimer le paramètre thêta. Connaissez-vous cela du tout? Merci.
tomas
J'ai vu cette formule (sans paramètre): x <- log (x + sqrt (x ^ 2 + 1))
Yevgeny
0

Une façon d'aborder la solution consisterait à construire deux modèles: l'un pour les valeurs qui correspondent à la distribution et l'autre pour les valeurs aberrantes. Ma suggestion à cet égard serait de créer une variable de réponse binaire (0,1) avec 0 étant la valeur si le point de données est dans les limites de votre distribution et 1 s'il se trouve à l'extérieur. Ainsi, pour les cas de valeurs aberrantes que vous souhaitez conserver dans vos données, vous aurez 1 dans votre variable cible et le reste à 0. Exécutez maintenant une régression logistique pour prédire les probabilités des valeurs aberrantes et vous pouvez multiplier la valeur moyenne pour le groupe de valeurs aberrantes avec les probabilités individuelles d'obtenir les prédictions. Pour le reste des données, vous pouvez exécuter votre SVM pour prédire les valeurs.

Parce que les valeurs sont des valeurs aberrantes, elles auront de faibles probabilités associées et même si vous prenez la moyenne des valeurs aberrantes qui seront asymétriques, la valeur attendue des valeurs aberrantes sera réduite par leurs faibles probabilités attachées et là en la rendant plus prédiction raisonnable.

Avait rencontré un scénario similaire tout en prédisant le montant des réclamations pour un fournisseur de services d'assurance. J'avais utilisé la technique mentionnée ci-dessus pour augmenter considérablement les performances de mon modèle.

Une autre façon pourrait être de prendre la transformation logarithmique de votre variable cible, ce qui est possible si vous n'avez qu'une valeur positive dans votre variable cible. Mais assurez-vous que si vous effectuez une transformation de journal de votre variable cible, tout en prédisant la variable, vous devez également inclure le composant d'erreur.

Donc, log(Y)=a+BX+ϵ est votre équation modèle, par exemple

puis, Y=exp(a+BX+ϵ)

Vous pouvez jeter un œil sur le lien suivant pour la transformation des journaux: http://www.vims.edu/people/newman_mc/pubs/Newman1993.pdf

user2361683
la source