web-dev-qa-db-fra.com

R compréhension du {caret} train (tuneLength =) et des méthodes SVM de {kernlab}

Essayer de mieux comprendre le fonctionnement de train(tuneLength = ) dans {caret}. Ma confusion s'est produite lorsque j'ai essayé de comprendre certaines des différences entre les méthodes SVM de {kernlab} J'ai examiné la documentation ( ici ) et la page de formation du caret ( ici ).

Mon exemple de jouet consistait à créer cinq modèles à l'aide du jeu de données iris. Les résultats sont ici , et le code reproductible est ici (ils sont assez longs, donc je ne les ai pas copiés et collés dans le message).

Dans la documentation {caret}:

tuneLength
un entier indiquant la quantité de granularité dans la grille des paramètres de réglage. Par défaut, cet argument est le nombre de niveaux pour chaque paramètre de réglage qui doivent être générés par le train. Si trainControl a l'option search = "random", il s'agit du nombre maximal de combinaisons de paramètres de réglage qui seront générées par la recherche aléatoire. (REMARQUE: s'il est donné, cet argument doit être nommé.)

Dans cet exemple , trainControl(search = "random") et train(tuneLength = 30), mais il semble y avoir 67 résultats, pas 30 (le nombre maximum de combinaisons de paramètres de réglage)? J'ai essayé de jouer pour voir s'il y avait peut-être 30 valeurs ROC uniques, ou même ydim, mais d'après moi, elles ne le sont pas.

Pour l'exemple de jouet, j'ai créé le tableau suivant:

caret_SVM

Existe-t-il un moyen de voir ce qui se passe "sous le capot"? Par exemple, M1 (svmRadial) et M3 (svmRadialSigma) prennent et reçoivent tous deux les mêmes paramètres de réglage, mais en fonction de l'appel de $results Semble les utiliser différemment?

Ma compréhension de train(tuneLength = 9) était que les deux modèles produiraient des résultats de sigma et C chacun avec 9 values, 9 times Puisque 9 Est le nombre de niveaux pour chaque paramètre de réglage (l'exception étant la recherche aléatoire)? De même, M4 Serait 9^3 Puisque train(tuneLength = 9) et il y a 3 Paramètres de réglage?

Michael

14
J.M.

J'ai besoin de mettre à jour la documentation du paquet plus mais les détails sont écrits sur la page web du paquet pour la recherche aléatoire :

"Le nombre total de combinaisons uniques est spécifié par l'option tuneLength à train."

Cependant, il s'agit de SVM particulièrement boueux utilisant le noyau RBF. Voici un aperçu:

  • svmRadial règle le coût et utilise une seule valeur de sigma basée sur la fonction sigest de kern lab. Pour la recherche dans la grille, tuneLength est le nombre de valeurs de coût à tester et pour la recherche aléatoire, c'est le nombre total de paires (cost, sigma) à évaluer.
  • svmRadialCost est identique à svmRadial mais sigest est exécuté à l'intérieur de chaque boucle de rééchantillonnage. Pour la recherche aléatoire, elle ne s'accorde pas sur sigma.
  • svmRadialSigma avec des airs de recherche de grille sur le coût et sigma. Dans un moment de performances cognitives sous-optimales, j'ai configuré cela pour essayer au plus 6 valeurs de sigma lors de la recherche dans la grille car je pensais que l'espace de coût avait besoin d'une plage plus large. Pour la recherche aléatoire, il fait la même chose que svmRadial.
  • svmRadialWeight est le même que svmRadial mais est également considéré comme des poids de classe et concerne uniquement les problèmes à 2 classes.

Quant à l'exemple SOM sur la page Web, c'est un bug. J'ai suréchantillonné l'espace des paramètres SOM car il doit y avoir un filtre pour xdim <= ydim & xdim*ydim < nrow(x). Le bug vient de moi qui ne garde pas la bonne quantité de paramètres.

12
topepo