Blog.

Big Mart Sales: Report preliminare | Towards Data Science


Autore
Andrea Provino
Data
Tempo di lettura
5 minuti
Categoria
Data Science

big_mart_sales_machine_learning_R_data_science

Il sito Analytics Vidhya propone un’interessante iniziativa: prevedere le vendite di un prodotto svolgendo della data science su un dataset fornito: il Big Mart Sales dataset

Impegnativo.

Non abbiamo idea di come faremo. Ecco la parte divertente. Iniziamo.

Il dataset

Inanzitutto abbiamo due dataset:

  • train: 11 features, 1 label e 8523 data points
  • test: 11 features, 5681 data points

Ovviamente la label del dataset test è da prevedere.

Analizziamo le features del nostro dataset.

Item_Identifier

E’ l’ID unico del prodotto. Contrariamente a quanto mi aspettassi, e qui vediamo perché è fondamentale non dare mai nulla per scontato, ci sono varianti dello stesso ID.

Singifica che il prodotto è venduto in diversi stabilimenti. Lecito.

Attenzione | Da una prima analisi effettuata casualmente su un prodotto noto che il valore “Item_weight” si mantiene inalterato ma è assente in alcuni data points e presente in altri.

Item_Weight

Il peso del prodotto.

Attenzione | Ci sono 1463 prodotti privi del peso (pari al 17% del dataset) NA_values

Però se ho ragione possiamo ridurre drasticamente il numero, dal momeno che almeno una filiale avrà registrato il peso del prodotto.

Item_Fat_Content

E’ una variabile categoriale di tipo “Low Fat” o “Regular” squisitamente estera.

In Italia dove non abbiamo grossi problemi di obesità non è un dato che sentiamo spesso.

Attenzione | Notiamo subito una ridondanza orrenda. LF, low fat e Low Fat sono la stessa cosa, quindi uniremo questi dati.

Item_Visibility

E’ la “percentuale di area che una filiale dedica ad un prodotto calcolata sull’intera area visibile di tutti i prodotti”

Ho perso qualche minuto per capire come usare questo dato, e ho provato rapidamente a vedere se esiste una covariazione tra il prezzo e la visibilità. Ho ottenuto questo:

Questo grafico ci dice molte cose. Inanzitutto c’è overplotting, e questo complica la situazione. In più ci sono parecchi outliers di cui dobbiamo capirne l’originie. Infine, sembra che i data points siano organizzati in quattro cluster di diversa dimensione e che i due centrali siano quelli più densi, che equivale a dire che la maggior parte dei prodotti ha prezzi medio/medio-alti.

Si aprono diverse domande:

Perché ci sono 4 cluster?
Qual è la natura dei cluster?
Da cosa derivano gli outliers?
Perché la maggior parte deigli oggetti ha una ridotta visibilità?
Perché alcuni oggetti sono più visibili di altri? E quali tipi di oggetti sono?

Item_Type

La categoria del prodotto. Ce ne sono ben 16, di cui una è generica: ‘others’.

Item_MRP

Il massimo prezzo al dettaglio del prodotto. Non credo che questo dato sia particolarmente singnificativo preso singolarmente. Studieremo sue covariazioni.

Outlet_Identifier

E’ l’ ID unico della filiale. Abbiamo i dati provenienti da 10 filiali differenti, trattandosi di variabili categoriali visualizziamo su un grafico a barre le vendite per ogni filiale colorando i graifici in base alla superficie della filiale.

Questo grafico ci dice che delle 10 filiali, 2 sembrano avere vendite assai ridotte e non vi è alcuna apparente proporzione diretta tra vendite e dimensioni della filiale. Inoltre c’è una mancanza di dati: tre filiali non hanno la dimensione

Domande:

Perché l’OUT027 vende così tanto?
Come mai l’OUT010 e l’OUT019 vendono così poco?
Perché l’OUT013, nonostante le dimensioni maggiori vende meno dell’OUT035 di dimensioni ridotte?
Quali sono le dimensioni dei tre OUT arancioni?

