Skip to content

Commit cdda072

Browse files
committed
Add more descriptions about the problems and models
Signed-off-by: Marcelo Ferreira <[email protected]>
1 parent 60f293d commit cdda072

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

crossval.png

80.3 KB
Loading

product-solution.md

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
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+
134
```python
235
# Configure to show multiples outputs from a single cell
336
from IPython.core.interactiveshell import InteractiveShell
@@ -24,6 +57,26 @@ df_train.head() # The train dataset
2457
df_test.head() # It hasn't target
2558
```
2659

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+
2780
# Tratamento
2881

2982
Será realizada as etapas de feature selection e feature
@@ -137,7 +190,7 @@ features, entretanto, há 10 colunas que estão fortemente correlacionadas. Pore
137190
buscamos uma correlação fortíssima para não remover features com comportamentos
138191
diferentes.
139192

140-
## Train/Test split
193+
# Train/Test split
141194

142195
Utilizaremos 80% da base de treino para
143196
efetivamente treinar o modelo e 20% para
@@ -619,14 +672,24 @@ O [Scikit Learn](http://scikit-
619672
learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html)
620673
nos apresenta um tipo diferente de random forest que pode apresentar resultados
621674
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).
623685

624686
```python
625687
from sklearn.ensemble import ExtraTreesClassifier
626688

627689
etc = ExtraTreesClassifier();
628690
etscores = cross_val_score(rfclf, X_train, y_train)
629691
extra_tree_fit = etc.fit(X_train, y_train)
692+
630693
print ("{} de precisão".format((etscores.mean() * 100)))
631694
print(extra_tree_fit.score(X_train, y_train))
632695
```
@@ -655,3 +718,9 @@ http://scikit-
655718
learn.org/stable/modules/generated/sklearn.dummy.DummyClassifier.html#sklearn.dummy.DummyClassifier
656719
https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-
657720
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

Comments
 (0)