Come capire se il cliente sarà un cattivo pagatore con l’intelligenza artificiale, un pratico esempio

Oggi scopriremo, grazie ad un algoritmo che implementa il classificatore di Naive-Bayes (un classificatore che si basa sul teorema delle probabilità di Bayes), come individuare preventivamente se i clienti (o potenziali clienti) saranno buoni o cattivi “pagatori” per un particolare prodotto o servizio.

Buona parte dei sistemi gestionali permettono di esportare l’elenco dei clienti e la rispettiva situazione delle fatture saldate o insolute.

Queste informazioni sono fondamentali per il riconoscimento predittivo e rappresentano il training set dell’algoritmo.

Più l’esportazione è dettagliata e migliore sarà l’accuratezza della predizione.

premessa:

  • scegliere accuratamente le caratteristiche da imputare nell’algoritmo (ad esempio se l’azienda è grande, media o piccola sulla base del numero dei dipendenti, del fatturato…).
  • l’algoritmo accetta file csv formato da 13 colonne (il formato csv è facilmente esportabile da qualsiasi gestionale). Le prime 5 colonne rappresentano variabili di categoria (es, azienda piccola, media o grande), dalla 6 alla 10 vengono inseriti valori numerici discreti o continui, la colonna 11 rappresenta la data del “rilevamento” e la colonna 12 rappresenta il target, ovvero, l’oggetto della predizione.
  • ogni caratteristica deve essere inserita in una specifica colonna (l’ordine non è importante)
  • le caratteristiche sono indipendenti una dall’altra

Facciamo un esempio

Supponiamo di aver esportato il seguente file da un generico sistema gestionale: l’esempio prevede la categorizzazione dei clienti in “BIG, MIDDLE, SMALL”, la tipologia del venduto (SERVICE, PRODUCT), la complessità del servizio/prodotto offerto, l’importo in fattura ed il numero di mesi dal primo contatto del partner di riferimento. Nella colonna target, invece, il valore che vorremmo predire, ovvero, pagato o insoluto.

Training Set – input file for Naive Bayes calculation


Import NaiveBayes training Set

Importiamo il file su questo servizio on-line

Una volta completata l’importazione (e quindi aver istruito l’algoritmo con lo storico presente nel nostro gestionale), possiamo creare dinamicamente le nostre previsioni.

Utilizziamo lo stesso servizio online per eseguire le nostre predizioni.

Ad esempio:

voglio sapere se una grande azienda che lavora con me da 34 mesi e vuole acquistare un servizio standard da 45000 euro, avrà problemi con il pagamento oppure no.

Inseriamo questi dati nell’apposita sezione e premiamo salva:

BIG, SERVICE, STANDARD, 45000, 34

Prediction Set for Naive Bayes

Il sistema, dopo aver mostrato i passaggi matematici, ci fornirà la predizione per questo specifico caso. La predizione risulta PAID, quindi, l’acquirente pagherà l’importo dovuto.

Proviamo invece ad inserire una situazione di questo tipo:

Una piccola azienda vorrebbe comprare un grosso servizio customizzato ad-hoc da 150.000 euro ed è la prima volta che lavora con noi. Vediamo cosa ci dice l’algoritmo (che si basa sul nostro storico). Inseriamo quindi:SMALL, SERVICE, CUSTOM, 150000, 1

In questo caso la predizione è UNPAID, ovvero, è molto probabile che l’azienda non pagherà l’importo dovuto.

In conclusione, l’algoritmo si basa sullo storico aziendale ed utilizza il calcolo delle probabilità e l’apprendimento automatico (una delle caratteristiche dell’intelligenza artificiale) per fare previsioni più o meno accurate (dipende anche dalle caratteristiche iniziali). Può essere utilizzato in moltissime modalità e settori differenti. Gli strumenti gestionali sono soltanto uno dei tanti campi di applicazione.

Analisi dei processi aziendali: un esempio su come iniziare un progetto informatico

Facciamo una piccola premessa. Il progetto informatico di cui ci occupiamo riguarda l’ottimizzazione dei flussi operativi e direttivi all’interno delle organizzazioni.

