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:
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
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.