Commit 94da0afe authored by npedot's avatar npedot
Browse files

update with minor changesd semint-clean

parent 6b7e64b5
......@@ -61,6 +61,8 @@ Esempi di operatori generici:
Questi possono essere combinati in script per fornire soluzioni complete e personalizzate di pulizia.
## La proposta
Il nostro approccio estende quello basato su operatori:
......@@ -77,13 +79,12 @@ L'algoritm è in grado di ricercare soluzioni ottime locali nei vincoli logici d
In configurazione dell'algoritmo si userà la distribuzione dei dati esistenti nel caso di ipotesi di dato sporco a bassa frequenza oppure con una distribuzione campione pulita a cui fare riferimento arricchita da vincoli forniti dall'esperto di dominio sottoforma di formule logiche. I valori alternativi proposti saranno quindi rispettsi della distribuione statistica che dei vincoli.
## LTWN: logica espressiva e adeguamento progressivo
### LTWN: logica espressiva e adeguamento progressivo
Quello che qui proponiamo è un approccio a nostra conoscenza unico di classificatore di reti neurali arricchito da vincoli di logici fuzzy.
Statistical Relational Learning (SRL) approaches have been developed for reasoning under uncertainty and learning in the presence of data and rich knowledge.
LogicTensor Networks (LTNs) are an SRL framework which integrates neural networks with first-order fuzzy logic to allow
As presented in [Serafini] LogicTensor Networks (LTNs) are an SRL framework which integrates neural networks with first-order fuzzy logic to allow
(i) efficient learning from noisy data in the presence of logical constraints, and
(ii) reasoning with logical formulas describing general properties of the data.
......@@ -96,7 +97,6 @@ Being LTN a logic, it provides a notion of logical consequence, which forms the
LTNs where the universally-quantified formulas are computed by using an aggregation operation, which avoids the need for instantiating all variables.
The semantics for connectives is defined according to fuzzy logic; using for instancethe Lukasiewicz t-norm2:
G(¬φ) = 1−G(φ)
G(φ∧ψ) = max(0,G(φ) +G(ψ)−1)
......@@ -117,7 +117,7 @@ Adeguamento progressimo:
problema di approssimazione
problemi di reti neurali: scelta dell'algoritmo, dell'insieme di dati di allenamento e dell'embedding
## Vantaggi dei valori sfumati
### Vantaggi dei valori sfumati
Dalla certezza all'approssimazione.
[https://dizionarioautomazione.com/glossario/fuzzy-logic-logica-fuzzy/]
......@@ -127,9 +127,7 @@ L’idea di base è che una grandezza possa assumere non solo valori booleani (v
Altro beneficio della logica fuzzy è quello di riuscire a gestire con estrema facilità il cosiddetto gain-scheduling con combinazioni lineari delle situazioni note.
## LTWN e database
### LTWN e database
Possiamo usare LTWN per il passo di previsione del valore per correggere o calcolare valori incogniti.
......@@ -141,9 +139,11 @@ Possiamo usare LTWN per il passo di previsione del valore per correggere o calco
definizione dell'incognita
train & ask
## Esempi
Per capire come si svlogano i passi di traduzione di una tabella in LTWN proposiamo una serie graduale di esempi accompagnati dalle diffiltà che mettono in luce.
## Esempi applicativi
Per capire come si svlogano i passi di traduzione di una tabella in LTWN proposiamo una serie graduale di esempi pratici accompagnati dalle rispettive diffiltà che mettono in luce.
### Esempio minimale di dipendenza
......@@ -154,7 +154,7 @@ la prima tupla ha espresso esplicitamente ambo i valori come veri.
la seconda tupla ha espresso esplicitamente solo la verità per A.
Il risultato attesto per B(t2) sarà vero con una convergenza rapida, non essendovi informazioni contrastanti.
Caso di studio : [test_ldb_basic](docker/docker-ldb/ldb/test/test_basic.py)
Caso di studio dipendenza: [test_ldb_basic](docker/docker-ldb/ldb/test/test_basic.py)
### Esempio minimale categorico
......@@ -165,13 +165,16 @@ Vanno quindi introdotti vincoli di mutua esclusione per ciascuna categoria possi
Fornita una certa popolazione di allenamento possiamo chiedere ad LDB il valore di una nuova persona, secondo i valori
assunti da altri parametri, es. lavoratore, maggiorenne
Caso di studio categorico: [test_ldb_numeric](docker/docker-ldb/ldb/test/test_numeric.py)
### Esempio minimale numerico
Traduciamo un semplice archivio che descriva una feature numerica.
Supponiamo una tabella (id:stringa, età:intero(0-100), maggiorenne:booleano)
dato un primo campione di valori possiamo usare LDB quale classificatore per farci suggerire il miglior valore :
Caso di studio : [test_ldb_numeric](docker/docker-ldb/ldb/test/test_numeric.py)
Caso di studio numerico: [test_ldb_numeric](docker/docker-ldb/ldb/test/test_numeric.py)
### Esempio minimale di incosistenza
......@@ -179,14 +182,14 @@ Caso di studio : [test_ldb_numeric](docker/docker-ldb/ldb/test/test_numeric.py)
Traduciamo un semplice archivio che descriva una feature categorica ed aggiungiamo
Supponiamo una tabella (id, )
Caso di studio : [test_ldb_basic_contradiction](docker/docker-ldb/ldb/test/test_basic_contradiction.py)
Caso di studio inconsistenza: [test_ldb_basic_contradiction](docker/docker-ldb/ldb/test/test_basic_contradiction.py)
### Esempio di distribuzione
Per capire come influisca la distribuzione dei valori partiamo da una tabella in formato CSV:
Caso di studio 105 : [test_ldb_105](docker/docker-ldb/ldb/code/test_ldb_dedudb.py)
Caso di studio distribuzione 105 : [test_ldb_105](docker/docker-ldb/ldb/code/test_ldb_dedudb.py)
### Esempio di vincolo
......@@ -194,7 +197,7 @@ Caso di studio 105 : [test_ldb_105](docker/docker-ldb/ldb/code/test_ldb_dedudb.p
Verifichiamo che i vincoli logici impattino sul risultato oltre la sola distribuzione.
Introduciamo quindi un vincolo sulla distribuzione
Caso di studio : [test_ldb_constraint](docker/docker-ldb/ldb/test/test_constraint.py)
Caso di studio vincolo: [test_ldb_constraint](docker/docker-ldb/ldb/test/test_constraint.py)
### Esempio realistico semplificato
......@@ -203,32 +206,54 @@ Assumendo di partire da valori non in formato enumerato ma valori liberi di test
sarà necessario applicare ai dati sorgente dei passi di traduzione aggiuntivi.
Il primo passo è la costruzione di categorie per ciascuna colonna.
Caso di studio HoloClean hospital_10 : [test_ldb_hospital_100](docker/docker-ldb/ldb/code/test_ldb_dedudb.py)
Caso di studio HoloClean hospital_10 : [test_ldb_hospital_100](docker/docker-ldb/ldb/code/test_ldb_hospital_10.py)
* difficoltà di mapping
* difficoltà evidenziata di mapping, per ottenere una buon apprendimento l'intero record dovrebbe essere mappato in vettori reali,
per alcune tipologie di campo non è immediata questa attività.
### Esempio realistico
Caso di studio HoloClean hospital
* difficoltà di scalabilità
### Lavori futuri
Usando l'intero set di dati composto da
* Valutazione di resilienza a fronte di errori iniettati:
https://github.com/sjyk/datacleaning-benchmark
* Modulo dockerizzato.
* Esempi di uso reale.
Caso di studio HoloClean hospital: [test_ldb_hospital_100](docker/docker-ldb/ldb/code/test_ldb_hospital.py)
* difficoltà evidenziata di scalabilità, i tempi di addestramento della rete, di applicazione e l'efficacia restano ampiamente ottimizzabili.
Reuisito necessario propedeutico alla messa in prova su casi reali. Studiare ove possibile, tecniche di costruzione di una distribuzione sintetica ridotta in cardinalità a partire dai dati di origine, come la compressione (clusterizzazione) del set di dati senza perdita di informazione.
## Conclusioni
La pulizia del dato da eleborare ed analizzare è una priorità ed ua sfida
vista le diversi modi in cui può essere sporcato. Ad oggi non esistono soluzioni automatizzate.
Numerose le proposte in ricerca per le sfide. Qui abbiamo voluto proporre nello specifico una soluzione alla sostituzione di valori mancanti od errati
basata su apprendimento misto con reti neurali e regole di logica sfumata fornite da un esperto di dominio.
Gli esperimenti svolti indicano positiva applicabilità della proposta, rimangono aperte varie attività.
### Lavori futuri
* Scalabilità, rendere efficiente l'addestramento con reti più sofisticate, una programmazion orintata alle prestazioni ed efficentare l'applicazione al set reale magari a contesti di streaming.
* Interattività, fornire un modulo iterativo incrementale di raccolta
* Resilienza, valutazione della robustezza ad aumentare del carico di errori iniettati del set dati:
https://github.com/sjyk/datacleaning-benchmark
* Applicare ad esempi di uso di produzione reale.
* Estendere ad altri tipi di dato, come immagini, suoni.
----------------------------------
## Riferimenti
problema
[Data cleaning is a machine learning problem that needs data systems help!](http://wp.sigmod.org/?p=2288)
[Detecting Data Errors:Where are we and what needs to be done?](http://www.vldb.org/pvldb/vol9/p993-abedjan.pdf)
[Ganti and Sarma - 2013 - Data Cleaning A Practical Perspective](https://www.amazon.it/Data-Cleaning-Perspective-Management-2013-09-01/dp/B01JXT5HYW?SubscriptionId=AKIAILSHYYTFIVPWUY6Q&tag=duc01-21&linkCode=xm2&camp=2025&creative=165953&creativeASIN=B01JXT5HYW)
proposta
[Trends in Cleaning Relational Data: Cosistency and Deduplications, Foundations and Trends in Databases 2015](https://cs.uwaterloo.ca/~ilyas/papers/IlyasFnTDB2015.pdf)
[A formal framework for probabilistic unclean databases, ICDT, 2019](https://arxiv.org/pdf/1801.06750.pdf)
[Fuzzy logic (Logica fuzzy)](https://dizionarioautomazione.com/glossario/fuzzy-logic-logica-fuzzy/)
[Logic Tensor Networks: Deep Learning and Logical Reasoning from Data and Knowledge](https://www.researchgate.net/publication/303969790_Logic_Tensor_Networks_Deep_Learning_and_Logical_Reasoning_from_Data_and_Knowledge)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment