Prevedere l’interesse del mercato verso un prodotto o servizio.
Non è un segreto che questo sia il sogno di tutti gli imprenditori e direttori commerciali.
Essere in grado di intuire l’attenzione che un potenziale cliente ha nei confronti di ciò che vendiamo è effettivamente qualcosa di potente ed è facile intuire il perché.
Con un’ informazione di questo tipo in mano puoi creare offerte mirate, campagne di marketing e, in generale, portare al tuo cliente quello di cui ha bisogno, o che desidera, ancor prima che nella sua mente nasca il bisogno.
Il vantaggio competitivo è enorme.
Forse non te ne sei mai reso conto, o forse si. Ogni giorno sei oggetto di qualche forma di advertising più o meno mirato: quando fai acquisti in Amazon, quando navighi su Internet o usi i social, oppure quando guardi un video su YouTube.
Per caso sei in Trentino e usi Google Maps per spostarti in auto? Non mi stupirebbe sapere che da un certo momento in poi inizi a veder comparire pubblicità che decantano le bellezze delle Dolomiti e ti invitano a passare una settimana in Val di Non.
In che modo Google oppure Amazon (per fare qualche esempio) capiscono cosa potrebbe interessarti?
In questo articolo ti mostrerò con un esempio molto semplice (niente di paragonabile alla complessità dei sistemi che vengono utilizzati nella realtà) come creare una applicazione che è in grado di capire se un determinato prodotto è appetibile o meno per un cliente.
IN QUESTO ARTICOLO
Prima di iniziare
In questo tutorial utilizzeremo 2 componenti che puoi trovare gratuitamente nell’ambiente Oracle Cloud.
Il primo è Oracle APEX, uno dei più potenti framework di sviluppo low-code, di cui puoi trovare tantissimi articoli in questo blog.
Il secondo è OML (Oracle Machine Learning), il motore di Machine Learning che Oracle mette a disposizione direttamente all’interno dell’Autonomous Database.
Quindi per completare questo esercizio potrebbe essere necessario creare un account Always Free su Oracle Cloud.
In particolare, sto utilizzando un esempio pratico che Oracle mette a disposizione di tutti attraverso questo workshop.
Qui sotto riporto alcune delle funzionalità ed algoritmi che OML mette a disposizione di Data Scientist e sviluppatori in generale.

Il tema del Machine Learning è molto complesso e di certo non ho la pretesa di sviscerarlo in questa sede.
Oggi desidero spiegarti come muovere i primi passi con gli strumenti che Oracle mette a disposizione di chi vuole creare applicazioni che implementano algoritmi di Machine Learning.
Tuttavia, ammetto che è davvero affascinante e sono convinto (come lo sono in tanti del settore e non solo) che già adesso e ancor di più nei prossimi anni, diventerà una componente sempre più importante nella vita di tutti i giorni, così come nelle realtà aziendali che desiderano rimanere competitive sul mercato.
Detto questo, non rimane che iniziare.
Descrizione del Problema
Supponiamo di essere un’ azienda che produce e vende prodotti di elettronica di largo consumo, in particolare una console per videogames chiamata “Y Box Games”.
Il lancio sul mercato della console è stato buono e sono state registrare vendite discrete, tuttavia crediamo di poter ottenere risultati migliori.
Per questo motivo, il marketing e la direzione commerciale vorrebbero pianificare una campagna pubblicitaria e, allo stesso tempo, identificare all’interno del CRM aziendale tutti quei clienti che non hanno ancora acquistato la nostra console e che potenzialmente sarebbero interessati a farlo.
Il problema è capire quali siano i clienti potenzialmente interessati al nostro prodotto, cosa non affatto banale.
Certo, ci possiamo rivolgere ad una società che di mestiere fa indagini di mercato oppure, possiamo sfruttare un motore di Machine Learning!
Cosa significa fare una previsione usando il Machine Learning

