Existe uma maneira de desativar o recurso de ajuste de parâmetros (grade) no CARET?

15

O CARET usará automaticamente uma grade de ajuste pré-especificada para criar vários modelos antes de selecionar um modelo final e depois treinar o modelo final com os dados completos do treinamento. Eu posso fornecer à minha própria grade de sintonia apenas uma combinação de parâmetros. No entanto, mesmo neste caso, o CARET "seleciona" o melhor modelo entre os parâmetros de ajuste (embora exista apenas um neste caso) e, em seguida, ajusta o modelo final a todos os dados de treinamento. Este é um passo extra que eu gostaria de evitar.

Como eu simplesmente pulo a etapa de pesquisa de modelo entre as variações na grade de ajuste e forço o CARET a criar todos os dados de treinamento (além de chamar diretamente a biblioteca de modelos subjacente)?

Ram Ahluwalia
fonte
11
A pergunta não é clara, o que provavelmente explica por que você recebeu respostas respondendo a perguntas diferentes, a saber 1) Como eu digo ao sinal para ignorar a validação e o ajuste do modelo? e 2) Como desativo apenas o ajuste do modelo?
Johan Larsson

Respostas:

17

Você pode especificar method="none"no trainControl. Por exemplo:

train(Species ~ ., data=iris, method="rf", tuneGrid=data.frame(mtry=3),
  trControl=trainControl(method="none"))

Não tenho certeza de quando isso foi implementado.

Peyton
fonte
9

A melhor maneira seria fornecer explicitamente o quadro de dados tuneGrid. Por exemplo, a floresta aleatória possui apenas um parâmetro de ajuste, 'mtry', que controla o número de recursos selecionados para cada árvore.

Para definir mtry em um valor específico, você pode escolher o padrão randomForest (? RandomForest):

model <- train(x = X, y = Y, method = 'rf', tuneGrid = data.frame(.mtry = M))

onde M é o valor único do parâmetro de ajuste que você deseja usar.

para vários parâmetros de ajuste, faça o seguinte:

tuneGrid = data.frame(.par1 = P1, .par2 = P2, .par3 = P3)
Brent
fonte
Bem-vindo ao nosso site, Brent! Obrigado por acompanhar esta pergunta antiga.
whuber
4
A sugestão abaixo method="none"é a melhor solução.
Topepo
1

Eu não acho que é possível (pelo menos não era possível a partir de algumas versões atrás). Pode-se reduzir o impacto no desempenho configurando apenas uma única partição de reamostragem nos dados de treinamento (mas o cursor ainda treinaria um modelo duas vezes)

Isso soa como um recurso útil, então eu gostaria de executar ping no autor do pacote.

Yevgeny
fonte
Desculpe, esta resposta está obsoleta agora
smci 16/07/2015