Dicembre 2018

Volume 33 numero 12

Artificially Intelligent - analisi dei panieri di mercato

Dal Frank La La

Frank La VigneÈ un po' di intelligenza artificiale (AI) che hanno, senza dubbio, rilevato, in particolar modo festività stagione acquisti è in corso, ovvero l'acquisto consigliato. Quasi ogni rivenditore online verrà visualizzati ulteriori consigli sui prodotti, in alcuni casi sotto l'intestazione di "Spesso acquistati insieme" o "I clienti che hanno acquistato anche acquistato Y X." In base a uno studio condotto da rivista McKinsey nel 2013 (bit.ly/2yK3Bu8), 35 percento di ciò che i consumer di acquisto in Amazon provengono dagli algoritmi di raccomandazione di prodotto. Inoltre, questa strategia non è più limitata per i rivenditori, servizi di streaming online come Netflix e YouTube utilizzano algoritmi sofisticati di raccomandazione per mantenere più visualizzatori ottimizzati nel.

Chiaramente, i sistemi di raccomandazione abbiano ripercussioni sulla nostra vita quotidiana. Si potrebbe affermare che siano più evidente sotto forma di intelligenza artificiale che i clienti possono trovare. In questo articolo, esplorerò un form di base del sistema di raccomandazione noto come Market Basket Analysis.

Market Basket Analysis

Market Basket Analysis, noto anche come affinità di analisi, è una tecnica di modellazione di base la teoria che se si acquista un determinato gruppo di elementi, più probabile che si acquista un altro gruppo di elementi. Ad esempio, un utente di acquisto marmellata e bread è molto più probabile che si voglia jelly di acquisto. Tuttavia, non tutte le relazioni sono come immediatamente evidenti. Conoscenza del comportamento di consumer può aumentare le vendite e assegnare il rivenditore un margine significativo e i concorrenti. In teoria, Market Basket Analysis è solo un'applicazione di tecniche di analisi di associazione, anche se molti articoli ed esercitazioni online possono confondere i due. Per inserirlo nella prospettiva di altre tecniche che ho scritto sulla precedenza, Market Basket Analysis è uno strumento di apprendimento non supervisionato di apprendimento che richiede poco rappresentare un ostacolo alla progettazione di funzionalità e una quantità limitata di preparazione e pulizia dei dati. In pratica, è possibile esplorare ulteriormente insights ricavare dai Market Basket Analysis con altri strumenti di analisi scientifica dei dati o di intelligenza artificiale.

Nonostante la possibilità di scoprire schemi nascosti, Market Basket Analysis è relativamente semplice da spiegare e non richiedono la conoscenza di statistiche avanzate o calcolo. Tuttavia, esistono alcuni termini e le notazioni convenzionale per esaminare. In primo luogo, i concetti di causa ed effetto sono dette attività antecedente e conseguente. Nell'esempio ho accennato in precedenza, marmellata e bread sono attività antecedente e jelly il conseguente. La notazione formale per questa relazione sarebbe {marmellata, quali pane} -> {Jelly} indica che si è una connessione tra questi elementi. Prendere anche nota che le attività precedenti e consequents può essere costituito da più elementi.

Esistono tre importanti misure matematiche necessari per Market Basket Analysis: Supporto, Lift- and -confidenza. Supporto rappresenta il numero di volte in cui attività precedenti vengono visualizzati insieme nei dati. Per semplificare l'esempio, si immagini la relazione seguente: {marmellata} -> {Grape Jelly}. Data 100 clienti (e una sola transazione per ogni cliente), prendere in considerazione lo scenario seguente:

  • i 15 clienti bought marmellata
  • 13 acquistato Grape Jelly
  • 11 bought marmellata e Grape Jelly

Supporto rappresenta il numero di volte in cui gli elementi vengono visualizzati in una transazione insieme, che in questo esempio è 11 su 100 o 0.11. Per usare termini statistici, è probabile che una determinata transazione includerà marmellata sia Grape Jelly pari al % 11. La fiducia viene assegnato il valore di supporto (. 11) e lo divide per la probabilità di una transazione di avere Jelly Grape da solo, corrispondente a un valore di 0.846. Ciò significa che quasi l'85% del tempo che è stata acquistata Jelly Grape, è stato acquistato insieme a marmellata. Infine, è disponibile accuratezza, che accetta la fiducia (0.846) e lo divide per la probabilità di marmellata. Si equivalgono a 5.64 (arrotondato a due cifre decimali).

Tutto questo potrebbe essere più chiaro in un grafico semplice, come illustrato nella figura 1.

Figura 1 supporto fiducia e i valori di accuratezza

Misura Formula Valore
Supporto P (marmellata & Jelly Grape) .011
Confidenza Supporto / P (Jelly Grape) 0.846
Accuratezza Confidenza / P (marmellata) 5.64 (arrotondate)

 

Market Basket Analysis in azione