Lo so cosa pensi.
Da qualche parte, magari nel cloud, esiste uno “stupendo super computer in grado di calcolare la risposta alla Vita, all’Universo e Tutto Quanto“, vero?
Mi dispiace deluderti: non è così (anche se l’idea, ammetto, è affascinante).
In un certo senso la questione è più semplice e non ci servirà scomodare Pensiero Profondo per risolverla.
Non volendo banalizzare troppo (mi perdoneranno gli esperti del settore), un motore di machine learning è un sistema informatico che viene addestrato con un set di dati di input e di output noti affinché sia poi in grado di prevedere un risultato.
Creare un sistema di apprendimento automatico consiste nel reiterare le seguenti 3 attività:
- definire un modello predittivo
- addestrare il modello predittivo con dei dati noti (input e output sono conosciuti)
- testare il modello predittivo per verificare quanto i risultati stimati differiscono da quelli reali e di conseguenza raffinare il modello predittivo
Definire il modello predittivo
Facciamo un esempio pratico.
Supponiamo di voler creare un programma in grado di stimare il valore di una casa, ma non sappiamo esattamente quali sono i parametri che determinano questo valore.
Possiamo fare delle ipotesi: ad esempio sappiamo che il valore di una casa dipende dalla sua superfice, ma anche da numero di stanze, da quanti piani è costituita e dalla città dove si trova (una casa in centro a Milano a parità di superfice sarà molto più costosa di un analogo appartamento nella periferia di Quarto Oggiaro).
Decidere quali sono i parametri da prendere in considerazione per stimare il valore di una casa è una parte importante nel processo di definizione del modello.
Questi dati devono poi essere dati in pasto ad un algoritmo che è in grado di trovare una correlazione tra gli attributi che abbiamo scelto e gli attributi che vogliamo prevedere (il valore della casa).
Scegliere pochi parametri significherà creare un modello poco accurato: ad esempio, se scegliessimo come unico attributo per determinare il valore di una casa la sua superficie potremmo ottenere come risultato che un attico a New York di 200 mq è più economico di un appartamento di 250 della periferia di Macerata. Per quanto adori quest’ultima, questo è ovviamente un paragone impossibile almeno ad oggi.
D’altro canto scegliere attributi non pertinenti oppure poco significativi, potrebbe istruire male il sistema.
Ad esempio, il colore del portone d’ingresso non dovrebbe influire molto sul valore di un immobile, quindi non ha senso prenderlo in considerazione rischiando di attribuire a questo parametro un peso significativo.
Addestrare il modello predittivo
Supponiamo di avere un database che riporta l’elenco di tutti gli immobili che sono stati venduti con il loro valore di mercato. Per ciascun immobile sappiamo anche quali sono tutte le sue caratteristiche più significative.
La prima cosa da fare è dividere i dati in due gruppi:
- Training Data Set
- Testing Data Set
Per il momento prendiamo in considerazione solo il Training Data Set. Per ciascun record di questo insieme dovremo specificare quali informazioni rappresentano un input (superfice in mq, numero di stanze, numero di bagni, presenza del garage, ecc.) e quali informazioni rappresentano un output, ossia il valore della casa.
Il sistema, dopo aver confrontato i parametri in input e quelli in output, restituirà una funzione matematica ottenuta correlando le due informazioni.
A questo punto prendiamo il Testing Data Set e diamolo in pasto al motore di machine learning facendogli calcolare in questo caso l’output.
Lo scostamento tra il valore ottenuto attraverso la funzione e il risultato atteso ci fa capire quanto il sistema è addestrato e ci permetterà di aggiustare il modello qualora lo scostamento sia eccessivo.
Questa fase di addestramento e testing rappresenta il cuore di questo lavoro, nonché secondo me, la parte più bella ed affascinante.
La funzione predittiva sarà tanto più accurata quanti più saranno i dati che gli daremo da elaborare, ma anche quanto più corretto è il modello che abbiamo utilizzato.
Eseguire il modello predittivo
Dopo aver definito il modello e dopo averlo addestrato a sufficienza, possiamo finalmente usarlo per stimare il valore di un immobile qualsiasi.
Basterà dare in pasto alla funzione i parametri necessari (la superficie, il numero di stanze, la città, ecc.) ed otterremo un valore stimato.
Prevedere l’interesse verso un prodotto o un servizio
Sperando di non aver creato troppa confusione, adesso dovrebbe esserti più chiaro l’approccio che useremo per risolvere il nostro problema.
Soffermiamoci prima di tutto sui dati che abbiamo a disposizione
- il database dei clienti: clienti ai quali abbiamo già venduto la console Y Box Games oppure altri prodotti del nostro catalogo, oppure utenti che si sono registrati al nostro portale e per i quali abbiamo collezionato una serie di informazioni (non solo nome e cognome, ma anche l’età, la professione, la città di residenza, ecc…)
- lo storico di vendite della console Y Box Games
Quello che faremo consisterà nel prendere il database dei clienti che hanno acquistato o no una Y Box Games e dividere questi dati in due insiemi: training set e testing set.
Dopodiché, costruiremo un modello predittivo che metta in correlazione le caratteristiche dei clienti (dati in input) con il fatto che hanno già acquistato la nostra bellissima console.
Testeremo il modello ed infine utilizzeremo la funzione predittiva ottenuta per individuare tra tutti quei clienti che ancora non hanno acquistato il nostro prodotto quelli che potenzialmente potrebbero essere interessati.
Questi sono i clienti che per primi dovranno essere contattati per proporre loro l’acquisto del prodotto.
STEP 1: Crea una applicazione in APEX
Per poter fare questo esercizio avremo bisogno di una applicazione che ci permetta di visualizzare le informazioni relative a cliente e vendite. Cliccando a questo link puoi scaricare l’installer dell’applicazione APEX che andremo ad usare.
In alternativa puoi guardare questo workshop Oracle dal quale ho recuperato l’esempio che ti sto spiegando.
L’applicazione gestisce diversi tipi di informazioni, in particolare queste:
- CUSTOMERS: anagrafica dei clienti
- SUPPLEMENTARY_DEMOGRAPHICS: questa tabella include alcune informazioni demografiche aggiuntive come il fatto che sia già stato acquistato un determinato prodotto, l’occupazione, il livello di istruzione, ecc.
- PRODUCTS: l’anagrafica prodotti
- SALES: lo storico delle vendite
Per installare l’applicazione segui i seguenti passaggi:
- Scarica l’installer della APP Customer Service App e scompatta il file sul PC
- Accedi all’APP Builder di Oracle APEX e seleziona Import

