Archivi tag: pca

PCA spiegazione per fidanzati/mariti sfortunati prt 2

Non so se la mia spiegazione sulla PCA fosse chiara,non lo so, e ci riprovo.

E’ una tecnica che viene utilizzata molto frequentemente nel campo del Machine Learning, PCA sta a significare Principal Component Analysis.

Ora Immagina.

Per qualche sfortunata ragione, tu devi regalare una borsa alla tua ragazza/moglie/amante (e io nemmeno ai nemici lo auguro).

Immagina.

Tu e la tua conoscenza sul mondo delle borse.

Immagina.

Tu e la tua conoscenza che spazia dal trolley che usi dall’ultima gita a Praga del liceo, che tua madre e la tua ragazza vorrebbero buttare ma per te è ancora funzionante nonostante quella macchina enorme dovuta agli eccessi del tuo amico tale “ER Bresaola”, e finisce allo zaino tecnico porta pc, con esclusione della 24 ore che ti ha regalato Zio Gianni “perché ormai sei grande”.

Immagina.

TU, proprio TU, devi acquistare una borsa, o in romano ‘na borZa.

Photo by Artem Bali on Unsplash

Inizi a classificare i prodotti:

  • Range di costo (5-5000 €)
  • Marca (Cinese Sotto Casa-Mercato di Merce Parallela-Amazon-Alta Moda)
  • Colore(Blu-Rosso-Nero)(In almeno 216 tonalità diverse per colore)
  • Dimensione (Clutch-Trousse-Hobo Bag-Shopping Bag) (miserabile pensavi che si usasse il metro o il cm come da Sistema Internazionale di Unità di Misura)
  • Dove comprarla (Km Da casa tua 0-100km)
  • Come pagarla (Cash-Finanziamento a 20 anni-Bitcoin-Vai a Rubare perché sei povero)
  • Periodo di Analisi Intraperiodale (Primavera-Estate-Autunno-Inverno)
  • Periodo di Analisi Interperiodale (Outlet-Ultima Uscita)

Almeno 8 variabili di scelta, dura eh?

Purtroppo non puoi sottrarti dall’acquisto perché deve farti perdonare.

Non sai il motivo, lo ignori, ma c’è, in quanto uomo sbagli a prescindere e DEVI farti perdonare.

La PCA, ti aiuta a semplificare il problema ed i dati di input per la tua fatidica scelta.

Nel problema in esame alcune variabili sono in qualche modo ridondanti e assimilabili, ad esempio:

  • Come Pagarla
  • Marca
  • Range Di Costo

potrebbero essere aggregate in un’unica nuova variabile.

E’ molto probabile che se vai dal cinese sotto casa puoi aggregare sotto un unico cappello le variabili “Cash-Cinese Sotto Casa-5€” così come se vai ad effettuare l’acquisto in-quella-maison-che-non-va-nominata “Vai a Rubare perché sei povero- maison-che-non-va-nominata-5000€” possono anche loro essere aggregate.

Questo è quello che fa la tecnica PCA.

Stiamo quindi scartando le caratteristiche ridondanti?

No, anche perchè sappiamo benissimo che alla minimo passo falso si  rischia di aprire un caso di stato, tu nella tua classificazione  hai preso in considerazione TUTTE le variabili, ma le hai trasformate attraverso questa tecnica.

Questa domanda è importante perchè nel vecchio articolo parlavo di riduzione, ma questo non significa che scartiamo determinate varibili(in termini matematici stiamo effettuando una combinazione lineare)

La PCA permette di costruire delle nuove variabili aggregate significative nel processo di classificazione basandosi su quelle precedenti.

Con l’esempio precedente siamo passati da 8 variabili a 6.

Inoltre con la nuova trasformazione abbiamo identificato una variabile che può variare sensibilmente da borsa a borsa, questo elemento è di fondamentale importanza perché abbiamo identificato un elemento che permette di differenziare ed identificare (labeling) le varie tipologie.

Dal punto di vista matematico abbiamo identificato la nuova variabile caratterizzata dalla maggior varianza.

E’ per questo che si chiama “Componente Principale”, perchè è la variabile con varianza maggiore.

