1
+ # Otto Group Product Classification
2
+
3
+ Este notebook é uma proposta de solução
4
+ utilizando técnicas de data-mining e machine learn para o problema de
5
+ classificação de produtos da companhia Otto disponíveis em: [ Kaggle (challenge):
6
+ Otto group product classification] (https://www.kaggle.com/c/otto-group-product-
7
+ classification-challenge)
8
+
9
+ ## Contexto
10
+
11
+ Retirado da descrição do problema, temos
12
+ que o grupo Otto é uma das maiores companhias de * e-commerce* do mundo, e possui
13
+ s filiais em mais de 20 paises. Vendem milhões de produtos ao redor do mundo
14
+ todos os dias com centezas de produtos sendo adicionados constantemente.
15
+
16
+ A
17
+ análise de consistência da performance dos produtos deles é crucial, entretando,
18
+ com a infraestrutura de escala global que possuem, produtos identicos são
19
+ classifidados de maneira diferenciada. Entretanto a análise da qualidade dos
20
+ produtos depende fortemente da acurácia na habilidade de agrupar produtos
21
+ semelhantes. Quanto melhor for a classificação, mais intuitivamente eles ter um
22
+ maior alcance com seus produtos.
23
+
24
+ ## Dados
25
+
26
+ Foram disponibilizados 2 bases de
27
+ dados separadas. A primeira delas contém 61878 registros com rótulo da
28
+ classificação do produto e 144368 de registros sem o rótulo.
29
+
30
+ São um total de 93
31
+ características na qual não há a descrição do que significa cada uma delas.
32
+ Sendo que não há dados faltando. O range dos dados vão de 0 a 352.
33
+
1
34
``` python
2
35
# Configure to show multiples outputs from a single cell
3
36
from IPython.core.interactiveshell import InteractiveShell
@@ -24,6 +57,26 @@ df_train.head() # The train dataset
24
57
df_test.head() # It hasn't target
25
58
```
26
59
60
+ # Cross Validation
61
+
62
+ A abordagem para a Validação Cruzada é a utilização do
63
+ método de k-partições. Neste método, o conjunto de dados é dividido em k
64
+ partições [ (WITTEN e FRANK,
65
+ 2000)] ( ftp://ftp.ingv.it/pub/manuela.sbarra/Data%20Mining%20Practical%20Machine%20Learning%20Tools%20and%20Techniques%20-%20WEKA.pdf ) ,
66
+ testes extensivos em diversas bases de dados, utilizando diversos algoritmos,
67
+ identificaram o valor de k para identificar a melhor margem de erro como sendo
68
+ 10, também de forma randômica. Então, o conjunto de dados de treinamento é
69
+ criado com k – 1 partições, e apenas uma partição é utilizada para testes. São
70
+ realizadas k iterações, aonde cada partição é utilizada uma vez para testes
71
+ enquanto as outras são utilizadas para treinamento. Após todas as partições
72
+ terem sido utilizadas para teste, a margem de erro de cada iteração é somada e a
73
+ média das k iterações se torna a margem de erro do modelo.
74
+
75
+ ![ cross
76
+ val] ( crossval.png )
77
+ <center >Representação do método Cross Validation com k = 10.
78
+ ** Fonte** : BABATUNDE et al., 2015.</center >
79
+
27
80
# Tratamento
28
81
29
82
Será realizada as etapas de feature selection e feature
@@ -137,7 +190,7 @@ features, entretanto, há 10 colunas que estão fortemente correlacionadas. Pore
137
190
buscamos uma correlação fortíssima para não remover features com comportamentos
138
191
diferentes.
139
192
140
- ## Train/Test split
193
+ # Train/Test split
141
194
142
195
Utilizaremos 80% da base de treino para
143
196
efetivamente treinar o modelo e 20% para
@@ -619,14 +672,24 @@ O [Scikit Learn](http://scikit-
619
672
learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html)
620
673
nos apresenta um tipo diferente de random forest que pode apresentar resultados
621
674
melhores que o [ RandomForestClassifier] (http://scikit-
622
- learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html)
675
+ learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html).
676
+ Assim como afirma que as extra tree devem ser utilizadas apenas em algorítmos de
677
+ montagem Como o Extra Trees Classifier e Regressor.
678
+
679
+ O que diferencia uma extra
680
+ tree de uma decision tree é a forma que é feita a construção da árvore. Enquanto
681
+ uma decision tree utiliza cópia dos dados e sub amostras para realizar as
682
+ divisões de cada nó. Uma extra tree utiliza um ponto de divisão randomico e
683
+ utiliza toda a base de treino para crescer a árvore [ (GEURTS, ERNST e WEHENKEL,
684
+ 2005)] ( http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.65.7485&rep=rep1&type=pdf ) .
623
685
624
686
``` python
625
687
from sklearn.ensemble import ExtraTreesClassifier
626
688
627
689
etc = ExtraTreesClassifier();
628
690
etscores = cross_val_score(rfclf, X_train, y_train)
629
691
extra_tree_fit = etc.fit(X_train, y_train)
692
+
630
693
print (" {} de precisão" .format((etscores.mean() * 100 )))
631
694
print (extra_tree_fit.score(X_train, y_train))
632
695
```
@@ -655,3 +718,9 @@ http://scikit-
655
718
learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier
656
719
https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-
657
720
xgboost-with-codes-python/
721
+
722
+
723
+ BABATUNDE, Oluleye, ARMSTRONG, Leisa, DIEPEVEEN,
724
+ Dean e LENG, J. Comparative analysis of Genetic Algorithm and Particle Swam
725
+ Optimization: An application in precision agriculture. 2015. ** Asian Journal of
726
+ Computer and Information Systems** . 3. 1-12.
0 commit comments