- Seleziona il file f100_install.sql da caricare e clicca Next

- Lasciando sempre i parametri di default, clicca Next. Quando arrivi alla schermata Install Database Application clicca Install Application.

- Seleziona l’opzione Install Supporting Objects e clicca Next

- Clicca Install

- Se la procedura di installazione viene completata con successo dovresti vedere questa finestra di conferma. Clicca su Run Application.

- Inserisci le credenziali che usi per collegarti al workspace e clicca Sign In

L’applicazione è di per se molto semplice e minimale.
Consiste in una sola pagina, realizzata attraverso un Interactive Report, che mostra un elenco di clienti, una sorta di CRM molto basic.
I dati che vedi sono messi a disposizione direttamente da Oracle in ATP.

Il nostro obiettivo è quello di proporre il nostro prodotto a dei clienti potenzialmente interessati.
Per far vedere alla rete commerciale quali sono i clienti target, andremo ad implementare una colonna aggiuntiva che mostrerà la probabilità stimata che quel cliente sia interessato al nostro prodotto.

STEP 2: Configura Oracle Machine Learning
Per poter sviluppare un modello di Machine Learning con il database di Oracle è utile utilizzare Zeppelin.
Zeppelin è un framework web-based, disponibile direttamente all’interno dell’Autonomous Database, che permette di creare dei Notebook, ossia dei contenitori che racchiudono tutte le istruzioni che devono essere eseguite dal database per eseguire il programma di Machine Learning in ambiente Oracle.
- Accedi all’ambiente Autonomous Database e clicca su Service Console

- Vai in Amministrazione e clicca su Gestisci Utenti Oracle ML

- Da questa console puoi amministrare gli utenti che possono accedere ad OML. Clicca su Crea Utente.

Specifica i parametri dell’utente
- Username: ml_demo
- First Name: Machine Learning
- Last Name: User
- Email Address: inserisci la tua email
- Password: inserisci una password

- Il nuovo utente è stato creato