Ora che sappiamo come classificare le borse quale comprare?

Questo punto esula la tecnica PCA.

Nelle teoria classica del pensiero economico questo problema per l’uomo razionale non si porrebbe.

  • Volume da trasportare
  • Identificazione del costo minimo in rapporto al volume (€/cm3)

Purtroppo, non funziona così tranne nel mondo degli ingegneri, una analisi basata sugli acquisti storici della fidanzata/moglie/amante risolverebbe il problema, ma non è semplice.

“Essere ingegnere è praticamente una malattia. A una donna, moglie d’ingegnere si potrebbe chiedere:  “Signora, suo marito come sta? E’ ancora ingerere?” E lei potrebbe risponere: “No, adesso sta un po’ meglio” -Luciano de Crescenzo – I pensieri di Bellavista

Un’analisi delle frequenze delle caratteristiche degli acquisti passati, magari modellizzata attraverso il teorema di Bayes, potrebbe portarvi ad acquistare la “borsa più frequente” che non è quella “che la farebbe più felice”.

Quello che potete però fare è assegnare dei pesi alle varie variabili e quindi fare un’analisi delle frequenze pesate.

Un metodo potrebbe essere quello di assegnare un peso maggiore alle borse utilizzate il sabato sera, rispetto a quelle utilizzate tutti i giorni.

Scegliete successivamente il modello di borsa con la frequenza pesata maggiore e, con una certa probabilità, avrete scelto l’alternativa che massimizza l’obiettivo (o in altri termini minimizza l’errore).

La descrizione della PCA di questo articolo è estremamente qualitativa e semplifica molte ipotesi alla base. Nel precedente è possibile vedere come cambia la correlazione tra le variabili ed il p-value con un piccolo script in Python.

Quello che farò nell’ultimo post dedicato a questo strumento statistico sarà realizzare una spiegazione estremamente tecnica e sintetica corredata da un’opportuno script in Python.

Grazie per aver letto l’articolo!

Un abbraccio

Andrea

ps se ci sono errori scrivimi pure 🙂

Annunci

Lascia un commento

Archiviato in Ingegneria, Tecnologia

PCA Parte Prima

Tra i vari progetti di Luglio e Agosto ci potrebbe essere un progetto di ottimizzazione dei costi per una società UK (non è la stessa dei cupcakes) che potrebbe richiedere l’applicazione della PCA.
In questo articolo (e forse anche un successivo) proverò a spiegare un concetto fondamentale e particolarmente utile.

Devo premettere che la trattazione è volutamente semplificata ed esistono persone decisamente più competenti e brave di me che illustrano (in inglese) l’argomento, Youtube è pieno.
Allora perchè un articolo supernoioso?

Semplice! Per me spiegare le cose è uno dei migliori metodi per apprendere.

Questo lo insegna il sommo Feyman, mica Ciccio Paduccio, maggiori info sul metodo di apprendimento Feyman qui -> https://www.focus.it/comportamento/scuola-e-universita/le-tre-regole-di-feynman-per-preparare-un-esame-e-imparare-tutto

 

Tornando a noi.

L’analisi in componenti principali, in inglese PCA, è una trasformazione lineare.

Fare una PCA è come prendere la lista dei 50 “capisardi” della vita e ridurli a 3:
“La femmina, il danaro e la mortazza”.

La PCA permette di ridurre le variabili identificando quelle realmente importanti(termine statisticamente insignificante) e non correlate tra loro (termine statisticamente fondamentale).

In termini tecnici è una trasformata, un operatore matematico, in questo caso lineare, che trasforma una funzione in un’altra funzione.

E’ molto utilizzata nell’ambito del Machine Learning nella risoluzione dei probelmi di regressione e classificazione perchè permette di ridurre il numero di variabili in gioco (feature reduction) considerando quelle fondamentali.

Nell’esempio che vi propongo, si è applicata la PCA non tanto per ridurre il numero di variabili (che è rimasto il medesimo 2), ma per decorrelarle

