Hiperparâmetros na classificação
Pense nos hiperparâmetros como configurações que são usadas para treinamento. Por exemplo, podemos optar por fazer o treinamento lenta ou rapidamente. Os hiperparâmetros afetam o treinamento e, portanto, o desempenho final do modelo. Exatamente quais hiperparâmetros estão disponíveis depende do tipo de modelo que estamos treinando. Normalmente, fazemos experimentos com hiperparâmetros para otimizar o desempenho do modelo.
Florestas aleatórias como um exemplo
As florestas aleatórias têm diferentes tipos de hiperparâmetros disponíveis. Especificamente, com as florestas aleatórias, a linha entre os hiperparâmetros de decisões de arquitetura pode ser indistinguível. Isso porque os hiperparâmetros não afetam apenas os parâmetros dentro do modelo, mas também a forma como as árvores e a floresta são estruturadas.
Lembre-se de que, no início do treinamento, cada árvore de decisão recebe vários exemplos, como 100 ginastas, alguns dos quais ganharam medalhas. É preciso criar uma árvore que divida progressivamente esses exemplos em subgrupos menores de atletas. A meta é que esses subgrupos contenham atletas semelhantes, como todos os atletas ganharam medalhas ou todos eles não ganharam medalhas em cada subgrupo. Vamos explorar alguns hiperparâmetros que podem afetar esse processo de treinamento.
Critérios de divisão
Durante o treinamento, o otimizador precisa decidir quando um nó será dividido. Há diferentes maneiras de tomar decisões como essa, e o método escolhido é chamado de hiperparâmetro. Em essência, diferentes métodos referem-se a diferentes maneiras de avaliar a semelhança de uma exemplo.
Os nós de divisão de métodos comuns são baseados na teoria de informações. Pense nela basicamente como a divisão de um exemplo para ter dois subexemplos resultantes "mais puros" do que o original. Os métodos disponíveis diferem ligeiramente e podem resultar em pequenas diferenças na árvore resultante final, de maneira muito semelhante a como as funções de custo usadas para descendente de gradiente podem fornecer modelos finais diferentes. Faremos um experimento com dois critérios no próximo conjunto de exercícios.
Diminuição mínima de impureza
O critério usado para dividir os nós pode ser personalizado ainda mais. Por exemplo, definir a diminuição mínima de pureza significa que um nó só poderá ser dividido se ele aprimorará o modelo em uma certa proporção ou mais. Há vários hiperparâmetros relacionados que podem bloquear a criação de nós, como a profundidade máxima ou o número mínimo de exemplos em um nó.
O motivo pelo qual restringimos o crescimento indiscriminado de uma árvore é para evitar o sobreajuste. Árvores maiores são melhores na correspondência com o conjunto de dados de treinamento, mas podem se tornar tão ajustadas a esse conjunto de treinamento que param de trabalhar para outros dados. Em outras palavras, restringir a complexidade de uma árvore pode reduzir a tendência dela ao sobreajuste.
Número máximo de características
Quando as árvores de uma floresta aleatória são criadas, elas recebem um subconjunto de dados de treinamento para ajustar e uma lista de características a ser usada. É importante que cada árvore possa receber diferentes coleções de características. Por exemplo, uma árvore pode usar Peso e Altura, enquanto outra usa Altura e Idade.
Aumentar o número máximo de características que cada árvore pode receber provavelmente aprimoraria o nível de ajuste de cada árvore ao conjunto de treinamento, pois mais informações seriam fornecidas. Entender se isso ajuda ou prejudica as habilidades dela no conjunto de teste pode exigir experimentação. Isso ocorre porque, ao sempre fornecer muitas características, as árvores da floresta podem acabar sendo mais semelhantes umas às outras, o que reduz a vantagem de uma floresta aleatória em relação a uma árvore de decisão simples. Em geral, encontrar o equilíbrio entre esses extremos exige alguma experimentação.
Propagação
O ajuste de modelo normalmente depende, em algum momento, de números aleatórios. Os computadores não produzem números realmente aleatórios, mas contêm regras que determinam como produzir uma lista de números aleatórios, dado um número inicial, chamado de semente aleatória.
Por exemplo, se nosso valor de semente for 10 e tiver os três primeiros números ‘aleatórios’, o computador poderá produzir 0,75, 0,13 e 0,68. Embora esses números pareçam aleatórios, sempre que fizermos a propagação com base em 10, obteremos o mesmo conjunto de números.
Em machine learning, usamos números aleatórios para inicializar os parâmetros do modelo e/ou dividir conjuntos de dados em conjuntos de treinamento e teste. Se a semente aleatória for definida, os valores aleatórios usados durante o processo de treinamento serão os mesmos sempre que o código for executado novamente, o que significa que sempre que isso ocorrer, os mesmos dados serão atribuídos para testar ou treinar os modelos, com o mesmo estado de inicialização (parâmetros iniciais).
Por outro lado, se a semente não for definida por você, o computador o fará, por exemplo, com base no tempo, o que resultaria em resultados ligeiramente diferentes ao executar o treinamento duas vezes.
A semente aleatória não é estritamente um hiperparâmetro, mas a apresentamos aqui para realçar que esse parâmetro externo pode desempenhar uma função na eficácia do treinamento. Embora isso geralmente seja secundário, se o modelo for muito complexo e/ou o volume de dados disponível for pequeno, o desempenho do conjunto de teste do modelo poderá ser acentuadamente diferente se duas sementes distintas forem usadas. Nessas situações, geralmente vale a pena executar o treinamento com várias sementes diferentes para avaliar até que ponto o design do modelo é adequado e até que ponto o desempenho dele é simplesmente “pura sorte”.