2010-06-03 14 views
5

Sto cercando indicazioni su quali tecniche/algoritmi dovrei ricercare per risolvere il seguente problema. Al momento ho un algoritmo che raggruppa mp3 dal suono simile usando impronte digitali acustiche. In ogni cluster, ho tutti i metadati diversi (canzone/artista/album) per ogni file. Per quel cluster, mi piacerebbe scegliere i "migliori" metadati canzone/artista/album che corrispondono a una riga esistente nel mio database, o se non c'è la migliore corrispondenza, decidere di inserire una nuova riga.Algoritmo di apprendimento automatico per la classificazione dei dati.

Per un cluster, non v'è in genere un po 'di metadati corretti, ma i singoli file sono molti tipi di problemi:

  • Artista/canzoni sono completamente misnamed, o semplicemente un po' mispelled
  • l'artista/canzone/album è mancante, ma il resto delle informazioni è lì
  • la canzone è in realtà una registrazione dal vivo, ma solo alcuni dei file nel cluster sono etichettati come tali.
  • ci può essere molto poco metadati, in alcuni casi, solo il nome del file, che potrebbe essere artista - song.mp3, o artista - album - song.mp3, o un'altra variazione

Un semplice voto funziona l'algoritmo abbastanza bene, ma mi piacerebbe avere qualcosa su cui posso allenare una grande quantità di dati che potrebbe raccogliere più sfumature di quello che ho adesso. Qualsiasi link a documenti o progetti simili sarebbe molto apprezzato.

Grazie!

+0

Grande domanda - Sono interessato a vedere cosa viene fuori qui. Mi chiedo se forse un qualche tipo di approccio per l'apprendimento delle decisioni possa aiutare a identificare la canzone "migliore" in un cluster? Ovviamente le pagine wiki sull'apprendimento non supervisionato o sull'apprendimento automatico possono darvi qualche altra ispirazione. – awshepard

+1

Prova a guardare alcune delle lezioni qui: [Corso di apprendimento automatico] (https://www.coursera.org/course/ml) poiché coprono molte tecniche applicabili. – mlepage

risposta

2

La distanza di Levenshtein è una metrica per misurare la "distanza" tra due stringhe. Conta il numero di operazioni per cambiare una stringa nell'altra aggiungendo/rimuovendo/cambiando caratteri.

È possibile utilizzare questo algoritmo per gestire gli errori di ortografia. Se due stringhe sono molto vicine, è molto probabile che si tratti di un errore ortografico.

http://en.wikipedia.org/wiki/Levenshtein_distance

3

Se ho capito bene il problema, si dispone di una tecnica esistente per dividere le canzoni, ecc, in cluster e ora desidera selezionare un "migliore" esempio del contenuto di quel cluster basato su qualunque sia il le caratteristiche di definizione sono.

Vorrei dare un'occhiata a Bayesian classifiers. Questi potrebbero aiutare a dedurre la chiave che definisce le caratteristiche di un dato cluster nei dati (supponendo che il clustering non fosse basato su una tassonomia esplicita e ben definita) oltre a fornire una certa tolleranza per rumore ed errore nei metadati o altri parametri. Quindi, a seconda della natura dei dati e dei cluster, è possibile utilizzare maximum likelihood o metodi di campionamento per determinare uno o più esempi rappresentativi da un determinato cluster.

I metodi bayesiani possono anche essere utili per dedurre dati mancanti, ad esempio valori di metadati mancanti. La distribuzione di esempio può essere utilizzata per generare valori probabili per i dati mancanti in base ai valori noti in altri campi di dati.

Problemi correlati