O estado aleatório é um parâmetro para ajustar?

9

Um problema que ocorre com frequência em meus experimentos é que o modelo varia no desempenho quando o estado aleatório do algoritmo é alterado. Portanto, a pergunta é simples, devo tomar o estado aleatório como um hiperparâmetro? Por que é que? Se meu modelo supera outras pessoas com diferentes estados aleatórios, devo considerar o modelo como super ajustado a um determinado estado aleatório?

um log da árvore de decisão no sklearn: (random_rate deve ser um estado aleatório) um log da árvore de decisão no sklearn

PeterLai
fonte
Com o poder computacional moderno, é possível identificar uma semente que fornece um resultado de ponta. Digamos que você seja um pesquisador e tenha realizado um experimento, mas seus resultados não estão funcionando da maneira que você deseja. Seria muito fácil executar seu experimento em milhões de sementes para ver quais contam a história que você está procurando. É melhor ter uma semente fixa que você sempre usa. Mantém você honesto!
Brandon Bertelsen

Respostas:

5

Não você não deveria.

Hiperparâmetros são variáveis ​​que controlam algum aspecto de alto nível do comportamento de um algoritmo. Ao contrário dos parâmetros regulares, os hiperparâmetros não podem ser aprendidos automaticamente a partir dos dados de treinamento pelo próprio algoritmo. Por esse motivo, um usuário experiente selecionará um valor apropriado com base em sua intuição, conhecimento de domínio e significado semântico do hiperparâmetro (se houver). Como alternativa, pode-se usar um conjunto de validação para executar a seleção de hiperparâmetros. Aqui, tentamos encontrar um valor ideal de hiperparâmetro para toda a população de dados testando diferentes valores candidatos em uma amostra da população (o conjunto de validação).

Com relação ao estado aleatório, é usado em muitos algoritmos aleatórios no sklearn para determinar a semente aleatória passada ao gerador de números pseudo-aleatórios. Portanto, ele não trata de nenhum aspecto do comportamento do algoritmo. Por conseguinte, os valores de estado aleatório que tiveram um bom desempenho no conjunto de validação não correspondem aos que teriam um bom desempenho em um novo conjunto de testes não visto. De fato, dependendo do algoritmo, você poderá ver resultados completamente diferentes apenas alterando a ordem das amostras de treinamento.

Sugiro que você selecione um valor de estado aleatório aleatoriamente e use-o para todas as suas experiências. Como alternativa, você pode obter a precisão média de seus modelos em um conjunto aleatório de estados aleatórios.

De qualquer forma, não tente otimizar estados aleatórios, isso certamente produzirá medidas de desempenho otimistas.

Daniel López
fonte
0

O que o efeito random_state afeta? divisão de conjunto de treinamento e validação, ou o quê?

Se for o primeiro caso, acho que você pode tentar encontrar diferenças entre o esquema de divisão em dois estados aleatórios e isso pode lhe dar alguma intuição no seu modelo (quero dizer, você pode explorar por que ele funciona para treinar o modelo em alguns dados, e use o modelo treinado para prever alguns dados de validação, mas não funciona para treinar o modelo em alguns outros dados e prever outros dados de validação. Eles são distribuídos de maneira diferente?) Essa análise pode lhe dar alguma intuição.

E, a propósito, eu também encontrei esse problema :), e simplesmente não entendo. Talvez possamos trabalhar juntos na investigação.

Felicidades.

Janzen LIU
fonte
1
Não entendo a pergunta e não entendo esta resposta.
Michael R. Chernick 11/0318
A questão é: qual é o uso de random_state no seu caso? É usado como uma semente para gerar um número aleatório?
Janzen LIU