Tenendo presenti le metriche precedenti, è possibile provare Market Basket Analysis in un set di dati reale. Il primo passaggio è per ottenere i dati delle vendite al dettaglio da analizzare. Per fortuna, la University of California, Irvine, fornisce un set di dati che contiene le transazioni per un sito Web basato su Regno Unito. Altre informazioni sul set di dati sono disponibile all'indirizzo bit.ly/2DgATFl. Creare un notebook Python 3 sulla tua piattaforma preferita (mi sono occupato il notebook di Jupyter in una colonna precedente al msdn.com/magazine/mt829269). Creare una cella vuota, immettere il codice seguente per scaricare i dati di esempio ed eseguire la cella:

! curl http://archive.ics.uci.edu/ml/machine-learning-databases/00352/Online%20Retail.xlsx -o retail.xlsx

Al termine, immettere il codice seguente in una nuova cella per caricare il foglio di calcolo di Excel in un DataFrame di Pandas e stampare le colonne del set di dati:

import pandas as pd
df = pd.read_excel('retail.xlsx')
print( df.columns)
The output will look something like this:
Index(['InvoiceNo', 'StockCode', 'Description', 'Quantity', 'InvoiceDate',
       'UnitPrice', 'CustomerID', 'Country'],
      dtype='object')

Market Basket Analysis non richiedono dati rigorosi munging, ha senso per rimuovere i record estranei, ad esempio quelli con un valore null numeri della fattura e ordini annullati. È anche utile rimuovere gli spazi estranei nelle descrizioni del prodotto e convertire tutti i numeri di fattura in stringa. È possibile farlo eseguendo il codice seguente:

df['Description'] = df['Description'].str.strip()
df.dropna(axis = 0, subset=['InvoiceNo'], inplace = True)
df['InvoiceNo'] = df['InvoiceNo'].astype('str')
df = df[~df['InvoiceNo'].str.contains('C')]

A questo punto immettere il codice seguente per aggregare i dati e visualizzare i dati da un livello di paese:

df.groupby('Country').count().reset_index().sort_values(
  'InvoiceNo', ascending = False).head()

Successivamente, sarà riorganizzare i dati con ogni prodotto uno con codifica a caldo e una sola transazione per ogni riga. Una codifica a caldo è una tecnica di trasformazione dei dati in cui i valori categorici vengono convertiti in colonne, con il valore 1 immesso in cui è presente un valore categorico. Verrà anche limitare l'ambito del set di dati in uno dei paesi, in questo caso, Francia, per confrontare la funzionalità di consumer in un mercato singoli. Immettere ed eseguire il codice seguente a questo scopo (si noti che la forma del frame di dati basket_uk nell'output della cella, una codifica a caldo si espande le colonne da 8 a 4175):

