@@ -79,20 +79,26 @@ val](crossval.png)
79
79
80
80
# Tratamento
81
81
82
- Será realizada as etapas de feature selection e feature
82
+ Será realizada as
83
+ etapas de feature selection e feature
83
84
engineering.
84
85
Correlação entre features
85
-
86
86
Será realizada uma análise da correlação
87
- entre as features. Visto que há um total de 93 colunas que não foi
88
- disponibilizada nenhuma informação sobre o que são elas e o que representam e
89
- portanto, esta análize ajudará a identificar as relações entre as features.
87
+ entre as features. Visto que há um
88
+ total de 93 colunas que não foi
89
+ disponibilizada nenhuma informação sobre o que
90
+ são elas e o que representam e
91
+ portanto, esta análize ajudará a identificar as
92
+ relações entre as features.
90
93
91
94
## Correlação
92
95
93
- A correlação entre duas variáveis é quando existe algum laço
94
- matemático que envolve o valor de duas variáveis de alguma forma [ ESTATÍSTICA II
95
- - [ CORRELAÇÃO E REGRESSÃO] ( http://www.ctec.ufal.br/professor/mgn/05CorrelacaoERegressao.pdf ) .
96
+ A correlação entre duas variáveis é
97
+ quando existe algum laço
98
+ matemático que envolve o valor de duas variáveis de
99
+ alguma forma [ ESTATÍSTICA II
100
+ - [ CORRELAÇÃO E
101
+ REGRESSÃO] ( http://www.ctec.ufal.br/professor/mgn/05CorrelacaoERegressao.pdf ) .
96
102
Uma das maneiras mais simples de se identificar a correlação entre duas
97
103
variáveis é plotando-as em um gráfico, para tentar identificar alguma relação
98
104
entre elas, entretanto, como são um total de 93 features, dificulta visualizar a
@@ -135,7 +141,8 @@ correlation
135
141
A partir da matriz de correlação assima, buscamos agora
136
142
identificar quais das colunas possuem uma forte correlação de acordo com a
137
143
tabela a seguir.
138
- Como sugerido por [ Makuka,2012] ( https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3576830/ )
144
+ Como sugerido por
145
+ [ Makuka,2012] ( https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3576830/ )
139
146
<center >Interpretação do resultado de correlação </center >
140
147
141
148
|Valor
@@ -235,7 +242,8 @@ amostras. Basicamente elabora-se uma matriz em que nas colunas e linhas são as
235
242
possíveis classes. Cada célula traz a contagem de amostras que eram da Label X
236
243
(coluna) e foram classificadas na Label Y (linha). Dessa forma, na matriz, a
237
244
diagonal principal trará os acertos do classificador
238
- [ Microsoft] ( https://docs.microsoft.com/pt-br/sql/analysis-services/data-mining/classification-matrix-analysis-services-data-mining ) . Veja o exemplo a
245
+ [ Microsoft] (https://docs.microsoft.com/pt-br/sql/analysis-services/data-
246
+ mining/classification-matrix-analysis-services-data-mining). Veja o exemplo a
239
247
seguir:
240
248
241
249
| Classificador\Real| Label 1| Label 2| Label 3|
@@ -245,7 +253,9 @@ seguir:
245
253
| ** Label 3** | 0| 0| 3|
246
254
247
255
Plot para matriz de confusão encontrado em
248
- [ Scikit] ( http://scikit-learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html#sphx-glr-auto-examples-model-selection-plot-confusion-matrix-py ) e adaptado para o
256
+ [ Scikit] (http://scikit-
257
+ learn.org/stable/auto_examples/model_selection/plot_confusion_matrix.html#sphx-
258
+ glr-auto-examples-model-selection-plot-confusion-matrix-py) e adaptado para o
249
259
problema
250
260
251
261
``` python
@@ -299,7 +309,8 @@ com outros modelos.
299
309
300
310
* ** Stratified** : realiza predições baseadas na
301
311
distribuição das classes da base de treino. (Ex.: 10% A, 20% B, 50% C, 20% D)
302
- * ** Most Frequent** : sempre prediz com a classe mais frequente na base de treino
312
+ *
313
+ ** Most Frequent** : sempre prediz com a classe mais frequente na base de treino
303
314
304
315
``` python
305
316
from sklearn.dummy import DummyClassifier
@@ -379,20 +390,23 @@ interativamente, na qual são dados um conjunto de parametros e ela busca a
379
390
partir daí o menor valor[ (TOUSSAINT, 2012)] (https://ipvs.informatik.uni-
380
391
stuttgart.de/mlr/marc/notes/gradientDescent.pdf). De forma que:
381
392
\begin{equation}
382
- y_ {min} = F(x_1) > F(x_2) > F(x_3) > ... > F(x_n),\ onde:\
393
+ y_ {min} = F(x_1) > F(x_2) > F(x_3) > ... > F(x_n),\ onde:\
383
394
F(x_n) < precisão
384
395
\end{equation}
385
396
386
397
Um pseudo algorítmo que pode ser proposto para
387
- um problema de gradient é:
398
+ um problema de
399
+ gradient é:
388
400
389
401
x = inital_value
390
402
step = 0.01
403
+
391
404
repita
392
405
xprev=x
393
- x = xperv - step * F(xprev)
394
- enquanto abs(x - xprev) >
395
- precisao
406
+ x = xperv - step * F(xprev)
407
+ enquanto abs(x - xprev)
408
+ >
409
+ precisao
396
410
397
411
``` python
398
412
%% time
@@ -420,9 +434,9 @@ def xgboost(X_train, y_train, X_test, y_test):
420
434
print (' XGBoost confusion matrix' )
421
435
cm = confusion_matrix(y_test, y_pred)
422
436
423
- plot_confusion_matrix(cm, classes = xgbclf)
424
437
print (' XGBoost cross validation' )
425
438
accuracies = cross_val_score(estimator = xgbclf, X = X_train, y = y_train, cv = 10 )
439
+ plot_confusion_matrix(cm, classes = xgbclf)
426
440
print (' Resultado na base de treino %.2f ' % train_score)
427
441
print (' Resultado Médio na base de teste: %.2f ' % accuracies.mean())
428
442
print (' Desvio padrão: %.4f ' % accuracies.std())
@@ -497,7 +511,93 @@ search_params(DecisionTreeClassifier, dt_params)
497
511
498
512
## Decision Tree
499
513
500
- ### Adicionar descrição de como funciona!!!!
514
+ Os dados são separados recursivamente formando uma árvore de
515
+ decisão baseada nas
516
+ features.Pode-se definir uma árvore de decisão, conforme diz
517
+ (MITCHELL, 1997),
518
+ como um método para aproximar valores discretos em funções,
519
+ onde a função de
520
+ aprendizagem é representada por uma árvore de decisão. Tais
521
+ árvores aprendidas
522
+ podem ser representadas - a nível de código fonte - como
523
+ conjuntos de estruturas
524
+ condicionais "se-então" para melhorar a leitura e
525
+ entendimento humano, de acordo
526
+ com (MITCHELL, 1997).
527
+
528
+ Estes algoritmos são muito
529
+ utilizados, segundo (MITCHELL, 1997), na área de
530
+ algoritmos de inferência
531
+ indutiva, e dentre as aplicações de tais algoritmos,
532
+ tem-se máquinas que
533
+ aprenderam a diagnosticar casos da medicina, ou ainda, para
534
+ avaliar o risco de
535
+ inadimplência dos requerentes de créditos em bancos.
536
+
537
+ Para visualizar de forma
538
+ mais fácil a representação de uma árvore, a figura 3,
539
+ representada abaixo,
540
+ caracteriza uma árvore de decisão em que a máquina deve
541
+ decidir com base nas
542
+ variáveis do tempo (ensolarado, nublado ou chuvoso), se
543
+ pode ou não ocorrer uma
544
+ partida de tênis. Além das variáveis de tempo, tem-se
545
+ outras variáveis que podem
546
+ ser levadas em conta dependendo da condição climática local, como umidade (alta
547
+ ou normal) e o vento (forte ou fraco).
548
+
549
+ ![ Workflow Random
550
+ forest] ( arvore_jogo_tenis.png )
551
+
552
+ O algoritmo de árvores de decisão classifica
553
+ instâncias ou dados, ordenando-os
554
+ apartir da raiz da árvore, para os nós de suas
555
+ folhas. Cada nó da árvore
556
+ exemplifica uma pergunta (teste) de alguns - atributos
557
+ - de instância, e cada
558
+ ramo descendente de um nó corresponde para um dos
559
+ possíveis valores de tal
560
+ atributo (MITCHELL, 1997). Vale a pena citar: O
561
+ algoritmo ID3 (QUINLAN, 1986)
562
+ aprende sobre árvores de decisão construindo-as de
563
+ cima para baixo (nó raiz para
564
+ as ramificações) tentando buscar respostas para a
565
+ pergunta "Qual atributo
566
+ devemos testar na raiz da árvore?", sendo assim, cada
567
+ atributo instanciado é
568
+ calculado por meio de testes estatísticos, para
569
+ determinar o quão bem (ótimo)
570
+ tal atributo, isolado dos demais, classifica os
571
+ exemplos de treinamento.
572
+
573
+ Quando o melhor atributo é selecionado e utilizado
574
+ como teste no nó principal da
575
+ árvore, cria-se um descendente para cada valor
576
+ admissível deste atributo e os
577
+ exemplos de treinamento são sorteados para o nó
578
+ filho mais apropriado. O
579
+ processo inteiro é então repetido utilizando
580
+ treinamentos associados a cada
581
+ descendente para selecionar o melhor atributo
582
+ para testar na árvore. Quando
583
+ realizado dessa forma, o algoritmo tenta de forma
584
+ “gulosa“3.4. O modelo 49
585
+ Figura 3 – Exemplo de árvore de decisão, sobre
586
+ condições para realização de um
587
+ jogo de
588
+ tênis.
589
+
590
+ buscar uma árvore de decisão
591
+ aceitável, onde o algoritmo nunca retrocede em
592
+ reavaliar escolhas anteriores.
593
+ Levando em consideração todas essas informações sobre Árvores de decisões
594
+ podemos dizer que no contexto de predição da classificação de risto, as DTs são
595
+ as mais adequadas. O que as tornam mais apropriadas ainda é a possibilidade de
596
+ visualizar a árvore de decisão montada, o que reflete nas decisões que ela toma.
597
+ Porém as Dts existem
598
+ a muito tempo e ao longo do tempo foram criados
599
+ melhoramentos para as árvores
600
+ como as Random Forests.
501
601
502
602
``` python
503
603
from sklearn.model_selection import cross_val_score
@@ -521,7 +621,8 @@ no método de montagem random forest. Este modelo de predição possui um proble
521
621
de viés quando uma das classes na base de treino é mais predominante do que
522
622
outra, ou seja, a distribuição das classes na base de treino devem ser
523
623
semelhantes para evitar problemas de
524
- [ overfiting] ( http://docs.aws.amazon.com/machine-learning/latest/dg/model-fit-underfitting-vs-overfitting.html ) .
624
+ [ overfiting] (http://docs.aws.amazon.com/machine-learning/latest/dg/model-fit-
625
+ underfitting-vs-overfitting.html).
525
626
526
627
Para tanto, precisa-se descobrir qual a
527
628
contagem de cada classe disponível na base de treino, montaremos um histograma
@@ -583,18 +684,12 @@ com mais votos ganha e o resultado é
583
684
dado.
584
685
585
686
![ Workflow Randomforest] ( forest.jpg )
586
-
587
687
De acordo com breiman, 2001, as RFs corrigem a maior parte
588
688
dos problemas de
589
689
Overfitting que as Árvores de decisão apresentam. Tudo depende
590
690
do quanto as DT
591
691
contidas dentro da Random Forest. Isto é, o quanto elas
592
692
representam os dados.
593
-
594
- Referências:
595
- [ BREIMAN] ( https://www.stat.berkeley.edu/users/breiman/randomforest2001.pdf ) ,
596
- Leo. Random forests. Machine learning, v. 45, n. 1, p. 5-32, 2001.
597
-
598
693
## Utilizando o algoritmo
599
694
600
695
``` python
@@ -620,20 +715,26 @@ maior é a importância da feature.
620
715
O método utilizado para gerar a
621
716
importância das features no modelo é a Decrease Mean Importance, que utiliza em
622
717
seus cálculos um indicador de impureza no sistema. No caso do random forest
623
- implementado [ (LOUPPE et al.,2013)] ( https://pdfs.semanticscholar.org/2635/19c5a43fbf981da5ba873062219c50fdf56d.pdf ) ,
718
+ implementado [ (LOUPPE et
719
+ al.,2013)] ( https://pdfs.semanticscholar.org/2635/19c5a43fbf981da5ba873062219c50fdf56d.pdf ) ,
624
720
este indicador é o Gini Impurity que pode ser entendido como uma redução da
625
721
probabilidade de errar a classificação de uma categoria dentro de um algorítmo
626
- de árvore [ (Sebastian Raschaka)] ( https://sebastianraschka.com/faq/docs/decision-tree-binary.html ) .
722
+ de árvore [ (Sebastian Raschaka)] (https://sebastianraschka.com/faq/docs/decision-
723
+ tree-binary.html).
627
724
628
725
#### O indice
629
726
O indice de Gini pode ser calculado utilizando
630
- a seguinte fórmula[ (TEKIMONO,2009)] ( http://people.revoledu.com/kardi/tutorial/DecisionTree/how-to-measure-impurity.htm ) :
727
+ a seguinte
728
+ fórmula[ (TEKIMONO,2009)] (http://people.revoledu.com/kardi/tutorial/DecisionTree/how-
729
+ to-measure-impurity.htm):
631
730
632
731
\begin{equation}
633
732
Gini = 1- \sum_ {i=1} p_i^2
634
733
\end{equation}
635
- Em que $p_i$ é a probabilidade da ocorrência de uma determinada classe,
636
- desconsiderando os atributos. Ou seja $N_i$ é o número de ocorrências da classe
734
+ Em que $p_i$ é a probabilidade da ocorrência de uma determinada
735
+ classe,
736
+ desconsiderando os atributos. Ou seja $N_i$ é o número de ocorrências da
737
+ classe
637
738
i e N é o total de elementos das classes:
638
739
639
740
\begin{equation}
@@ -648,7 +749,8 @@ Regression Trees (CART), utiliza-se o indice de Gini modificado, isto é,
648
749
calcula-se ainda as probabilidades em $p_i$, mas agora utiliza-se do indice de
649
750
Gini nos filhos da esquerda $t_l$ e direita $t_r$. Recalcula-se as
650
751
probabilidades para ambos os nós também em $p_l$ e $p_r$ utilizando como base as
651
- possíveis classes reduzidas a $N_t$ [ (LOUPPE et al.,2013)] ( https://pdfs.semanticscholar.org/2635/19c5a43fbf981da5ba873062219c50fdf56d.pdf ) .
752
+ possíveis classes reduzidas a $N_t$ [ (LOUPPE et
753
+ al.,2013)] ( https://pdfs.semanticscholar.org/2635/19c5a43fbf981da5ba873062219c50fdf56d.pdf ) .
652
754
\begin{equation}
653
755
i(s, t) = Gini(t) - p_l Gini(t_l) - p_r Gini(t_r) \\
654
756
p(t) =
@@ -706,7 +808,8 @@ print ("{} de precisão".format(rfscores.mean() * 100))
706
808
707
809
## ExtraTrees
708
810
709
- O [ Scikit Learn] ( http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html )
811
+ O [ Scikit Learn] (http://scikit-
812
+ learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html)
710
813
nos apresenta um tipo diferente de random forest que pode apresentar resultados
711
814
melhores que o [ RandomForestClassifier] (http://scikit-
712
815
learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html).
@@ -774,12 +877,20 @@ print('Score: ', mlp.score(X_test, y_test))
774
877
# Referências Bibliográficas
775
878
http://scikit-
776
879
learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier
777
-
778
880
https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-
779
881
xgboost-with-codes-python/
882
+ [ MITCHELL] ( https://dl.acm.org/citation.cfm?id=505283 ) , Tom M. Machine learning.
883
+ 1997 . Burr Ridge, IL: McGraw Hill, v. 45, n. 37, p. 870-877, 1997.
884
+ [ QUINLAN] ( http://hunch.net/~coms-4771/quinlan.pdf ) , J.. Ross . Induction of
885
+ decision trees. Machine learning, v. 1, n. 1, p. 81-106, 1986.
886
+ [ BREIMAN] ( https://www.stat.berkeley.edu/users/breiman/randomforest2001.pdf ) ,
887
+ Leo. Random forests. Machine learning, v. 45, n. 1, p. 5-32, 2001.
780
888
781
-
782
- BABATUNDE, Oluleye, ARMSTRONG, Leisa, DIEPEVEEN,
783
- Dean e LENG, J. Comparative analysis of Genetic Algorithm and Particle Swam
784
- Optimization: An application in precision agriculture. 2015. ** Asian Journal of
785
- Computer and Information Systems** . 3. 1-12.
889
+ BABATUNDE,
890
+ Oluleye, ARMSTRONG, Leisa, DIEPEVEEN,
891
+ Dean e LENG, J. Comparative analysis of
892
+ Genetic Algorithm and Particle Swam
893
+ Optimization: An application in precision
894
+ agriculture. 2015. ** Asian Journal of
895
+ Computer and Information Systems** . 3.
896
+ 1-12.
0 commit comments