- Sempre dalla Service Console del database, clicca su Sviluppo > Notebook Oracle Machine Learning
- Inserisci Username e Password che hai definito poco fa e clicca su Accedi

- Dall’home page di OML puoi navigare diverse funzionalità, tra cui esplorare una serie di esempi di modelli già pronti. Clicca su Esempi.

- Se lo desideri puoi guardare come sono stati creati i Notebook di esempio. Per questo esercizio ne creeremo uno del tutto nuovo.

- Clicca sul menù nella barra degli strumenti

- Clicca su Notebook

- Clicca su Crea

- Dai un nome al Notebook che stai creando e premi OK

- Bene, hai creato il tuo primo Notebook. In questo momento è ancora una scatola vuota, che dovremo riempire con le operazioni che servono per costruire il modello previsionale.

STEP 3: Costruisci il modello di machine learning usando Zeppelin
Prima di mettere le mani in pasta con OML, vale la pena fare una precisazione.
Costruire un modello di machine learning in OML significa concatenare una serie di operazioni di lettura dati, scrittura e manipolazione dei dati.
In un Notebook OML ciascuna operazioni viene indicata in un Paragraph che può contenere diversi tipi di istruzioni. Ad esempio all’interno di un paragrafo puoi importare librerie Python (che è supportato in OML), eseguire query sul database e salvare i dati in tabelle di staging, eseguire script PLSQL
Ti spiegherò come usare OML in una serie di articoli dedicati. Puoi comunque fare riferimento alla questa guida.
Per il momento, limitati a seguire i passaggi che ti spiego.
- Apri il Notebook OML che abbiamo creato che, in questo momento, è ancora una tela bianca

La prima operazione che implementeremo è una semplice lettura di dati con una query SQL.
A cosa serve? Ti chiederai..
Devi pensare che stiamo lavorando in Zeppelin, un vero e proprio framework di sviluppo di programmi di Machine Learning, quindi è plausibile pensare che un programmatore possa aver bisogno di una funzionalità che gli permetta di vedere i dati che deve analizzare.
Se, ad esempio, tu usassi KNIME, potrebbe essere un nodo di tipo Database Reader.
Pertanto questa operazione non è una istruzione di Machine Learning in senso stretto. Piuttosto è un modo che hai a disposizione per vedere in tempo reale i dati che il programma andrà a manipolare.
- Copia la seguenti query
SELECT * FROM SH.SUPPLEMENTARY_DEMOGRAPHICS
- Inserisci la query nel primo paragrafo del Notebook e premi Execute

- Attendi qualche secondo e dovresti vedere i risultati dell’operazione

La tabella SUPPLEMENTARY_DEMOGRAPHICS che stiamo utilizzando è molto utile per i nostri bisogni.
Essa riporta, per ogni cliente (identificato dall’attributo CUST_ID) diverse informazioni, non solo il fatto che abbia acquistato la nostra console: il grado si istruzione, l’occupazione, il fatto che possieda o meno altri prodotti.
Ecco la descrizione di alcuni di questi attributi
- EDUCATION, grado di istruzione
- OCCUPATION, occupazione
- HOUSEHOLD_SIZE, numero dei componenti familiari
- YRS_RESIDENCE
- AFFINITY_CARD: flag che indica se il cliente possiede una carta di credito affinity
- Y_BOX_GAMES: flag che indica se il cliente ha già acquistato una console Y Game Box
- FLAT_PANEL_MONITOR: flag che indica se il cliente possiede un monitor
- HOME_THEATER_PACKAGE
- BOOKKEEPING_APPLICATION: flag che indica se il cliente ha installato l’APP mobile per gli acquisti on-line
- PRINTER_SUPPLIES
- OS_DOC_SET_KANJI
La domanda è: sono tutte informazioni che servono?
La risposta è: forse, non possiamo (e non ha senso) deciderlo a priori
Una delle cose più affascinanti del machine learning è anche la sua capacità di trovare correlazioni tra i dati che forse non sono visibili a prima vista.
Determinare quali sono gli attributi più significativi (ricordi l’esempio della casa) è l’obiettivo del Data Scientist che grazie alla potenza del Machine Learning è in grado di fare emergere queste relazioni.
Prepara i data set (training e testing)
Separiamo i dati in due gruppi: il primo set di dati (60% del totale) verrà utilizzato come training set per la restante parte (40%) come testing set
- Copia i seguenti script
/* table for TRAINING data */
CREATE TABLE N1_TRAIN_DATA AS SELECT * FROM SH.SUPPLEMENTARY_DEMOGRAPHICS SAMPLE (60) SEED (1);
/* table for TESTING data */
CREATE TABLE N1_TEST_DATA AS SELECT * FROM SH.SUPPLEMENTARY_DEMOGRAPHICS MINUS SELECT * FROM N1_TRAIN_DATA;