basket_fr = (df[df['Country']=="France"]
          .groupby(['InvoiceNo', 'Description'])['Quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('InvoiceNo'))
basket_fr.head(10)

Un rapido riepilogo risultati rivela un problema con mia una codifica a caldo. Il sesto elemento verso il basso ha un valore di 24.0 nella seconda colonna. La mia intenzione era di uno o uno zero nei dati, non le quantità. Pertanto, dovrà utilizzare individuare qualsiasi valore diverso da zero e convertirli in 1. Per risolvere questo problema, eseguire il codice seguente e notare che il 24.0 è stato convertito in 1:

def sum_to_boolean(x):
  if x<=0:
    return 0
  else:
    return 1
basket_fr_final = basket_fr.applymap(sum_to_boolean)
basket_fr_final.head(10)

Utilizzerò MLXTEND (rasbt.github.io/mlxtend) per analizzare ulteriormente i dati. MLXTEND è una libreria Python di strumenti utili per attività di analisi scientifica dei dati comuni, tra cui Market Basket Analysis. Per installare questa libreria all'interno del blocco appunti, eseguire il codice seguente:

! pip install mlxtend

Con il pacchetto MLXTEND installato, è possibile importare le librerie rilevanti da MLXTEND, simile al seguente:

from mlxtend.frequent_patterns import association_rules
from mlxtend.frequent_patterns import apriori

In una nuova cella, immettere il codice seguente per visualizzare gli insiemi di elementi con almeno 6% supportano:

frequent_itemsets_fr = apriori(basket_fr_final, min_support = 0.06,
  use_colnames = True)
frequent_itemsets_fr.sort_values('support', ascending = False).head()

Con i set di chiavi di elementi identificati, è possibile applicare a questo punto la libreria di regole di associazione per individuare i comportamenti di acquisto dei clienti. Immettere il codice seguente ed eseguirlo:

a_rules = association_rules(frequent_itemsets_fr, metric = "lift",
  min_threshold = 1)
a_rules.sort_values('lift',ascending = False)

I risultati, ordinati a livello di accuratezza, dovrebbero essere simili a quelli figura 2, rivelare i modelli di acquisti dei clienti francesi nel sito. Un rapido riepilogo dei risultati mostra che i clienti che acquistano bambini POSATE SPACEBOY anche acquistare bambini POSATE carrello GIRL e che i clienti che acquistano una sveglia in un colore anche acquistare una sveglia in un altro colore. Quanto fruibili go, potrei consiglio per i proprietari del sito al bundle offerte per la specifica relativa al sesso posate dell'offerta, nonché offrire multi color allarme orologio aggregazioni.

Regole di associazione dei clienti francesi
Figura 2 regole di associazione dei clienti francesi

Tuttavia, tenere presente che questo elenco è ordinato in modalità Lift- and non occorrenza. Può non avere l'opportunità di introdurre un nuovo bundle o un prodotto offerta se non è abbastanza comune. Per ottenere una visualizzazione di questi elementi posate popolari come sono, immettere il codice Python seguente:

print( basket_fr_final['CHILDRENS CUTLERY SPACEBOY'].sum())
print( basket_fr_final['CHILDRENS CUTLERY DOLLY GIRL'].sum())

I risultati non sono promettenti; solo 27 per SPACEBOY e 28 per GIRL carrello. Con un piccolo esplorazione, trovo una regola di associazione con alcune altre promise. Si scopre che l'indice di regola di associazione 50 (SET/20 RED RETROSPOT PAPER PANNOLINI) sia l'attività precedente per tazze paper rosso e piatti paper rosso. Immettere il codice seguente per visualizzare il numero di unità venduto:

basket_fr_final['SET/20 RED RETROSPOT PAPER NAPKINS'].sum()

Mentre il numero è bassa, è l'acronimo per motivo che i clienti che acquistano tazze disposable desiderano piatti carta e pannolini corrispondenti. Un rivenditore esperto può facilmente creare un pacchetto in un'offerta di bundle per indurre il cliente per l'acquisto.

I lettori sharp-eyed noterà che esistono due altre metriche nel frame di dati risultante: Sfrutta e detenzione. Questi sono valori aggiuntivi da considerare quando si esegue Market Basket Analysis. Altre informazioni sono reperibili esplorando le cosiddette "alternative misure di interesse". Wikipedia è un utile punto di partenza (bit.ly/2AECRNh).

È importante ricordare che quando ha aggregato i dati da un livello di paese, non vi sono notevolmente più fatture dal Regno Unito rispetto a qualsiasi altro paese. Forse più potrebbe essere apprese esaminando il comportamento dei clienti con dati non elaborati più disponibili. Esaminiamo questo immettendo il codice seguente in una nuova cella e l'esecuzione, come illustrato di seguito:

basket_uk = (df[df['Country']=="United Kingdom"]
          .groupby(['InvoiceNo', 'Description'])['Quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('InvoiceNo'))
basket_final_uk = basket_uk.applymap(sum_to_boolean)
frequent_itemsets_uk = apriori(basket_final_de, min_support = 0.06,
  use_colnames = True)
a_rules_uk = association_rules(frequent_itemsets_uk, metric = "lift",
  min_threshold = 1)
a_rules_uk.sort_values('lift',ascending = False).head()

Per il Regno Unito, il tempo di esecuzione è molto più tempo a causa di un set di dati di dimensioni maggiori. Si noti inoltre che i risultati sono piuttosto diversi. Potrebbe trattarsi di un risultato di ulteriori dati modificando l'analisi, o semplicemente una funzione diversa delle preferenze dei clienti in un altro mercato? Oppure potrebbe trattarsi di che il rivenditore offre diversi prodotti per vendita nei diversi mercati? Questi sono i tipi di variabili, che è necessario comprendere mentre si lavora con l'analisi. In questo caso, abbiamo po' di contesto oltre questo da un rivenditore online basato su nel Regno Unito. Tuttavia, in un progetto reale, engagement con esperti in materia indicatori è un elemento critico per l'esito positivo nei progetti di analitica dei dati.

Conclusioni

In questo articolo, esaminato l'uso di Market Basket Analysis per scoprire i modelli di comportamento di consumer. Market Basket Analysis a cui appartiene il campo di dimensioni maggiori di analisi di affinità, le aziende usano ai clienti di spendere denaro più prodotti e più tempo a piattaforme di streaming.

Market Basket Analysis fornisce un punto di ingresso ideale per le persone e le organizzazioni che desiderano per esplorare l'analisi scientifica dei dati. La barriera all'ingresso è bassa in termini di competenza matematica. In effetti, la matematica non andare oltre la divisione semplice e base teoria di probabilità. Si tratta di uno spazio semplice problema di esplorare per principianti e offre un ottimo punto di partenza nell'applicazione dell'intelligenza artificiale per le aziende. Detto questo, non essere indotta a pensare che questo non è un potente mezzo per condurre analisi scientifica dei dati oppure Mostra valore leadership aziendale. L'impatto su di essa può essere significativo.


Frank La Vignelavora in Microsoft come un professionista di soluzioni di tecnologia di intelligenza artificiale in cui aiuta le aziende ottenere migliori risultati per usufruire al meglio i propri dati con analitica e intelligenza artificiale. Ha inoltre CO-host il DataDriven podcast. Il suo blog all'indirizzo FranksWorld.com ed è possibile guardare lui sul suo canale YouTube, "Di Frank mondo TV" (FranksWorld.TV).

Grazie al seguente esperto tecnico per la revisione dell'articolo: Andy Leonard (i dati aziendali e Analitica)


Discutere di questo articolo nel forum di MSDN Magazine