Talvez essa seja uma pergunta tola, mas, ao gerar um modelo com sinal de intercalação e usar algo como LOOCV
ou (ainda mais direto ao ponto) LGOCV
, qual é o benefício de dividir dados em conjuntos de trens e testes, se é basicamente isso que a etapa de validação cruzada faz assim mesmo?
Eu li algumas das perguntas relacionadas e elas sugeriram que alguns dos métodos de validação cruzada (por exemplo, o que é descrito aqui no site de intercalação ) são para fins de seleção de recursos . Mas, no meu caso, estou usando randomForest
( method = "rf"
) e kernlab
( method = svmRadial
), que não estão listados no grupo que tenta eliminar os preditores.
Portanto, minha pergunta é se eu uso algo como cross_val <- trainControl(method = "LGOCV", p = 0.8)
, não é o mesmo que treinar 80% dos meus dados, testar o modelo resultante nos 20% restantes e fazer isso repetidamente para ter uma idéia de quão bem o modelo está funcionando?
Em caso afirmativo, é necessário dividir meus dados em conjuntos de trem / teste?
PS: Em parte pergunto enquanto estou conduzindo modelos em protótipos do DOE gerados empiricamente (pense em bens duros onde ajustamos as entradas e depois usamos métodos de teste para medir vários atributos sobre o protótipo).
Como tal, não tenho um grande conjunto de dados com muitos níveis de preditores sobrepostos para modelar - geralmente executamos uma avaliação em cada ponto de interesse do DOE, pois a geração de dados é cara nesse caso. Assim, eu gostaria de usar todos os dados possíveis para um modelo preciso, mas queria verificar aqui que não estou perdendo algo óbvio e criando um modelo ruim por não dividir as coisas.
Edit: Em resposta à pergunta do @ topepo, estou modelando atributos medidos fisicamente de um composto com base no ajuste das entradas químicas da fórmula. Não posso discutir minha aplicação real, mas vou fazer um exemplo com base na formulação de tinta látex interior. Estou realizando experimentos projetados em que misturamos 4-5 produtos químicos, talvez brinque com% de sólidos e uma quantidade de tempo para aquecer a solução de polímero para ajustar o grau de polimerização.
Poderemos então medir reologia, peso molecular, dureza do revestimento de tinta, resistência à água, etc.
Temos réplicas decentes de várias variáveis, mas poucas réplicas verdadeiras no sentido de que todos os níveis de DOE eram exatamente iguais. O conjunto total de dados é de ~ 80 observações e talvez 4-5 sejam repetições exatas. Realizamos 15 testes diferentes, e talvez 5 a 6 deles foram feitos para cada observação. Algumas das respostas estão presentes para 25-50% dos dados.
A partir daqui, gostaríamos de modelar os efeitos de nossos 7 preditores nas propriedades de saída e, em seguida, otimizar para direcionar novos espaços de design com maior probabilidade de fornecer as propriedades desejadas.
(Daí minha pergunta AQUI . Depois de ter um modelo treinado, seria bom fazer o "inverso" e alimentar as respostas desejadas para obter a melhor estimativa dos possíveis níveis de entrada para tentar a seguir).
data_set1
, com o que considero a etapa executada pelaLGOCV
validação cruzada? Pela minha leitura, estou assumindo que 1)caret
repete os parâmetros de ajustedata_set1
e, em seguida, 2) mantém esses parâmetros fixos e 3) cria um "submodelo" usando parâmetros do nº 1 para cadap = 0.8
amostradata_set1
e testa previsões nos 0,2 restantes para medir a precisão . Esse é um resumo razoável?Respostas:
Meus pensamentos gerais:
Portanto, ao avaliar modelos diferentes, você pode ajustá-los, experimentar diferentes tipos de pré-processamento, etc. até encontrar o que você acha que é um bom modelo. A reamostragem pode ajudar a guiá-lo na direção certa durante esse processo.
No entanto, ainda existe a chance de um ajuste excessivo e as chances disso acontecer são grandemente influenciadas pela quantidade de dados (e preditores) que você possui. Se você tiver um pouco de dados, existem algumas maneiras de pensar sobre isso:
Eu caio no segundo acampamento, mas o primeiro não está errado.
Se você tem uma tonelada de dados, isso realmente não importa muito (a menos que você tenha uma pequena taxa de eventos).
Para voce:
Você tem um DOE. O tipo de design ajudaria a responder à pergunta. Você está tentando interpolar entre pontos de design ou prever pontos de design que não foram testados até agora?
Você tem uma réplica. Eu caí como se uma floresta aleatória estivesse acertando um prego com uma marreta e poderia resultar em excesso de ajuste. Eu tentaria algo mais suave como uma rede neural SVM ou (gasp).
Máx.
fonte
method = "svmRadial"
. Espero avaliar alguns outros, inclusivemethod = neuralnet
, embora em tentativas anteriores tenha encontrado a rede neural muito sensível ao `set.seed (). Em resumo, estamos tentando 1) entender melhor a relação entre entradas / respostas múltiplas e 2) fazer melhores suposições no espaço de design mais provável para produzir as propriedades desejadas, para que possamos executar DOEs mais novos e mais focados do que um mais típico abordagem expansiva / espingarda em termos de níveis mínimo / máximo de entrada para tentar.