Ho modificato le label delle barre e subito abbiamo la risposta ad alcune domande:

In ordine:

L’OUT027 è l’unico di Tipo 3, quindi è lecito aspettarsi variazioni ma la domanda resta aperta.
L’OUT010 e l’OUT019 vendono poco perché si tratta di drogherie, e benché l’OUT010 non abbia l’indicatore di dimensione è ragionevole pensare che appartenga alla stessa categoria del’OUT019: small, con vendite basse.
L’OUT013 ha dimensioni maggiori, ma è di tipo 1 e le vendite sono quindi visivamente nella media delle filiali di categoria analoga.
Non siamo ancora in grado di dare una risposta all’ultima domanda.

Queste osservazioni ci fanno capire che esiste una covariazione di maggiore peso tra le vendite e le tipologie di filiale, rispetto alla grandezza delle stesse che invece pare influire di meno.

Outlet_Establishment_Year

L’anno in cui la filiale fu aperta.

Outlet_Size

La grandezza del negozio in termini di superficie. E’ una variabile categoriale che assume solo tre valori: high, medium, small.

Attenzione | Sono presenti alcune filiali prive di questo indicatore

Outlet_Location_Type

Il titpo di città in cui si trova la fiale. E’ una variabile categoriale un po’ ostica, perché suddivide le città con un sistema Tier, che in europa non esiste. I valori ammessi sono solo 3: Tier 1, 2 e 3.

Attenzione | All’interno di città Tier 2 sono presenti solo supermarket type 1

Perché?

Outlet_Type

Tipologia di filiale, sempre di tipo categoriale che ha 4 variazioni: Supermarket di tipo 1, 2, 3 e drogherie.

Item_Outlet_Sales

Vendita di uno specifico prodotto in una particolare filiale.

Nel prossimo post, andremo a condurre l’Exploratory Data Analysis.

Alla prossima!

Un caldo abbraccio, Andrea

Taggeddata sciencedata scientistmachine learning


Ultimi post

Patricia Merkle Trie

Il Practical Algorithm To Retrieve Information Coded In Alphanumeric Merkle Trie, o Patricia Merkle Trie è una struttura dati chiave-valore usatada Ethereum e particolarmente efficiente per il salvataggio e la verifica dell’integrità dell’informazione. In questo post ne studieremo le caratteristiche. Prima di procedere, ci conviene ripassare l’introduzione al Merkle Tree nella quale abbiamo chiarito il […]

Andrea Provino
ethereum-patricia-merkle-tree
Tree Data Structure: cos’è un Merkle Tree

Un Merkle Tree è una struttura dati efficiente per verificare che un dato appartenga a un insieme esteso di elementi. È comunemente impiegato nelle Peer to Peer network in cui la generazione efficiente di prove (proof) contribuisce alla scalabilità della rete. Capire i vantaggi di questa struttura ci tornerà utile nel nostro percorso di esplorazione […]

Andrea Provino
merkle-tree-cover
UTXO: come funziona il modello Unspent Transaction Outputs

Per tenere traccia dei bilanci utente, la blockchain di Bitcoin sfrutta un modello di contabilità definito UTXO o Unspent Transaction Outputs. In questo articolo ne esaminiamo le caratteristiche. Ogni blockchain è dotata di un sistema di contabilità, un meccanismo attraverso cui tenere traccia dei bilanci di ciascun utente. I due grandi modelli di riferimento nel […]

Andrea Provino
bitcoin-utxo
Cos’è Ethereum

Possiamo definire Ethereum come una macchina a stati distribuita che traccia le transizioni di un archivio dati general-purpose (i.e. una memoria in grado di registrare qualsiasi dato esprimibile come coppia di chiave e valore o key-value) all’interno della Ethereum Blockchain. È arrivato il momento di esplorare uno dei progetti tecnologici più innovativi e interessanti degli […]

Andrea Provino
ethereum