Blog.

Big Mart Sales | Exploratory Data Analysis: Domande


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

plot_OUT027

Dopo aver condotto l‘indagine preliminare sul dataset, che di fatto potremmo assimilare alla prima parte dell’Exploratory data analysis, passiamo ora ad approfondirne ulteriormente la conoscenza tornando ad effetuare su di esso l’EDA.

Obietttivo

Il nostro obiettivo è quello di prevedere il valore corrispondente alle vendite relative ad un singolo prodotto.

Struttura del dataset

Per prima cosa diamo un’occhiata alla struttura del dataset.

Il dataset di training presenta, come quello di test, 11 features ma ha anche una label. Le varaibili indipendenti sono state analizzate nel precedente post, quindi procediamo con la pulizia dei dati.

Fusione test e train

Dal momento che il nostro intento è quello di prevedere una variabile dipendente, basandoci su valori e relazioni tra variabili indipendenti, ogni modifica che apporteremo al dataset di train dovrà essere ripettuta anche su quello di test.

Per ridurre il lavoro e velocizzare le operazioni, uniamo i due dataset.

Pulizia dei dati: fat_content e visibility


Il report preliminare ha messo in evidenza una ridodanza per la feature “Item_Fat_content”: è arrivato il momento di corregerla.

Infine, ci occupiamo della feature visibility sostituendo il valore zero con la media dei valori. C’è overplotting e ci sono outliers: dobbiamo capire come gestirli.

Esplorazione variazione e covariaizone

Iniziamo da un dettaglio curioso: OUT027 e le sue vendite fuori scala.

OUT027

Cerchiamo di capire perchél’OUT027 vende così tanto.

E’ un supermarket Type 3 (dato che al momento non sappiamo cosa singifichi) di dimensioni medie, sito in una città di Tier 3: abitanti da 20k a 50k.

Alcune domande:

Quale categoria di prodotti vende maggiormente?
E’ possibile che sia l’unico della città? Possiamo saperlo?
Esiste da tanti anni, quindi gli acquirenti sono fedeli?
Vende prodotti diversi dalle altri filiali?
Espone i prodotti in modo diverso?
Vende prodotti ad un prezzo più conveniente?

Cerhiamo di dare una risposta a queste domande.

Ci ho messo un po’ perché non sapevo come togliere le label del grafico, altrimenti non si vedeva nulla. In R:

theme(axis.text.x=element_blank())

Comunque ho prodotto questo:

Il grafico mostra per ogni filiale il numero di prodotti venduti divisi in base alla loro categoria.

Notiamo a vista che l’OUT027 non mostra alcuna anomalia, anzi se non lo tenessimo d’occhio sarebbe indistinguibile ad un primo sguardo dagli altri.

Invece quello che noto è una strana somiglianza tra le vendite dell’OUT017 e OUT018. Sembrano infatti identiche. Eppure sappiamo che l’OUT017 è di tipo 1 e si trova in una città con 50-100k abitanti, mentre l’OUT018 è di tipo 2 e si trova in una citta con 20-50k abitanti.

Perché due tipologie diverse di negozi, siti in città di dimensioni differenti, vendono la stessa quantità degli stessi prodotti?
Potrebbe avere a che fare con il loro costo?
Potrebbe dipendere dalla loro disposizione all’interno della filiale? (=visibilità)

Perché l’OUT013 (Tipo1) e l’OUT27 (tipo3) e lOUT46 (tipo 1 e Tier 1) vendono così tanta frutta e verdura?

I primi due vendono nella stessa categoria di città (Tier 3): pochi abitani.

In definitiva possiamo concludere che, in riferimento all’OUT027, sappiamo:

“la filiale contraddistinta con l’identificativo OUT027 appartine ad una classe di supermakret senza eguali, nello specifico è di tipo 3, stabilita nel 1985 in una citta di piccole dimensioni (Tier 3). “

Modalità report

Ora modifico un po’ il mio modo di scrivere: lo adatto per fare in modo che il post abbia più l’aspetto di un report.

Modifiche al dataset

Nel tentativo di correggere il dataset, è stata eseguita una pulizia e correzione delle variaibli.

L’ ‘Item_Fat_Content’ presentava una variazione anomala e ridodante. La variabile categoriale assume ora due valori: Low Fat e Regular.

L’ ‘Item_Visibility’ è stato pulito sostituendo il valore di 879 data point che ora presentano un valore mancante (NA)

Prodotti a basso impatto vendite

La vendita di “seafood” è ridotta in ogni filiale, è quindi possibile che queste si trovino lontano da posti di mare o il dataset faccia riferimento ad un periodo invernale con scarsa consumazione di pesce.

Insieme agli “starchy foods” e ai “canned” questi prodotti hanno il minor impatto sulle vendite.

Da valutare una loro momentanea esclusione per alleggerire i grafici.

Prodotti ad alto impatto vendite

I prodotti “Frozen Foods”, “Fruit and Vetables”, “Snack Foods” e “Meat” contribuiscono al maggior numero di vendite.

Contenuto grasso dei prodotti

Dal grafico è evidente che in tutte le filiali si vende un maggior numero di prodotti a basso contenuto grasso. L’OUT019 mostra una differenza di vendite più modesta.

Perché nell’OUT019 la differenza tra i prodotti a basso ed ad alto contenuto grasso è più ridotta?

Visibilità dei prodotti

Il grafico evidenzia Overplotting.

La tendenza mostra come all’aumnetare della visibilità le vendite globali diminuiscano progressivamente. Si evidenzia poi una variazione netta con visibilità superiore a 0.2.

Il fenomeno potrebbe dipendendere dal fatto che oggetti con visibilità maggiore siano in realtà prodotti di peso (e probabilmente dimensioni) superiore. Oggetti non consumabili, che vengono acquistati più raramente.

Problemi del dataset

In questa sezione esploriamo i problemi del dataset.

Mancanze

Nel report preliminare erano emerse incongruenze relative alla visibilità di alcuni prodotti.

Ulteriori analisi hanno appurato la presenza di 526 data points con visibilità pari a 0, poi corretti con valori medi.

Ci sono inoltre 1463 prodotti privi dell’indicatore di peso.

2410 prodotti sono invece privi dell’indicatore di dimensione della filiale. E’ più rilevante tuttavia considerare che solo per tre filiali è effettivamente assente questo dato.

Per il momento è tutto!

Nel prossimo post cercheremo di creare un Report Approfondito sul dataset, rispondendo alle domande che ci siamo fin’ora posti.

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