Prima di iniziare un nuovo progetto informatico è necessario eseguire un’ analisi AS-IS per valutare gli impatti e le sinergie che si andrebbero a creare nella propria organizzazione. Di seguito schematizzo le principali attività che un responsabile informatico (interno o esterno) dovrebbe eseguire per compilare una buona analisi AS-IS:

  1. interviste agli operatori (nei diversi reparti aziendali) per capire quali attività svolgono e quali strumenti utilizzano per svolgerle
  2. raccolta delle informazioni disegnando i primi flussi di processo, eventualmente chiedendo conferma agli operatori ed al process owner (se è presente) o al manager.
  3. il documento finale è un analisi AS-IS  su cui vengono evidenziati i processi con i rispettivi diagrammi e le criticità (presenza cicli, lavori ripetitivi, colli di bottiglia…). Il miglior diagramma da utilizzare, in questi casi, è il Business Behaviour View che mostra le attività ed il flusso operativo tra i vari reparti. In allegato un esempio molto semplificato

dall’analisi AS-IS si produrranno (a seconda di preselezionate KPI) una o più proposte di reingegnerizzazione del processo (da scegliere in base ai costi-benefici) in allegato alcuni esempi: nella prima soluzione ipotizziamo di introdurre un software di gestione magazzino. Nella seconda ipotizziamo di introdurre un software gestionale ERP integrato tra i vari reparti aziendali.


PRIMA SOLUZIONE

SECONDA SOLUZIONE

Ognuno di questi diagrammi (che sono solo una parte del documento TO-BE) diventerà patrimonio informativo aziendale e possono essere utili per eventuali audit interni.

Una volta definito il TO-BE, si apre un nuovo capitolo che riguarda la messa in opera del progetto che tratteremo in un altro capitolo.

Digital Transformation Manager

Il digital transformation manager o responsabile dell’innovazione aziendale è una figura professionale strategica che si occupa dell’innovazione digitale di un’azienda. Questa figura studierà i processi aziendali, rileverà eventuali inefficienze ed applicherà soluzioni digitali per ottimizzarne il flusso. L’ottimizzazione avviene attraverso l’ausilio di strumenti digitali che, a seconda dei costi e benefici, potranno essere introdotti gradualmente all’interno della struttura organizzativa.

Le principali mansioni di questo responsabile riguardano:

  • ricerca del servizio digitale presente sul mercato
  • ricerca del partner adatto: ogni servizio ha anche un fornitore che lo supporta
  • analisi dei costi e benefici del servizio ricercato: ogni servizio può avere costi e benefici diversi a seconda della struttura organizzativa
  • introduzione nella struttura organizzativa del servizio digitale: questa fase risulta delicata in quanto si introduce un nuovo modo di lavorare per il personale.

ricerca del servizio digitale presente sul mercato

Il mercato delle tecnologie digitali ed informatiche è formato da tantissime soluzioni, è in crescita ed in continuo mutamento. Il responsabile dovrà necessariamente essere aggiornato sui servizi digitali presenti e dovrà avere sia competenze informatiche che di processo aziendale.

Allo stato attuale stanno emergendo (o sono emersi) alcuni argomenti digitali che potranno subire una forte crescita in futuro. Sicuramente il responsabile dell’innovazione aziendale dovrà esserne a conoscenza:

  • realtà virtuale ed aumentata: simulare la realtà attraverso applicazioni 3D e nuovi modelli matematici che rappresentano particolari contesti del mondo simulato (pensiamo ai processi legati all’apprendimento; qualsiasi azienda che fa formazione per il personale potrebbe trovare vantaggio su questo tipo di tecnologie).
  • IOT (internet of things): letteralmente cose connesse in rete; qualsiasi tipo di macchinario/oggetto potrebbe essere collegato in rete comunicando determinanti informazioni (ad esempio i macchinari industriali possono comunicare eventuali guasti o anomalie, oppure ogni singola presa elettrica può comunicare lo stato del consumo elettrico, le auto possono comunicare i KM percorsi, il livello di benzina di olio ecc…)
  • Intelligenza Artificiale, Learning Machine e robotica: grazie ai nuovi algoritmi di intelligenza artificiale si possono automatizzare processi non solo sulla base di operazioni preimpostate (una volta si programmavano i robot in modo che eseguissero determinate azioni in serie o in parallelo in un determinato periodo di tempo) ma anche sulla base del contesto che li circonda e sull’addestramento che il robot ha ricevuto. Ad esempio, una macchina a guida autonoma, potrebbe essere addestrata a schivare un bambino che attraversa di corsa la strada a scapito di un piccolo tamponamento su altre macchine.
  • Blockchain: catena a blocchi, rete che sfrutta la potenza di calcolo dei singoli nodi di una rete piuttosto che centralizzare le informazioni all’interno di un database. Questa tipologia di rete, trattandosi di una tecnologia emergente, è ancora in continua evoluzione e porta con se alcuni vantaggi già spiegati in un precedente articolo.

