Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add/readme/random forest regressor #43

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
113 changes: 113 additions & 0 deletions Machine Learning/Supervised Learning/Ensemble/Boosting/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<img src="https://i.ibb.co/DtHQ3FG/802x265-Logo-GT.png" width="500">

## Grupo Turing
# Ensemble Learning: Boosting

## Introdução

Boosting é um tipo de ensemble learning que usa do aprendizado sequencial de
modelos de predição mais fracos, corrigindo os erros dos modelos anteriores, para criar um
mais forte. Seu objetivo é reduzir o alto viés que ocorreria no caso de se usar somente os
modelos fracos, para tal, devem ser usados modelos base com baixa variância e alto viés. O modelo razo mais comumente usado é a árvore de decisão.

## Tipos principais e como funcionam

### Adaboost (Adaptative Boosting)
Adaboost é um algoritmo de boosting que usa árvores de decisão de profundidade 1
chamados tocos (stumps) que serve tanto para classificação quanto para regressão. O primeiro
toco aplica uma divisão e o segundo verifica quais datapoints não foram classificados
corretamentes e aumenta o peso deles na função erro aplicada para que sejam mais
importantes nessa divisão, os corretamente classificados tem peso diminuído e o processo
segue em frente até tudo ser corretamente classificado com a junção desses . Os modelos
também têm pesos de acordo com seu sucesso para determinar sua influência no ensemble
final.

Prós:
* Flexível para ser combinado com outros algoritmos de ML
* Único parâmetro a ser melhorado é o T
* Pode ser usado com dados numéricos ou com texto

Cons:
* Modelos muito fracos podem levar a overfitting
* Algoritmo relativamente antigo e existem outras versões melhores atualmente
* Problemas com noise que é consistente

Exemplo de Classificador:

<img src="https://i.imgur.com/qBFAQ3X.jpg" width="500">

Exemplo de Regressor:

<img src="https://imgur.com/M2mM8Bm.jpg" width="500">


### Gradient Boosting
Assim como o Adaboost esse algoritmo também funciona sequencialmente
porém, ao invés de mudar os pesos dos erros, ele aplica o próximo modelo aos erros do
anterior. Ele utiliza então uma técnica conhecida como Gradient Descent nos parâmetros para os sucessivos modelos. Essa técnica, em linhas gerais, visa encontrar o mínimo global da função perda a partir da atualização dos parâmetros do modelo na direção de suas derivadas parciais.

Prós:
* Alta performance
* Facilmente melhorado (tuning)
* Simples de programar

Cons:
* Uma pequena mudança na base de treino gera uma grande mudança no modelo
* Não é fácil entender as predições

Exemplo de Regressor:

<img src="https://imgur.com/ezVlCvA.jpg" width="500">

Exemplo de Classificador:

<img src="https://imgur.com/YkAJJl8.jpg" width="500">

<img src="https://imgur.com/HvaL0Qd.jpg" width="500">


### XGBoost (eXtreme Gradient Boosting)

XGboost é uma versão otimizada de gradient boosting usando diversas técnicas de programação, e.g. paralelismo, matriz esparsas e regularização, para agilizar o processamento e diminuir o overfitting.

Prós:
* Regularização
* Processamento em paralelo
* Pode lidar com valores faltantes
* Usa Cross Validation
* Faz um bom Tree Prunning (desconsiderar árvores com baixa importância no modelo)

Cons:
* Pode ser lento
* Pode criar um modelo complexo

Exemplo de Classificador:

<img src="https://imgur.com/ObJhH2x.jpg" width="500">

Exemplo de Regressor:

<img src="https://imgur.com/vpoMfeI.jpg" width="500">

## **Links Úteis**:

* https://towardsdatascience.com/boosting-algorithms-explained-d38f56ef3f30
* https://medium.com/greyatom/a-quick-guide-to-boosting-in-ml-acf7c1585cb5
* https://stats.stackexchange.com/questions/7813adjusting-sample-weights-in-adaboost
* https://www.edureka.co/blog/boosting-machine-learning/
* https://www.datacamp.com/community/tutorials/adaboost-classifier-python
* https://machinelearningmastery.com/boosting-and-adaboost-for-machine-learning/
* https://hub.packtpub.com/ensemble-methods-optimize-machine-learning-models/
* https://www.educba.com/adaboost-algorithm/



