Ho il seguente problema e pensavo che potrei usare l'apprendimento automatico ma non sono completamente sicuro che funzionerà per il mio caso d'uso.Utilizzo dell'apprendimento automatico per deduplicare i dati
Ho un set di dati di circa cento milioni di record contenenti dati dei clienti inclusi nomi, indirizzi, email, telefoni, ecc. E vorrei trovare un modo per pulire i dati di questo cliente e identificare possibili duplicati nel set di dati.
La maggior parte dei dati è stata inserita manualmente utilizzando un sistema esterno senza convalida, quindi molti dei nostri clienti hanno finito con più di un profilo nel nostro DB, a volte con dati diversi in ogni record.
Per istanza Potremmo avere 5 voci diverse per un cliente John Doe, ognuna con diversi dettagli di contatto.
Abbiamo anche il caso in cui più record che rappresentano clienti diversi corrispondono a campi chiave come la posta elettronica. Ad esempio, quando un cliente non ha un indirizzo email ma il sistema di inserimento dati lo richiede, i nostri consulenti useranno un indirizzo email casuale, risultando in molti profili cliente diversi utilizzando lo stesso indirizzo email, lo stesso vale per telefoni, indirizzi ecc.
Tutti i nostri dati sono indicizzati in Elasticsearch e memorizzati in un database SQL Server. Il mio primo pensiero è stato di usare Mahout come piattaforma di machine learning (dato che si tratta di un negozio Java) e forse usare H-base per archiviare i nostri dati (solo perché si adatta all'ecosistema Hadoop, non è sicuro se sarà di valore reale), ma più ne leggo, più sono confuso su come funzionerebbe nel mio caso, per i principianti non sono sicuro di quale tipo di algoritmo potrei usare dal momento che non sono sicuro di dove si trova questo problema, posso usare un algoritmo di Clustering o un algoritmo di classificazione? e naturalmente alcune regole dovranno essere utilizzate per ciò che costituisce l'unicità di un profilo, cioè quali campi.
L'idea è di installarlo inizialmente come un servizio di deduplicazione dei profili cliente che i nostri sistemi di inserimento dati possono utilizzare per convalidare e rilevare possibili duplicati quando si inserisce un nuovo profilo cliente e, in futuro, svilupparlo in un piattaforma di analisi per raccogliere informazioni sui nostri clienti.
Qualsiasi feedback sarà molto apprezzato :)
Grazie.
'a volte con dati diversi in ogni record., Quindi come dovrebbe un algoritmo di apprendimento automatico trovare i duplicati? Inoltre, come fai a sapere se John Doe è la stessa persona se è stato aggiunto con quasi gli stessi dati? IMHO stai gettando buzzwords intorno e tutto ciò che serve è un modello relazionale stretto nel database dei clienti. –
@thomas È vero, sto davvero lanciando parole d'ordine, la verità è che sto cercando di entrare nei big data e ho pensato che sarebbe stata una buona opportunità per imparare, è per questo che ho detto che non sapevo se questo avrebbe funzionato . L'idea è che avrei bisogno di corrispondere su campi chiave come l'e-mail, per esempio, che rappresentano l'unicità per quanto riguarda il business, pensavo che non fosse sempre vero. Grazie per l'input però. –
Non sai quale edizione sia il tuo Sql Server ma potresti essere in grado di sfruttare le trasformazioni di pulizia dei dati in SSIS (raggruppamento fuzzy e ricerca fuzzy): http://msdn.microsoft.com/en-us/magazine/cc163731. aspx –