dados transbyshop
Dados de entrada
Os dados são obtidos a partir de dois arquivos. Um arquivo csv que contém os
seguintes campos para venda:
Fornecedor
Descrição
Categoria
Data de venda
Quantidade de vendas
Preço de vendas
O outro arquivo csv contém esses mesmos respectivos valores para compras. Com
esses dados, criamos diferentes scripts para manipulá-los e agrupá-los de acordo com as
necessidades. A partir desses dados agrupados eram gerados arquivos csvs que seriam
utilizados como entrada de dados no Octave para geração de features.
As features criadas foram:
Agrupamento de dados
Para realizar os testes no Weka foram definidas diferentes formas de agrupar os
dados para criar um modelo de previsão de vendas mais eficiente. Os principais
agrupamentos foram os de categorias por fornecedor e os de categorias com maior
faturamento. Neste último agrupamento foram escolhidas as seguintes categorias que
totalizam cerca de 90% do faturamento:
Calça Feminina
Short Feminino
Bermuda Feminina
Blusa Feminina
Bermuda Masculina
Vestido Feminina
Calça Masculina
Camisa Masculina
Saia Feminina
Conjunto Infantil Feminino
Conjunto Infantil Masculino
Criação do modelo
Para realizar os testes no Weka os arquivos arff eram gerados a partir de um script
que convertia os arquivos csvs com as features criadas no octave. Pra cada agrupamento
era gerado um arquivo com os dados de determinada categoria e um arquivo que
englobava todas as instâncias. Isso foi feito para verificar qual seria a melhor estretégia
para construir um modelo de previsão mais eficiente: um modelo geral treinado com todas
as instâncias, um modelo específico por categoria ou até mesmo utilizar ambos. Além
disso, os algoritmos testados serão os de Regressão Linear, M5P, Random Forest e
SMOReg.
As features foram escolhidas através de um algoritmo de seleção de atributos do
Weka, o Correlation-based Feature Subset Selection for Machine Learning, juntamente
com algumas outras features que nós decidimos inserir devido a análise dos dados. As
features seleciondas foram:
Vendas dos 18 meses anteriores:
VendaAnterior12
VendaAnterior1
Venda menos venda de seu mês anterior relativo aos 17 meses anteriores da data
atual
SubVendaAnterior11VendaAnterior12
SubVendaAnterior1VendaAnterior2
Venda por venda de seu mês anterior relativo aos 17 meses anteriores da data atual
DivVendaAnterior11VendaAnterior12
DivVendaAnterior1VendaAnterior2
Exponencial da Divisão entre Venda da categoria total de vendas no mesmo mês dos
18 últimos meses
ExpDivVendaAnterior18_TotalVendas18
ExpDivVendaAnterior17_TotalVendas17
ExpDivVendaAnterior16_TotalVendas16
ExpDivVendaAnterior15_TotalVendas15
ExpDivVendaAnterior14_TotalVendas14
ExpDivVendaAnterior13_TotalVendas13
ExpDivVendaAnterior12_TotalVendas12
ExpDivVendaAnterior11_TotalVendas11
ExpDivVendaAnterior10_TotalVendas10
ExpDivVendaAnterior9_TotalVendas9
ExpDivVendaAnterior8_TotalVendas8
ExpDivVendaAnterior7_TotalVendas7
ExpDivVendaAnterior6_TotalVendas6
ExpDivVendaAnterior5_TotalVendas5
ExpDivVendaAnterior4_TotalVendas4
ExpDivVendaAnterior3_TotalVendas3
ExpDivVendaAnterior2_TotalVendas2
ExpDivVendaAnterior1_TotalVendas1
Proporção de ouro elevado a ((Subtração de um mês pelo seu anterior) dividido pelo
total de vendas deste Mês) dos últimos 17 meses
PowRa_Div_SubVendaAnterior17VendaAnterior18_TotalVenda17
PowRa_Div_SubVendaAnterior16VendaAnterior17_TotalVenda16
PowRa_Div_SubVendaAnterior15VendaAnterior16_TotalVenda15
PowRa_Div_SubVendaAnterior14VendaAnterior15_TotalVenda14
PowRa_Div_SubVendaAnterior13VendaAnterior14_TotalVenda13
PowRa_Div_SubVendaAnterior12VendaAnterior13_TotalVenda12
PowRa_Div_SubVendaAnterior11VendaAnterior12_TotalVenda11
PowRa_Div_SubVendaAnterior10VendaAnterior11_TotalVenda10
PowRa_Div_SubVendaAnterior9VendaAnterior10_TotalVenda9
PowRa_Div_SubVendaAnterior8VendaAnterior9_TotalVenda8
PowRa_Div_SubVendaAnterior7VendaAnterior8_TotalVenda7
PowRa_Div_SubVendaAnterior6VendaAnterior7_TotalVenda6
PowRa_Div_SubVendaAnterior5VendaAnterior6_TotalVenda5
PowRa_Div_SubVendaAnterior4VendaAnterior5_TotalVenda4
PowRa_Div_SubVendaAnterior3VendaAnterior4_TotalVenda3
PowRa_Div_SubVendaAnterior2VendaAnterior3_TotalVenda2
PowRa_Div_SubVendaAnterior1VendaAnterior2_TotalVenda1
Além disso, foi feito um modelo geral para as categorias restantes. Foi obtido o
seguinte resultado:
Algoritmo Correlation Mean Root mean Relative Root relative
coefficient absolute squared absolute squared error
error error error
Linear 0,7057 10,2819 39,8592 64,20% 71,93%
Regression
Random 0,7467 7,1756 37,1113 44,80% 66,97%
Forest
M5P 0,6794 7,9266 41,3839 49,49% 74,68%
Avaliação
A partir dos testes realizados, foi feita a análise dos indicadores mostrados pelo
Weka. Pra cada algoritmo, foi levado em consideração o coeficiente de correlação, o erro
médio absoluto, a raiz quadrada do erro médio absoluto, o erro relativo absoluto e a raiz
quadrada do erro relativo absoluto.
O coeficiente de correlação permite verificar o grau de correlação entre os
atributos X e o resultado Y. Seu cálculo basicamente consiste em identificar o ângulo
formado pelos vetores X e Y. Dessa forma, quanto mais próximo de 1, mais forte é a
correlação existente.
O erro médio absoluto é basicamente a média de erros calculada através da
somatória da diferença entre o valor previsto e o real. Já a raiz quadrada do erro médio
absoluto é calculado através do quadrado da diferença entre o previsto e o real divido pela
quantidade de instâncias e tirando sua raiz. Ambos são uma boa maneira de avaliar o
quanto o modelo está errando no geral.
O erro médio relativo e a raiz quadrada do erro médio relativo informa o quanto
os valores previstos diferem dos valores reais.
Conclusão
Com base nos dados coletados nos testes dos algoritmos, o modelo com os
melhores resultados é o do Random Forest treinado com as categorias por fornecedor.