@@ -325,25 +325,74 @@ def dummies(X_train, y_train, X_test, y_test):
325
325
dummies(X_train, y_train, X_test, y_test)
326
326
```
327
327
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
329
373
330
374
![ ] ( http://matthewemery.ca/images/gradient_descent.gif )
331
375
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}
333
385
334
- ### * eXtreme Gradient Boost*
386
+ Um pseudo algorítmo que pode ser proposto para
387
+ um problema de gradient é:
335
388
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
347
396
348
397
``` python
349
398
%% time
@@ -361,15 +410,18 @@ def xgboost(X_train, y_train, X_test, y_test):
361
410
nthread = 8 ,
362
411
scale_pos_weight = 1
363
412
)
364
-
413
+ print ( ' XGBoost fit ' )
365
414
xgbclf.fit(X_train, y_train)
415
+ print (' XGBoost train score' )
366
416
train_score = xgbclf.score(X_train, y_train)
417
+ print (' XGBoost test score' )
367
418
y_pred = xgbclf.predict(X_test)
368
419
420
+ print (' XGBoost confusion matrix' )
369
421
cm = confusion_matrix(y_test, y_pred)
370
422
371
423
plot_confusion_matrix(cm, classes = xgbclf)
372
-
424
+ print ( ' XGBoost cross validation ' )
373
425
accuracies = cross_val_score(estimator = xgbclf, X = X_train, y = y_train, cv = 10 )
374
426
print (' Resultado na base de treino %.2f ' % train_score)
375
427
print (' Resultado Médio na base de teste: %.2f ' % accuracies.mean())
0 commit comments