Definisci i parametri del programma di ML
Il modello previsionale che stiamo costruendo cercherà di intuire quali relazioni esistono tra gli attributi in input (le colonne della tabella SUPPLEMENTARY_DEMOGRAPHICS) e l’attributo che vogliamo prevedere (la colonna Y_BOX_GAMES della stessa tabella).
La determinazione di queste relazioni avviene durante la fase di training del modello. Un modello di Machine Learning per poter funzionare necessita di avere in input, oltre ai dati di training, anche dei parametri che normalmente vengono gestiti attraverso una tabella di database.
Questa tabella può avere qualsiasi nome e potrà essere usata per gestire diversi parametri. In questo esercizio andremo a specificare un solo parametro, ovvero il tipo di algoritmo da usare che nel nostro caso sarà un Albero Decisionale.
- Copia gli script seguenti ed inseriscili nel Notebook
/* script per creare la tabella dei parametri*/
CREATE TABLE N1_BUILD_SETTINGS (SETTING_NAME VARCHAR2(30), SETTING_VALUE VARCHAR2(4000));
/* script per alimentare la tabella dei parametri*/
INSERT INTO N1_BUILD_SETTINGS (SETTING_NAME, SETTING_VALUE) VALUES ('ALGO_NAME', 'ALGO_DECISION_TREE');

Esegui il modello
Bene, siamo arrivati al punto cruciale. Adesso possiamo finalmente eseguire il modello predittivo.
- Copia il seguenti script ed inseriscilo nel Notebook ed eseguilo
CALL DBMS_DATA_MINING.CREATE_MODEL('N1_CLASS_MODEL', 'CLASSIFICATION', 'N1_TRAIN_DATA', 'CUST_ID', 'Y_BOX_GAMES', 'N1_BUILD_SETTINGS');

