Cela peut être peut-être une question stupide, mais lors de la génération d'un modèle avec caret et en utilisant quelque chose comme LOOCV
ou (plus précisément) LGOCV
, quel est l'avantage de diviser les données en trains et ensembles de test si c'est essentiellement ce que l'étape de validation croisée fait de toute façon?
J'ai lu certaines des questions connexes et ils ont suggéré que certaines des méthodes de validation croisée (par exemple ce qui est décrit ici sur le site du curseur ) sont destinées à la sélection des fonctionnalités . Mais dans mon cas, j'utilise randomForest
( method = "rf"
) et kernlab
( method = svmRadial
), qui ne sont pas répertoriés dans le groupe qui tente de purger les prédicteurs.
Donc, ma question est de savoir si j'utilise quelque chose comme cross_val <- trainControl(method = "LGOCV", p = 0.8)
, n'est-ce pas la même chose que la formation sur 80% de mes données, tester le modèle résultant sur les 20% restants, et le faire encore et encore pour avoir une idée de la modèle fonctionne?
Si oui, est-il nécessaire de diviser mes données en trains / ensembles de tests?
PS Je demande en partie pendant que je conduis des modèles sur des prototypes DOE générés empiriquement (pensez aux biens matériels où nous modifions les entrées, puis utilisons des méthodes de test pour mesurer divers attributs du prototype).
En tant que tel, je n'ai pas un énorme ensemble de données avec beaucoup de niveaux de prédicteurs qui se chevauchent à partir desquels nous modéliser - nous exécutons souvent un essai à chaque point d'intérêt du DOE car la génération de données est coûteuse dans ce cas. Ainsi, j'aimerais utiliser toutes les données que je peux pour un modèle précis, mais je voulais vérifier ici que je ne manque pas quelque chose d'évident et faire un mauvais modèle en ne divisant pas les choses.
Edit: En réponse à la question de @ topepo, je modélise les attributs mesurés physiquement d'un composé en fonction de l'ajustement des intrants chimiques de la formule. Je ne peux pas discuter de mon application réelle, mais je vais inventer un exemple basé sur la formulation de peinture intérieure au latex. J'exécute des expériences conçues où nous mélangeons 4-5 produits chimiques, peut-être jouer avec% de solides et un certain temps pour chauffer la solution de polymère pour ajuster le degré de polymérisation.
Nous pourrions alors mesurer la rhéologie, le poids moléculaire, la dureté du revêtement de peinture, la résistance à l'eau, etc.
Nous avons des répliques décentes de plusieurs variables, mais peu de vraies répliques dans le sens où chaque niveau DOE était exactement le même. L'ensemble de données total est d'environ 80 observations et peut-être 4-5 sont des répétitions exactes. Nous avons effectué 15 tests différents, et peut-être 5-6 d'entre eux ont été effectués pour chaque observation. Certaines réponses sont présentes pour 25 à 50% des données.
À partir d'ici, nous aimerions modéliser les effets de nos 7 prédicteurs sur les propriétés de sortie, puis optimiser pour cibler de nouveaux espaces de conception qui sont les plus susceptibles de donner les propriétés souhaitées.
(D'où ma question ICI . Une fois que j'aurai un modèle formé, ce serait bien de faire le "reverse" et d'introduire les réponses souhaitées pour obtenir la meilleure estimation des niveaux d'entrée possibles pour essayer ensuite).
data_set1
, que dois-je considérer comme l'étape effectuée par laLGOCV
validation croisée? D'après ma lecture, je suppose que 1)caret
itère les paramètres de réglagedata_set1
, puis 2) maintient ces paramètres fixes et 3) crée un "sous-modèle" en utilisant les paramètres de # 1 pour chaquep = 0.8
échantillondata_set1
et teste les prédictions sur les 0,2 restants pour évaluer la précision . Est-ce un résumé raisonnable?Réponses:
Mes pensées générales:
Donc, lorsque vous évaluez différents modèles, vous pouvez les ajuster, essayer différents types de prétraitement, etc. jusqu'à ce que vous trouviez ce que vous pensez être un bon modèle. Le rééchantillonnage peut vous guider dans la bonne direction au cours de ce processus.
Cependant, il existe toujours un risque de sur-ajustement et les chances que cela se produise sont grandement influencées par la quantité de données (et de prédicteurs) dont vous disposez. Si vous avez un peu de données, il y a plusieurs façons de penser à cela:
Je tombe dans le deuxième camp mais le premier n'a pas tort du tout.
Si vous avez une tonne de données, cela n'a pas vraiment d'importance (à moins que vous n'ayez un petit taux d'événements).
Pour vous:
Vous avez un DOE. Le type de conception aiderait à répondre à la question. Essayez-vous d'interpoler entre des points de conception ou de prédire des points de conception qui n'ont pas été testés jusqu'à présent?
Vous en avez une réplique. Je suis tombé comme si la forêt aléatoire frappait un clou avec un marteau et pouvait entraîner un sur-ajustement. J'essaierais quelque chose de plus fluide comme un SVM ou un réseau neuronal (haletant).
Max
la source
method = "svmRadial"
. J'espère en évaluer d'autres, y comprismethod = neuralnet
, bien que dans les tentatives passées, j'ai trouvé le réseau neuronal très sensible à `set.seed (). En bref, nous essayons de 1) mieux comprendre la relation entre les entrées / réponses multiples et 2) de faire les meilleures suppositions sur l'espace de conception le plus susceptible de produire les propriétés souhaitées afin que nous puissions exécuter de nouveaux DOE plus ciblés par rapport à un plus typique approche expansive / shotgun en termes de niveaux d'entrée min / max à essayer.