---
**Grupo Turing**
Grupo de Extensão da Universidade de São Paulo (USP)

[Email](mailto:[email protected])
[Facebook](https://www.facebook.com/grupoturing.usp)
[Medium](https://www.medium.com/turing-talks)
[LinkedIn](https://www.linkedin.com/company/grupo-turing)

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<img src="https://i.ibb.co/DtHQ3FG/802x265-Logo-GT.png" width="500">

## Grupo Turing
# Regressão Linear

- **Resumo**:
Algoritmo que busca encontrar a reta que melhor representa a relação entre features e target, de modo a encontrar uma tendência. O algoritmo tem, como objetivo, a predição de valores numéricos. Sua explicação matemática, assim como um exemplo de sua classificação, se encontram em nosso Turing Talk abaixo.



- **Links**:
- [Turing Talks: Modelos de Predição | Regressão Linear](https://medium.com/turing-talks/turing-talks-11-modelo-de-predi%C3%A7%C3%A3o-regress%C3%A3o-linear-7842709a593b
)
- [The Basics: KNN for classification and regression](https://towardsdatascience.com/the-basics-knn-for-classification-and-regression-c1e8a6c955)
- [Linear Regression — Detailed View](https://towardsdatascience.com/linear-regression-detailed-view-ea73175f6e86)
- [Introduction to Machine Learning Algorithms: Linear Regression](https://towardsdatascience.com/introduction-to-machine-learning-algorithms-linear-regression-14c4e325882a)
- [Vídeo explicativo do canal Simplilearn](https://www.youtube.com/watch?v=NUXdtN1W1FE&list=PLEiEAq2VkUULYYgj13YHUWmRePqiu8Ddy&index=14)
- [Vídeo explicativo Andrew Ng (Stanford)](https://www.youtube.com/watch?v=kHwlB_j7Hkc)


---
**Grupo Turing**
Grupo de Extensão da Universidade de São Paulo (USP)

[Email](mailto:[email protected])
[Facebook](https://www.facebook.com/grupoturing.usp)
[Medium](https://www.medium.com/turing-talks)
[LinkedIn](https://www.linkedin.com/company/grupo-turing)

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<img src="https://i.ibb.co/DtHQ3FG/802x265-Logo-GT.png" width="500">

## Grupo Turing
# Random Forest (Regressão)

- **Resumo**:
Este método supervisionado de regressão é baseado no método de bagging (mais detalhado na seção deste assunto em Ensemble Learning), onde decision trees são executadas em paralelo, sem interações entre si. No caso de um modelo de classificação, o resultado final é a moda dos resultados fornecidos pelas árvores, enquanto, para a regressão, o resultado é a média da previsão de cada uma das árvores individuais.


<img src="https://imgur.com/zHAF3YN.png" width="500">

A vantagem de se utilizar uma random forest ao invés de somente uma Decision Tree é que os hiperparâmetros desta garantem que o modelo não depende muito de uma só feature, além de reduzir o overfitting, pois cada uma das decision trees usa uma parte aleatória do dataset, reduzindo a correlação entre elas. Portanto, essas Decisions Trees, ao se unirem, criam um modelo muito mais balanceado.

Veja também:
* [Decision Tree Regressor]()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Links faltando, melhor aprovar quando esses arquivos já estiverem na árvore

* [Random Forest Classifier]()
* [Bagging]()


- **Links Úteis**:
- [Texto do Turing Talks (Classifier)](https://medium.com/turing-talks/turing-talks-18-modelos-de-predi%C3https://www.quora.com/How-does-random-forest-work-for-regression-1%A7%C3%A3o-random-forest-cfc91cd8e524
)
- [Random Forest Regression](https://towardsdatascience.com/random-forest-and-its-implementation-71824ced454f)
- [A Beginners Guide to Random Forest Regression](https://medium.com/datadriveninvestor/random-forest-regression-9871bc9a25eb)
- [How does random forest work for regression?](https://www.quora.com/How-does-random-forest-work-for-regression-1)

---
**Grupo Turing**
Grupo de Extensão da Universidade de São Paulo (USP)

[Email](mailto:[email protected])
[Facebook](https://www.facebook.com/grupoturing.usp)
[Medium](https://www.medium.com/turing-talks)
[LinkedIn](https://www.linkedin.com/company/grupo-turing)

https://www.quora.com/How-does-random-forest-work-for-regression-1