Filtro bayes e archiviazione dati con set di dati estesi

4

Sto cercando di scrivere un filtro di Bayes che fungerà da indicatore di argomento per un numero di argomenti con un numero variabile di fonti. Dato un numero molto elevato di feed RSS e qui davvero grandi potrebbero essere solo alcune centinaia solo pochi percento (diciamo il 2%) sono interessanti per un determinato gruppo.

Quello che voglio scrivere (in PHP) è un filtro che posso addestrare per dire che questo è Argomento X e non lo è. Quindi voglio che gli utenti selezionati siano in grado di addestrare ulteriormente il filtro. Ma voglio usare solo la formazione di base per selezionare gli argomenti da contrassegnare come interessanti per Topic X e quindi perfezionare quella raccolta basata sull'addestramento che l'utente ha fornito per fornire i risultati più interessanti per quell'utente rivalutando le probabilità incluso l'addestramento fornito dall'utente nella short list per utente. O magari segnando la short list e selezionando gli elementi "migliori" da mostrare per primi.

Quindi col tempo riuscirò a ottenere una raccolta di dati abbastanza ampia (tutti i titoli e gli scatti di centinaia di feed) e avrò contrassegnato gli elementi del feed "sì" e "no" su un numero non specificato di argomenti e hanno avuto anche utenti così.

Il titolo e il blurb verranno archiviati per una facile visualizzazione in seguito, ma non voglio tenere troppi elementi che sono "no" (fino al 98% immagino). Dato che vado con, diciamo, questa implementazione da GitHub che ho trovato in precedenza oggi link (o si può parlare con il mio) cosa è il modo più efficiente per archiviare i dati necessari per eseguire una valutazione? Sto chiedendo dei problemi se semplicemente provassi a memorizzare i titoli delle notizie, ecc. "Sì", ma memorizzassi una sorta di riassunto per le valutazioni di base "no" e poi risolvilo appena al volo memorizzando il risultato "sì".

Il server con cui devo lavorare sta già facendo un buon lavoro e per questo non mi risparmierà molto.

Quindi il bilanciamento dell'efficienza e dello storage richiede qualcosa che consiglio?

    
posta Matthew Brown aka Lord Matt 30.03.2013 - 01:32
fonte

2 risposte

1

Non sarebbe più efficiente memorizzare perché è sì piuttosto che la ragione di no? Oppure no, perché il filtro sta fondamentalmente controllando per vedere se condivide qualsiasi attributo con un no piuttosto che confrontarsi con yess ...

Quindi, se ti capisco correttamente, vuoi memorizzare sia i dati sia un elenco per ciascuno dei motivi per cui non è un membro di un argomento specifico? Forse dovresti archiviarlo in un database relazionale come MySQL. Potresti avere una tabella principale contenente i riepiloghi e una tabella per ciascuno contenente i motivi per cui non è, collegata al primario su un id come chiave primaria. Probabilmente il testo completo dei dati sarebbe meglio conservato in un file di testo o in altro modo al di fuori del database, a meno che non si intenda effettuare ricerche all'interno di esso direttamente.

Spero che questo aiuti e non ho completamente frainteso quello che stai chiedendo.

    
risposta data 07.04.2013 - 18:45
fonte
1

I filtri di Bayes devono essere insegnati. L'attività di insegnamento del filtro è un'operazione pesante, ma deve essere eseguita solo una volta. Successivamente, testare un articolo contro un filtro Bayes è molto efficiente. Devi solo rianalizzare il filtro se la popolazione degli articoli accettati / rifiutati cambia abbastanza da alterare il risultato dei filtri.

Insegnare un filtro che funziona già, aggiungendo più parole chiave, fa poco per migliorare il filtro a meno che le nuove parole introdotte non siano significative nella popolazione.

Non è necessario memorizzare i dati per parole con soglie basse (ad esempio 0,00001%). Dal momento che sono più probabilmente una singola occorrenza della parola.

Per memorizzare il filtro nel database. Vorrei convertire i risultati statistici del filtro in JSON e salvarlo semplicemente in un campo text del database. Per testare un articolo contro il filtro basta caricare i dati e serializzarli su un array PHP.

Una volta che hai insegnato il filtro Bayes con i tuoi articoli campione. Puoi distruggere quegli articoli, ma se vuoi in seguito ri-insegnare potresti averne bisogno di nuovo.

Col tempo, avrai falsamente rifiutato articoli e articoli falsamente accettati. Dovrai tenerne traccia, quindi ridistribuirli e insegnare nuovamente il filtro Bayes.

I filtri di Bayes sono efficaci solo con articoli che sono significativamente diversi dal resto della popolazione. Piuttosto che categorizzarli come dentro o fuori una categoria. Dovrai weigh la loro appartenenza a una categoria. Un articolo può essere dell'80% circa gun control , 20% circa gun registry e 45% circa tax fraud . Mentre questo potrebbe sembrare che l'articolo sia per lo più su gun control . Potrebbe essere circa tax fraud semplicemente perché il tuo filtro non è stato insegnato abbastanza sull'argomento.

    
risposta data 07.05.2013 - 20:39
fonte

Leggi altre domande sui tag