Descobrindo Random Forest e CNNs
Vc já ouviu falar de Random Forest e CNNs? oque é? para que serve? como são utilizadas? Essa é uma breve descrição desses conceitos, afinal a ignorância é uma opção para poucos. :)
Random Forest ou floresta aleatória é um algoritmo de aprendizagem de máquina(Machine Learning) muito fácil e flexível de ser utilizador é de se obter resultados muito bons, mas para isso têm de se ter um cuidado em especial com seus hiperparâmetros a fim de evitar o Overfitting e outros problemas.
Ná pratica esse algoritmo do tipo supervisionado cria uma combinação entre árvores de decisão, sua floresta, na maioria das vezes do método de bagging que aplica o conceito que a maior combinação dos modelos podemos obter uma maior acurácia e resultados mais estáveis.
Uma das grandes vantagem da utilização desse algoritmo é que ele pode ser utilizado para problemas de classificação e também para regressão. Uma aplicação típica desse solução e em sistemas de recomendações onde dependendo das escolhas e perguntas do usuário tenhamos que recomendar um produto ou serviço. Outra vantagem de sua utilização e a possibilidade de obter a importância de cada características(features) em relação ao modelo, com isso podemos diminuir a quantidade de features iremos está evitando o sobreajuste (overfitting).
Como já mencionado, Random Forest é um conjunto de árvores de decisões com algumas diferenças, sendo principalmente a utilização de aleatoriedade invés de cálculos de ganho de informação e gini index, outra diferença é a presença de subconjunto [ara evitar o overfitting.
Nesse algoritmo os hiperparâmetros são muito importantes podendo aumentar o poder preditivo do modelo e aumentar a velocidade do modelo, com a utilização do sklean é dos hiperparâmetros podemos controlar o número de árvores construídas, o número máximo de características a serem utilizadas, o número mínimo de folhas que devem existir em uma dada árvore, quantidade de processadores o algoritmo pode utilizar, torna o resultado do modelo replicável e validação cruzada para floresta aleatória.
Um dos problemas recorrentes na utilização de overfitting por causa de árvores suficiente na floresta, o classificador não irá sobreajustar o modelo. Outro problema e quantidade árvores que deixa o modelo lento, sendo utilizada muitas árvores para melhores acurácia que vai melhorar a prendiçao, na vida real, a utilização desse algoritmo em cenários em tempo real deve ser pensada muito bem e testada sempre.
CNNs ou Redes Neurais Convolucionais, são adotada principalmente reconhecimento de imagem, típico problema de classificação e surgirão a partir do estudo do neurônios de Hubel e Wiesel em 1962, partindo do conceito de filtrar linhas, curvas e bordas e em cada camada acrescida transformar essa filtragem em uma imagem mais complexa.
O primeiro passo para a sua utilização para classificação de imagens é passar essas imagens para o formato RGB, permitido interpretar las como matrizes tridimensionais geralmente utilizando de três canais com os valores de cada pixel.
O próximo passo é a utilização de convolução ou filtros ou kernel, dependendo da literatura, para determinar os traços mais marcantes de cada imagem, a profundidade de saída escolhida de cada camada determina a quantidade de filtros adotados, quanto maior, maior será os detalhes que serão analisados.
Outro recurso que podemos utilizar nas CNNs são as funções de ativação que podem interferir muito na acurácia do modelo, além de trazerem a não linearidade ao modelo para possibilitar um melhor aprendizado a rede neural.
A camada de polling é utilizada para simplificar a informação da camada anterior, um método muito utilizado para definir essa camada é o maxpooling, onde acontece a sumarização de dados e se evitar o overfitting.
E finalmente temos a camada ¨Fully connected¨ onde sua entrada é a saída da camada anterior e sua saída são os neurônios que serão utilizados na classificação da imagens.
Referências:
Obrigado por sua leitura! :)