Cosa abbiamo fatto esattamente?
Abbiamo eseguito il modello. Durante l’esecuzione della procedura DBMS_DATA_MINING.CREATE_MODEL il database legge i dati di training (salvati nella tabella N1_TRAIN_DATA per eseguire una classificazione predivvita
Ecco una descrizione sintetica dei parametri in ingresso alla procedura:
- N1_CLASS_MODEL: Il nome che vogliamo dare al modello. Può essere quello che preferisci. Tieni a mente che sarà un vero e proprio oggetto salvato nel database quindi se vuoi eliminarlo devi eseguirne il drop con la seguente istruzione: CALL DBMS_DATA_MINING.DROP_MODEL(‘N1_CLASS_MODEL’);

- CLASSIFICATION: specifica se stiamo eseguendo un algoritmo di regressione o di classificazione. In questo caso stiamo facendo una classificazione perché vogliamo fare una previsione su un dato.
- N1_TRAIN_DATA: la tabella che contiene i dati per il training dell’algoritmo.
- CUST_ID: la colonna chiave primaria della tabella di training
- Y_BOX_GAMES: la colonna target della previsione.
- N1_BUILD_SETTINGS: il nome della tabella che contiene i parametri dell’algoritmo. Nel nostro caso abbiamo un solo parametro che è il tipo di modello da usare, ossia un Albero Decisionale.
STEP 4: Valida i risultati e la qualità del modello
Validare il modello predittivo significa verificare quanto è in grado di fare una predizione corretta.
Per fare questa misurazione utilizzeremo in testing data set e, più precisamente, andremo a misurare la percentuale dei casi in cui riesce a fare una previsione corretta dell’attributo Y_BOX_GAMES.
Il nostro modello non conosce questi record (per addestrarlo abbiamo usato un data set diverso, salvato nella tabella N1_TRAIN_DATA) quindi se riesce a fare delle previsioni corrette, significa che è un modello corretto.
- Aggiungiamo alla tabella N1_TEST_DATA una colonna dove andremo a salvare la previsione
ALTER TABLE N1_TEST_DATA ADD Y_BOX_GAMES_PRED NUMBER(1);
- Esegui la previsione sui dati di test usando tutti gli attributi (*) del modello N1_CLASS_MODEL
UPDATE N1_TEST_DATA SET Y_BOX_GAMES_PRED = PREDICTION(N1_CLASS_MODEL USING *);

- Per vedere i risultato esegui la seguenti query
SELECT CUST_ID, Y_BOX_GAMES, Y_BOX_GAMES_PRED FROM N1_TEST_DATA;

- Per vedere la percentuale di valori predetti correttamente puoi usare questa query
SELECT TO_CHAR(((SELECT COUNT(*) FROM N1_TEST_DATA WHERE Y_BOX_GAMES = Y_BOX_GAMES_PRED)
/ (SELECT COUNT(*) FROM N1_TEST_DATA)) * 100, '999.99') CORRECT_PRED_PERCENTAGE FROM DUAL;

Come puoi vedere, l’accuratezza del modello è del 90%, il che è un buon risultato.
Forse ti starai chiedendo se bisogna raggiungere il 100%, vero?
Voglio essere sincero con te, la risposta è no. Non ha senso, per diversi motivi.
Il primo è che per quanti sforzi tu possa compiere, pensare di creare un modello predittivo affidabile al 100% è sostanzialmente impossibile.
Inoltre c’è da dire che creare un modello troppo esatto potrebbe essere controproducente perché soffrirebbe di Overfitting.
Un altro modo per misurare la bontà del modello è la Matrice di Confusione.
- Inserisci questa query nel Notebook
SELECT Y_BOX_GAMES, Y_BOX_GAMES_PRED, COUNT(*)
FROM N1_TEST_DATA GROUP BY Y_BOX_GAMES, Y_BOX_GAMES_PRED ORDER BY 1, 2;

Scorrendo dall’alto puoi vedere il numero di:
- veri negativi
- falsi positivi
- falsi negativi
- veri positivi
Lo scopo di fare questo lavoro di misurazione dovrebbe farti capire se il modello che hai creato è robusto ed affidabile oppure no. Magari devi usare un algoritmo diverso oppure effettuare elaborazioni più complesse che non tratterò in questo articolo.
Assumiamo pertanto che il modello predittivo che abbiamo creato sia buono per la nostre esigenze. Ottenuto questo risultato possiamo dire che per il momento il modello predittivo è pronto e che non necessita di ulteriori modifiche.
Ora, possiamo utilizzare questo modello per eseguire le previsioni.
STEP 5: Esegui la previsione
Quindi? Come vediamo il risultato di cotanto lavoro?
Possiamo eseguire la previsione in diversi modi.
- Modalità Batch: quando vogliamo (ad esempio con un processo schedulato) generiamo una predizione per tutti i clienti
- Modalità Real Time: interroghiamo il modello quando serve chiedendo una previsione per il cliente specifico
In questo esempio utilizzerò il primo metodo, andando a salvare tutti i dati in una tabella creata ad hoc.
- Esegui lo script seguente nel Notebook OML
CREATE TABLE CUST_PREDICTION AS
SELECT CUST_ID, PREDICTION(N1_CLASS_MODEL USING *) PREDICTION,
PREDICTION_PROBABILITY(N1_CLASS_MODEL USING *) PRED_PROBABILITY
FROM SH.SUPPLEMENTARY_DEMOGRAPHICS WHERE Y_BOX_GAMES = 0;
I risultati che andiamo a salvare nella tabella CUST_PREDICTION potranno essere successivamente aggiornati (questo perché nel tempo vengono censiti o aggiornate le informazioni dei clienti nella tabella SUPPLEMENTARY_DEMOGRAPHICS) con un batch schedulato, cosa che non vedremo adesso.
Per completare il lavoro hai bisogno di dare i grants all’utente del database che Oracle APEX utilizza per collegarsi al database.
- Esegui questo script direttamente dal Notebook dove devi sostituire <apex_workspace> con il nome del workspace APEX
grant select on cust_prediction to <apex_workspace>;

STEP 7: Visualizza i dati predittivi in APEX
- Collegati al workspace Oracle APEX dove hai installato l’applicazione che hai creato nello STEP 1
- Vai in SQL Workshop > Views e cerca la vista database CUSTOMER_V

- Andiamo a modificare la definizione della vista aggiungendo 2 colonne:
- y_box_x_interest_prediction: un valore che esprime la percentuale di interesse verso il prodotto Y Box Games prevista
- comments_interest_prediction: un commento generato automaticamente
- Clicca su SQL Workshop > SQL Commands

- Esegui il seguente script
create or replace view "CUSTOMER_V" as
select "CUST_ID", "CUST_FIRST_NAME", "CUST_LAST_NAME",
"CUST_GENDER", "CUST_YEAR_OF_BIRTH", "CUST_MARITAL_STATUS",
"CUST_STREET_ADDRESS", "CUST_POSTAL_CODE", "CUST_CITY",
"CUST_CITY_ID", "CUST_STATE_PROVINCE", "CUST_STATE_PROVINCE_ID",
"COUNTRY_ID", "CUST_MAIN_PHONE_NUMBER", "CUST_INCOME_LEVEL",
"CUST_CREDIT_LIMIT", "CUST_EMAIL", "CUST_TOTAL",
"CUST_TOTAL_ID", "CUST_SRC_ID", "CUST_EFF_FROM",
"CUST_EFF_TO", "CUST_VALID",
( select to_char(p.pred_probability * 100, '999D99') || '%' from oml.cust_prediction p
where p.cust_id = c.cust_id and p.prediction = 1) y_box_x_interest_prediction,
( select c.cust_first_name || ' is ' || to_char(p.pred_probability * 100, '999D99')
|| '% likely to be interested in Y Box Games'
from oml.cust_prediction p where p.cust_id = c.cust_id
and p.prediction = 1) comments_interest_prediction
from sh.customers c
- Accedi all’APP Builder e seleziona la pagina Customers

- Seleziona l’Interactive Report Customers

- Modifica la definizione del report inserendo le due nuove colonne
select "CUST_ID",
"CUST_FIRST_NAME",
"CUST_LAST_NAME",
"CUST_GENDER",
"CUST_YEAR_OF_BIRTH",
"CUST_MARITAL_STATUS",
"CUST_STREET_ADDRESS",
"CUST_POSTAL_CODE",
"CUST_CITY",
"CUST_CITY_ID",
"CUST_STATE_PROVINCE",
"CUST_MAIN_PHONE_NUMBER",
"CUST_EMAIL",
"Y_BOX_X_INTEREST_PREDICTION",
"COMMENTS_INTEREST_PREDICTION"
from "#OWNER#"."CUSTOMER_V"
order by cust_id

- Esegui l’applicazione e cerca il cliente CUST_ID=100111
- L’applicazione mostra la percentuale di interesse potenziale che quel cliente avrebbe nell’acquisto del prodotto. Questo è un cliente che andrebbe contattato il prima possibile perché probabilmente vorrà acquistare la nostra splendida console

Conclusioni
Beh, che dire.
Quello che stai leggendo è in assoluto uno degli articoli più lunghi di appin5minuti.it ma ci tenevo a mostrarti come puoi ottenere un risultato davvero notevole con una applicazione APEX correttamente integrata con OML.
I progressi compiuti nel campo della ricerca e della tecnologia consentono a chiunque abbia le giuste competenze tecniche di studiare, testare e costruire dei modelli di machine learning che possono risolvere problemi reali e sempre più complessi.
In questo senso, credo che investire nella formazione legata alla Data Science sia davvero una scelta strategica. Siamo nell’era dei Big Data, le aziende accumulano nei propri sistemi terabyte di dati e spesso non sanno ancora come trarne un reale vantaggio competitivo.
Grazie al Machine Learning, invece, potrebbero usare gli stessi dati per generare nuova informazione ed acquisire un vantaggio che la business intelligence da sola non può dare.
E tu, che ne pensi?
Un abbraccio
Daniele
Lascia un commento