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

medium economic 1 day

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.

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

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
Continua a leggere Analisi dei processi aziendali: un esempio su come iniziare un progetto informatico

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.

Continua a leggere Digital Transformation Manager

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.

Continua a leggere Fatturazione elettronica per le aziende

Creazione blockchain privata con Ethereum (parte 1 – setup)

hard economic 2 days

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