Molte di queste tecnologie possono essere intrecciate all’interno di un contesto aziendale (ad esempio, posso usare gli algoritmi di intelligenza artificiale in strumenti di business intelligence, questo mi permette di fare previsioni strategiche più accurate e più complesse. Posso usare strumenti di IOT su macchinari aziendali (possono quindi raccogliere una grande quantità di informazioni sui diversi asset) e posso usare algoritmi di intelligenza artificiale per determinare, ad esempio, quando si guasterà una determinata macchina.

Per qualsiasi approfondimento sul digital transformation manager non esitate a contattarci

Fatturazione elettronica per le aziende

Dal primo Gennaio del 2019 ci sarà l’obbligo per le aziende private di inviare e ricevere la fattura elettronica.  Che cos’è effettivamente la fattura elettronica?

La fattura elettronica non è nient’altro che un file digitale con estensione xml (es, Invoice002.xml) che potrà essere emesso, trasmesso e conservato esattamente come fosse una fattura cartacea.

Per fatturazione elettronica si intende il sistema informatico in grado di permettere l’emissione, la trasmissione e la conservazione delle fatture direttamente con il sistema di interscambio dell’agenzia delle entrate (SDI).

La fatturazione elettronica (o digitale), oltre a permettere le normali operazioni che si svolgevano su una fattura cartacea, porta con sè tutti i vantaggi e le peculiarità tipiche di un sistema digitale: controllo automatizzato sulla correttezza dei dati (ad esempio se la partita IVA esiste ancora), sulla completezza dei dati (tutti i campi devono essere correttamente compilati: data documento, partita IVA, ragione sociale, importo…), sulla conformità dei dati (una partita IVA dovrà necessariamente essere riconosciuta dall’agenzia delle entrate), integrità ed inalterabilità nel tempo ed emissione da parte di un solo proprietario (grazie alla firma digitale rilasciata da un ente terzo).

La fatturazione elettronica è un sistema informatico che coinvolge diversi attori e diversi sistemi eterogenei tra loro:

  • sistema gestionale. Il sistema dovrà essere in grado di generare la fattura in formato digitale (.xml). Sicuramente il fornitore del sistema gestionale dovrà aggiornare il software in tal senso oppure fornire un tool per la conversione in xml dei dati di fattura che attualmente risiedono nel database. (esistono molti tool anche gratuiti che permettono la generazione di xml da database preesistenti).
  • Operatore economico. L’entità che emette la fattura
  • Sistema di interscambio (SDI)Il sistema di interscambio è un sistema digitale dell’agenzia delle entrate che permette di effettuare controlli sulle fatture ricevute (ogni non conformità viene segnalato con messaggi di errori standard), permette di ricevere le fatture in formato xml secondo un preciso template, permette di inoltrare le fatture ai legittimi destinatari. Il sistema di interscambio non svolge ruoli amministrativi e di conservazione delle fatture.
  • Portali HUB accreditati per la fatturazione elettronica. I portali si interpongono tra l’operatore economico ed il sistema di interscambio in modo da gestire l’interscambio, il controllo e, talvolta, anche la conservazione delle fatture per conto degli operatori economici. Non è obbligatorio ma consente alle aziende un notevole risparmio di tempo per la gestione delle fatturazione elettronica. In genere questi portali creano indirizzi univoci di destinazione delle fatture.
  • Indirizzo di destinazione. Può essere una PEC (va bene per aziende che producono una limitata quantità di fatture, infatti la PEC è soggetta ai limiti di una normale casella di posta; una volta piena allora non riceve più nulla) oppure l’indirizzo univoco nel caso ci sia un portale che fa da tramite per le fatture.

Esistono tantissimi software gratuiti o meno (a seconda delle necessità aziendali) che aiutano le aziende a produrre le fatture elettroniche.

Come responsabile informatico ritengo che questa sia una grossa opportunità di ottimizzazione dei propri processi operativi aziendali sopratutto di ciclo passivo ed attivo e le aziende dovrebbero agevolare questa innovazione anziché subirla passivamente.

Creazione blockchain privata con Ethereum (parte 1 – setup)

Con l’articolo precedente abbiamo capito come funziona la blockchain e come potrebbe cambiare in futuro internet.

Con questo articolo spieghiamo come può essere sfruttata la blockchain nell’ottica di creare applicazioni decentralizzate. Ovvero che non necessitano di un server centrale per il funzionamento.

Un progetto molto interessante è Ethereum e permette appunto la creazione di applicazioni decentralizzate di qualsiasi tipo.

Per capire fino in fondo Ethereum iniziamo a studiarlo installandone un’istanza privata.

Per installare Ethereum seguiamo queste istruzioni che ci consentiranno di installare sul nostro ambiente linux geth.

Per prima cosa generiamo un account di minatore, ovvero, colui che elaborerà l’algoritmo per creare gli ethereum coins. La creazione dell’account produrrà una coppia di chiavi (pubblica e privata). Questa coppia di chiavi viene inserita all’interno della cartella data_dir/keystore. Qualsiasi cosa di persistente verrà scritta nella cartella data_dir.

Una volta creato l’account viene mostrato a video anche l’indirizzo del nodo address_number.

#creiamo la cartella principale e la cartella 'data' nella quale viene conservata il keystore
>mkdir myown
>mkdir myown/data
#creiamo il nuovo account nella cartella creata
>geth account new --datadir /home/studio/blockchain/myown/data/
Address: {cb0f0fc732ad30b021c52e317e59122e693bb585}

blocco genesis

Ora che abbiamo l’account possiamo creare il primo blocco ethereum. Chiamato genesis. Ogni blockchain di ethereum ha il suo primo blocco genesi. Per far sì che la nostra blockchain non vada in conflitto con altre blockchain dobbiamo modificare i valori networkId di default.

#genesis.json
  {
 "config": {
 "chainId": 1999, #networkId
 "homesteadBlock": 0,
 "eip155Block": 0,
 "eip158Block": 0
 },
 "difficulty": "200000000", #valore di difficoltà applicata per la scoperta di questo blocco
 "gasLimit": "2100000", #limite di gas (ethereum) per eseguire tutte le le transazioni nel blocco
 "alloc": { #preallocazione ethereum sul primo account
 "cb0f0fc732ad30b021c52e317e59122e693bb585": { "balance": "400000" }
 }
}

inizializzazione genesis e start mining

L’operazione di mining consente la generazione di ethereum in base a calcoli matematici. Di seguito un esempio…

>geth --datadir /home/studio/blockchain/myown/data init genesis.json
INFO [03-10|10:47:41] Maximum peer count ETH=25 LES=0 total=25
INFO [03-10|10:47:41] Allocated cache and file handles database=/home/studio/blockchain/myown/geth/chaindata cache=16 handles=16
INFO [03-10|10:47:41] Writing custom genesis block 
INFO [03-10|10:47:41] Persisted trie from memory database nodes=1 size=195.00B time=75.389µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-10|10:47:41] Successfully wrote genesis state database=chaindata hash=aa6b0d…0d8207
INFO [03-10|10:47:41] Allocated cache and file handles database=/home/studio/blockchain/myown/geth/lightchaindata cache=16 handles=16
INFO [03-10|10:47:41] Writing custom genesis block 
INFO [03-10|10:47:41] Persisted trie from memory database nodes=1 size=195.00B time=58.634µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [03-10|10:47:41] Successfully wrote genesis state database=lightchaindata hash=aa6b0d…0d8207