E’ una versione leggermente modificata di un esercizio di DataCamp.Com di questo capitolo (https://www.datacamp.com/courses/unsupervised-learning-in-python).

Nella prima fase dell’esempio si studia la correlazione tra due variabili e nella seconda parte si applica una PCA

Sono stati presi 209 semi e si è misurata la loro lunghezza e larghezza e le informazioni sono state salvate in un file *csv

Inzialmente ho realizzato uno scatter plot per vedere quale fosse la correlazione tra le due variabili ed ho calcolato il coefficiente di pearson, successivamente ho applicato una PCA per decorrelare le due variabili e identificare le componenti principali che definiscono due nuove variabili, dove quella con la maggiore varianza raprpesenta il primo asse, mentre la seconda quella con varianza minore.

Nel caso noi avessimo avuto m variabili e dalla PCA avessimo ottenuto n variabili, con m>n, allora il secondo asse sarebbe stato descritto dalla seconda variabile con varianza maggiore, il terzo asse con la terza variabile con varianza maggiore fino alla n-essima variabile.

Nei prossimi articoli cercherò di illustrare meglio il concetto con esempi pratici, fino a quando non riuscirò a elaborare un articolo dal titolo “PCA Guida definitiva” o “PCA spiegata a mia nonna”.

In [10]:
#Analisi PCA 
# Importiamo le librerie necessarie matplot scipy.stats e pandas 
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
import pandas as pd
#Carichiamo il file 
grains=pd.read_csv("seeds-width-vs-length.csv")
#Vediam sempre di che si tratta e come si caratterizzano i nostri dati
print(grains.info())
print(grains.describe())
#Estraiamo dal dataframe solo i valori per poter successivamente lavorare con specifici array
grains=grains.values
#La 0-sima colonna del dataframe rappresenta la larghezza
width = grains[:,0]

#La 1-a colonna del dataframe rappresenta la lunghezza
length = grains[:,1]

# Grafichiamo tutto con uno scatter plot larghezza-lunghezza
plt.scatter(width, length)
plt.axis('equal')
plt.show()

#Calcoliamo il coefficiente di pearson detto anche coefficente di correlazione lineare ed il p-value dei dati
correlation, pvalue = pearsonr(width,length)

# Visualizziamo in due valori appena calcolati
print("Correlazione tra le due  variabili larghezza e lunghezza", round(correlation, 4))
print("P-value dei dati",pvalue)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 209 entries, 0 to 208
Data columns (total 2 columns):
3.312    209 non-null float64
5.763    209 non-null float64
dtypes: float64(2)
memory usage: 3.3 KB
None
            3.312       5.763
count  209.000000  209.000000
mean     3.258349    5.627890
std      0.378603    0.444029
min      2.630000    4.899000
25%      2.941000    5.262000
50%      3.232000    5.520000
75%      3.562000    5.980000
max      4.033000    6.675000
Correlazione tra le due  variabili larghezza e lunghezza 0.8604
P-value dei dati 1.5696623081483666e-62

Addesso possiamo valutare quelle che sono le componenti principali della nostra distribuzione e decorrelarre le due variabili attraverso una PCA

In [4]:
#Carichiamo il modulo della libreria che ci interessa per l'operazione
#PCA Analysis 
# Import PCA
from sklearn.decomposition import PCA

#Creiamo l'istanza pca modello
modello = PCA()

# Applichiamo il metodo fit_transform method al nostro dataset sul grano
#Otterremo un nuovo array con due nuove variabili decorrelate
pca_features = modello.fit_transform(grains)

# Assegniamo la 0-sima colonna di pca_features alla variabile xs
xs = pca_features[:,0]

# Assegniamo la 1-a colonna di pca_features alla variabile ys
ys = pca_features[:,1]

# Grafichiamo tutto con uno scatter plot le due nuove variabili
plt.scatter(xs, ys)
plt.axis('equal')
plt.show()

# Calcoliamo coefficiente di pearson per le due nuove variabili xs ys
correlation, pvalue = pearsonr(xs, ys)

# Visualizziamo i due risultati approssimati
print("Correlazione tra le due nuove variabili xs ed ys", round(correlation,4))
print("P-value dei dati",pvalue)
Correlazione tra le due nuove variabili xs ed ys -0.0
"P-value dei dati 1.0

1 Commento

Archiviato in Ingegneria