Domanda

Sto pensando di sviluppare il programma in Java che fornirà la diagnosi. Il set di dati è diviso in due parti una per la formazione e l'altro per il test. Il mio programma dovrebbe imparare a classificare in base ai dati di addestramento (BTW che contengono risposta per 30 domande ciascuno in nuova colonna, ogni record nella nuova linea nell'ultima colonna sarà diagnosi 0 o 1, nella parte sperimentazione di colonna di diagnosi dei dati sarà vuota - insieme di dati contiene circa 1000 record) e quindi fare previsioni in test una parte dei dati: /

Non ho mai fatto nulla di simile quindi mi rendo conto qualche consiglio o informazioni su soluzione al problema simile.

Stavo pensando a Java Machine Learning Libreria o Java Data Mining pacchetto ma non sono sicuro se è giusto senso ...? e io non sono ancora sicuro di come affrontare questa sfida ...

Si prega di avvisare.

Tutto il meglio!

È stato utile?

Soluzione

Ciao Come diceva Gann Bierner, questo è un problema di classificazione. Il miglior algoritmo di classificazione per le vostre esigenze che conosco è, algoritmo di Ross Quinlan. E 'concettualmente molto facile da capire.

Per le implementazioni off-the-shelf degli algoritmi di classificazione, la cosa migliore è Weka. http://www.cs.waikato.ac.nz/ml/weka/. Ho studiato Weka ma non utilizzati, come ho scoperto un po 'troppo tardi.

Ho usato un'implementazione molto più semplice chiamato JadTi. Funziona abbastanza bene per i set di dati più piccoli come la vostra. L'ho usato un bel po ', in modo da poter tranquillamente dire così. JadTi si possono trovare all'indirizzo:

http: //www.run.montefiore.ulg. ac.be/~francois/software/jaDTi/

Detto questo, la vostra sfida sarà la costruzione di un'interfaccia utilizzabile su web. Per fare ciò, il set di dati sarà di uso limitato. I set di dati fondamentalmente funziona sul presupposto che avete già il training set, e si alimentano il nuovo set di dati di test in un solo passaggio, e si ottiene la risposta (s) immediatamente.

Ma la mia domanda, probabilmente anche la vostra, è stato un passo per la scoperta utente passo, con le caratteristiche per andare avanti e indietro sui nodi dell'albero decisionale.

Per costruire una tale domanda, ho creato un documento PMML dal mio training set, e costruito un motore Java che attraversa ogni nodo dell'albero chiede all'utente di dare un input (testo / radio / lista) e utilizzare i valori come input per il successivo nodo predicato possibile.

Lo standard PMML può essere trovato qui: http://www.dmg.org/ Qui è necessario l'TreeModel unica. NetBeans XML Plugin è un buon editor schema-aware per PMML authoring. Altova XML può fare un lavoro migliore, ma i costi $$.

E 'anche possibile utilizzare un RDBMS per memorizzare il set di dati e creare la PMML automagicamente! Non ho provato questo.

Buona fortuna con il vostro progetto, non esitate a farmi sapere se avete bisogno di ulteriori ingressi.

Altri suggerimenti

Vi consiglio caldamente di utilizzare Weka per il vostro compito
La sua una collezione di algoritmi di apprendimento automatico con un'user friendly front-end che facilita un sacco di diversi tipi di funzionalità e di selezione del modello strategie
Si può fare un sacco di cose davvero complicate utilizzando questo senza realmente dover fare alcuna codifica o la matematica
I creatori hanno anche pubblicato un abbastanza bene libro di testo che spiega gli aspetti pratici del data mining
Una volta a ottenere il blocco di esso, è possibile utilizzare le sue API per integrare qualsiasi dei suoi classificatori nei propri programmi Java

Ci sono vari algoritmi che rientrano nella categoria di "machine learning", e che è giusto per la vostra situazione dipende dal tipo di dati che si sta trattando.

Se i dati consiste essenzialmente di mappature di una serie di domande a un insieme di diagnosi ciascuna delle quali può essere sì / no, allora penso metodi che potrebbero potenzialmente funzionare includono reti e metodi neurali per la costruzione automatica di un albero di decisione basata su i dati del test.

mi piacerebbe avere uno sguardo ad alcuni dei testi standard come Russel & Norvig ( "Intelligenza Artificiale: un approccio moderno") e altre introduzioni all'apprendimento / macchina di intelligenza artificiale e vedere se si può facilmente adattare gli algoritmi che menzionano a i dati particolari. Vedi anche O'Reilly, "Programmazione Intelligenza Collettiva" per alcuni esempi di codice Python di uno o due algoritmi che potrebbero essere adattabile al vostro caso.

Se è possibile leggere lo spagnolo, il messicano casa editrice Alfaomega hanno pubblicato anche diverse buone introduzioni AI-correlati negli ultimi anni.

Questo è un problema di classificazione, non proprio di data mining. L'approccio generale è quello di estrarre le caratteristiche da ogni istanza di dati e lasciare che l'algoritmo di classificazione imparare un modello dalle caratteristiche e il risultato (che per voi è 0 o 1). Presumibilmente ciascuna delle vostre 30 domande sarebbe la sua propria caratteristica.

Ci sono molte tecniche di classificazione è possibile utilizzare. support vector machines è popolare come è massima entropia. Non ho usato la libreria Java Machine Learning, ma a colpo d'occhio non vedo uno di questi. Il progetto OpenNLP dispone di un'implementazione massima entropia. LibSVM dispone di un'implementazione supporto Vector Machine. Sarà quasi certamente necessario modificare i dati a qualcosa che la biblioteca può capire.

In bocca al lupo!

Aggiornamento: Sono d'accordo con l'altro commentatore che Russel e Norvig è un libro grande intelligenza artificiale che discute alcune di queste. "Pattern Recognition e Machine Learning" del Vescovo discute questioni di classificazione in modo approfondito se siete interessati in giù e dettagli sporchi.

Il vostro compito è classica per le reti neurali, che sono destinati prima di tutto per risolvere esattamente i compiti di classificazione. rete neurale ha piuttosto semplice realizzazione in qualsiasi lingua, ed è il "mainstream" di "machine learning", più vicino alla IA di qualcosa di diverso. Basta implementare (o ottenere implementazione esistente) standart rete neurale, per esempio rete multistrato con l'apprendimento da parte posteriore propagazione dell'errore, e dare esempi di apprendimento in ciclo. Dopo qualche tempo di tale apprendimento si farlo funzionare su esempi reali. Si può leggere di più su reti neurali a partire da qui: http://en.wikipedia.org/wiki/Neural_network http://en.wikipedia.org/wiki/Artificial_neural_network Inoltre è possibile ottenere collegamenti a molte implementazioni pronte qui: http://en.wikipedia.org/wiki/Neural_network_software

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top