avvio blockchain con nodo da minatore. Il mining è possibile farlo anche dalla console.

geth --mine --rpc --rpcaddr 0.0.0.0 --rpccorsdomain "*" --networkid 1999 --datadir /home/studio/blockchain/myown/data/

Initialised chain configuration config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Engine: ethash}"
INFO [03-10|10:54:03] Disk storage enabled for ethash caches dir=/home/studio/blockchain/myown/data/geth/ethash count=3
INFO [03-10|10:54:03] Disk storage enabled for ethash DAGs dir=/home/studio/.ethash count=2
INFO [03-10|10:54:03] Initialising Ethereum protocol versions="[63 62]" network=1999

colleghiamo la geth console

per collegare la geth console con il nodo di mining appena creato basta applicare il seguente script su un altro terminale

>geth --datadir /home/studio/blockchain/myown/data/ attach ipc:/home/studio/blockchain/myown/data/geth.ipc

instance: Geth/v1.8.1-stable-1e67410e/linux-amd64/go1.9.4
coinbase: 0xcb0f0fc732ad30b021c52e317e59122e693bb585
at block: 0 (Thu, 01 Jan 1970 01:00:00 CET)
 datadir: /home/studio/blockchain/myown/data
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
Welcome to the Geth JavaScript console!

in questo caso la console si connette al nodo attraverso pipe ipc (interprocesse) che funziona sul computer locale.

Dalla consolle possiamo eseguire le prime istruzioni

> eth.accounts
["0xcb0f0fc732ad30b021c52e317e59122e693bb585"]
> eth.coinbase
["0xcb0f0fc732ad30b021c52e317e59122e693bb585"]
> eth.getBalance(eth.coinbase)
2.3229485729235784806170624e+25