freeCodeCamp/guide/portuguese/machine-learning/random-forest/index.md

3.6 KiB

title localeTitle
Random Forest Floresta Aleatória

Floresta Aleatória

Uma Floresta Aleatória é um grupo de árvores de decisão que toma melhores decisões como um todo do que individualmente.

Problema

As árvores de decisão, por si só, são propensas a overfitting . Isso significa que a árvore se torna tão acostumada com os dados de treinamento que tem dificuldade em tomar decisões para dados que nunca viu antes.

Solução com Florestas Aleatórias

As Florestas Aleatórias pertencem à categoria de algoritmos de aprendizagem de conjuntos . Essa classe de algoritmos usa muitos estimadores para produzir melhores resultados. Isso torna as Florestas Aleatórias geralmente mais precisas do que as árvores de decisão simples. Em Florestas Aleatórias, um grupo de árvores de decisão é criado. Cada árvore é treinada em um subconjunto aleatório dos dados e um subconjunto aleatório dos recursos desses dados . Dessa forma, a possibilidade de os estimadores se acostumarem aos dados (overfitting) é bastante reduzida, pois cada um deles trabalha com os dados e recursos diferentes dos outros. Este método de criar um grupo de estimadores e treiná-los em subconjuntos aleatórios de dados é uma técnica em ensemble learning chamada bagging ou Bootstrap AGGregatING . Para obter a previsão, cada uma das árvores de decisão votará na predição correta (classificação) ou obterá a média de seus resultados (regressão).

Exemplo de Boosting em Python

Nesta competição, recebemos uma lista de eventos de colisão e suas propriedades. Nós iremos então prever se um decaimento τ → 3μ aconteceu nesta colisão. Este τ → 3μ é atualmente assumido pelos cientistas para não acontecer, e o objetivo desta competição foi descobrir τ → 3μ acontecendo com mais freqüência do que os cientistas atualmente podem entender. O desafio aqui foi projetar um problema de aprendizado de máquina para algo que ninguém nunca observou antes. Cientistas do CERN desenvolveram os seguintes projetos para atingir o objetivo. https://www.kaggle.com/c/flavours-of-physics/data

#Data Cleaning 
 import pandas as pd 
 data_test = pd.read_csv("test.csv") 
 data_train = pd.read_csv("training.csv") 
 data_train = data_train.drop('min_ANNmuon',1) 
 data_train = data_train.drop('production',1) 
 data_train = data_train.drop('mass',1) 
 
 #Cleaned data 
 Y = data_train['signal'] 
 X = data_train.drop('signal',1) 
 
 #adaboost 
 from sklearn.ensemble import AdaBoostClassifier 
 from sklearn.tree import DecisionTreeClassifier 
 seed = 9001 #this ones over 9000!!! 
 boosted_tree = AdaBoostClassifier(DecisionTreeClassifier(max_depth=1), algorithm="SAMME", 
                                  n_estimators=50, random_state = seed) 
 model = boosted_tree.fit(X, Y) 
 
 predictions = model.predict(data_test) 
 print(predictions) 
 #Note we can't really validate this data since we don't have an array of "right answers" 
 
 #stochastic gradient boosting 
 from sklearn.ensemble import GradientBoostingClassifier 
 gradient_boosted_tree = GradientBoostingClassifier(n_estimators=50, random_state=seed) 
 model2 = gradient_boosted_tree.fit(X,Y) 
 
 predictions2 = model2.predict(data_test) 
 print(predictions2) 

Mais Informações: