Skip to content

Commit fa8a7c0

Browse files
committed
Add descriptions to boosting and gradient descent
Signed-off-by: Marcelo Ferreira <[email protected]>
1 parent 141bec4 commit fa8a7c0

File tree

1 file changed

+68
-16
lines changed

1 file changed

+68
-16
lines changed

product-solution.md

+68-16
Original file line numberDiff line numberDiff line change
@@ -325,25 +325,74 @@ def dummies(X_train, y_train, X_test, y_test):
325325
dummies(X_train, y_train, X_test, y_test)
326326
```
327327

328-
# Gradient Descent
328+
# XGBoost
329+
330+
XGBoost é um algoritmo que implementa
331+
*gradient boosting* de
332+
Decision Trees de
333+
forma rápida e com alta performance.
334+
**Gradient Boosting** é
335+
uma técnica de *machine learning* para problemas de
336+
regressão e classificação
337+
que produz um modelo de predição na forma de
338+
*ensemble* de modelos de predições
339+
fracas, normalmente árvores de decisões.
340+
Boosting é um processo sequencial, mas
341+
como o `XGBoost` consegue implementá-lo
342+
de forma paralela?
343+
Sabemos que cada
344+
árvore pode ser produzida apenas depois que
345+
produzida a árvore anterior, mas o
346+
processo de criar as árvores pode ser
347+
paralelizado utilizando todos os núcleos a
348+
disposição.
349+
350+
## Boosting
351+
352+
A definição de boosting é que até mesmo algorítmos
353+
fracos de machine larning podem se tornar potentes [(KEARNS,
354+
1988)](https://www.cis.upenn.edu/~mkearns/papers/boostnote.pdf).
355+
356+
Um algorítmo
357+
fraco de aprendizagem pode ser definido como modelos ou regras que não possuem
358+
boa acurácia ou aparentam ser ineficientes, tais como modelos *dummy*: mais
359+
frequente, estratificado, randômico. Já algorítmos de aprendizagem forte, são
360+
aqueles que apresentam uma boa taxa de acertos [(FREUND e
361+
SCHAPIRE)](http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=4BF3325D8222B3234BB95971FCAD8759?doi=10.1.1.56.9855&rep=rep1&type=pdf).
362+
**Exemplo - Corrida de cavalos**[(FREUND e
363+
SCHAPIRE)](http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=4BF3325D8222B3234BB95971FCAD8759?doi=10.1.1.56.9855&rep=rep1&type=pdf):
364+
Como determinar em qual cavalor apostar, considerando um conjunto de dados
365+
disponíveis tais como informações do cavalo, do dono, das corridas anteriores e
366+
etc. Ao perguntar para especialistas cada um deles irá falar coisas distintas e
367+
ainda assim muito imprecisas (modelos fracos)! Mas seria possível utilizar as
368+
regras de aposta de cada especialista e gerar uma única regra que seja capaz de
369+
predizer o cavalor vencedor da corrida utilizando boost
370+
371+
## Gradient
372+
descent
329373

330374
![](http://matthewemery.ca/images/gradient_descent.gif)
331375

332-
## XGBoost
376+
Um algorítmo
377+
de gradient descendent é uma forma de minimizar o valor de uma função
378+
interativamente, na qual são dados um conjunto de parametros e ela busca a
379+
partir daí o menor valor[(TOUSSAINT, 2012)](https://ipvs.informatik.uni-
380+
stuttgart.de/mlr/marc/notes/gradientDescent.pdf). De forma que:
381+
\begin{equation}
382+
y_{min} = F(x_1) > F(x_2) > F(x_3) > ... > F(x_n),\ onde:\
383+
F(x_n) < precisão
384+
\end{equation}
333385

334-
### *eXtreme Gradient Boost*
386+
Um pseudo algorítmo que pode ser proposto para
387+
um problema de gradient é:
335388

336-
XGBoost é um algoritmo que implementa
337-
*gradient boosting* de Decision Trees de
338-
forma rápida e com alta performance.
339-
**Gradient Boosting** é uma técnica de *machine learning* para problemas de
340-
regressão e classificação que produz um modelo de predição na forma de
341-
*ensemble* de modelos de predições fracas, normalmente árvores de decisões.
342-
Boosting é um processo sequencial, mas como o `XGBoost` consegue implementá-lo
343-
de forma paralela?
344-
Sabemos que cada árvore pode ser produzida apenas depois que
345-
produzida a árvore anterior, mas o processo de criar as árvores pode ser
346-
paralelizado utilizando todos os núcleos a disposição.
389+
x = inital_value
390+
step = 0.01
391+
repita
392+
xprev=x
393+
x = xperv - step * F(xprev)
394+
enquanto abs(x - xprev) >
395+
precisao
347396

348397
```python
349398
%%time
@@ -361,15 +410,18 @@ def xgboost(X_train, y_train, X_test, y_test):
361410
nthread=8,
362411
scale_pos_weight=1
363412
)
364-
413+
print('XGBoost fit')
365414
xgbclf.fit(X_train, y_train)
415+
print('XGBoost train score')
366416
train_score = xgbclf.score(X_train, y_train)
417+
print('XGBoost test score')
367418
y_pred = xgbclf.predict(X_test)
368419

420+
print('XGBoost confusion matrix')
369421
cm = confusion_matrix(y_test, y_pred)
370422

371423
plot_confusion_matrix(cm, classes=xgbclf)
372-
424+
print('XGBoost cross validation')
373425
accuracies = cross_val_score(estimator=xgbclf, X=X_train, y=y_train, cv=10)
374426
print('Resultado na base de treino %.2f' % train_score)
375427
print('Resultado Médio na base de teste: %.2f' % accuracies.mean())

0 commit comments

Comments
 (0)