través - Desafío de aprendizaje automático: programa de diagnóstico en java/groovy(datamining, aprendizaje automático)
que es el data mining pdf (5)
Este es un problema de clasificación, no realmente la minería de datos. El enfoque general es extraer las características de cada instancia de datos y dejar que el algoritmo de clasificación aprenda un modelo a partir de las características y el resultado (que para usted es 0 o 1). Presumiblemente cada una de sus 30 preguntas sería su propia característica.
Hay muchas técnicas de clasificación que puedes usar. Las máquinas de vectores de soporte son populares al igual que la máxima entropía. No he usado la biblioteca Java Machine Learning, pero de un vistazo no veo ninguno de estos. El proyecto OpenNLP tiene una implementación máxima de entropía. LibSVM tiene una implementación de máquina de vectores de soporte. Es casi seguro que tendrá que modificar sus datos a algo que la biblioteca pueda entender.
¡Buena suerte!
Actualización: Estoy de acuerdo con el otro comentarista de que Russel y Norvig es un gran libro de inteligencia artificial que discute algo de esto. El "Reconocimiento de patrones y el Aprendizaje automático" de Bishop analizan los problemas de clasificación en profundidad si está interesado en los detalles sucios y negativos.
Estoy planeando desarrollar un programa en Java que proporcionará diagnóstico. El conjunto de datos se divide en dos partes, una para entrenamiento y la otra para pruebas. Mi programa debería aprender a clasificar a partir de los datos de entrenamiento (BTW que contiene la respuesta para 30 preguntas cada una en una nueva columna, cada registro en una nueva línea, la última columna será el diagnóstico 0 o 1, en la parte de prueba de la columna de diagnóstico de datos estará vacío - el conjunto de datos contiene aproximadamente 1000 registros) y luego realiza predicciones al probar parte de los datos: /
Nunca he hecho algo similar, así que apreciaré cualquier consejo o información sobre la solución a un problema similar.
Estaba pensando en Java Machine Learning Library o Java Data Mining Package pero no estoy seguro de que sea la dirección correcta ... y todavía no estoy seguro de cómo abordar este desafío ...
Por favor avise.
¡Todo lo mejor!
Hay varios algoritmos que entran en la categoría de "aprendizaje automático", y cuál es el adecuado para su situación depende del tipo de datos con los que esté tratando.
Si sus datos consisten esencialmente en asignaciones de un conjunto de preguntas a un conjunto de diagnósticos, cada uno de los cuales puede ser sí / no, entonces creo que los métodos que podrían funcionar incluyen redes neuronales y métodos para construir automáticamente un árbol de decisiones basado en los datos de prueba. .
Echaré un vistazo a algunos de los textos estándar como Russel & Norvig ("Inteligencia artificial: un enfoque moderno") y otras introducciones al aprendizaje automático / IA y veré si puede adaptar fácilmente los algoritmos que mencionan a sus datos particulares. . Consulte también O''Reilly, "Programming Collective Intelligence" para obtener un código de ejemplo de Python de uno o dos algoritmos que podrían adaptarse a su caso.
Si puedes leer en español, la editorial mexicana Alfaomega también ha publicado varias buenas presentaciones relacionadas con la inteligencia artificial en los últimos años.
Hola Como dijo Gann Bierner, este es un problema de clasificación. El mejor algoritmo de clasificación para sus necesidades que conozco es el algoritmo de Ross Quinlan. Es conceptualmente muy fácil de entender.
Para implementaciones estándar de los algoritmos de clasificación, la mejor apuesta es Weka. http://www.cs.waikato.ac.nz/ml/weka/ . He estudiado Weka pero no he usado, ya que lo descubrí un poco tarde.
Utilicé una implementación mucho más simple llamada JadTi. Funciona bastante bien para conjuntos de datos más pequeños, como el suyo. Lo he usado bastante, así que puedo decirlo con confianza. JadTi se puede encontrar en:
http://www.run.montefiore.ulg.ac.be/~francois/software/jaDTi/
Dicho todo esto, su desafío será crear una interfaz utilizable a través de la web. Para hacerlo, el conjunto de datos será de uso limitado. El conjunto de datos básicamente funciona con la premisa de que ya tiene el conjunto de capacitación, alimenta el nuevo conjunto de datos de prueba en un solo paso y obtiene las respuestas de inmediato.
Pero mi aplicación, probablemente también la suya, fue un descubrimiento paso a paso por parte del usuario, con características para ir y venir en los nodos del árbol de decisión.
Para crear una aplicación de este tipo, creé un documento PMML desde mi conjunto de entrenamiento y construí un Motor Java que atraviesa cada nodo del árbol pidiéndole al usuario que proporcione una entrada (texto / radio / lista) y use los valores como entradas para el siguiente posible predicado de nodo.
El estándar PMML se puede encontrar aquí: http://www.dmg.org/ Aquí solo necesita el modelo TreeModel. NetBeans XML Plugin es un buen editor de esquemas para la creación de PMML. Altova XML puede hacer un mejor trabajo, pero cuesta $$.
¡También es posible usar un RDBMS para almacenar su conjunto de datos y crear el PMML automáticamente! No lo he intentado.
Buena suerte con su proyecto, no dude en hacerme saber si necesita más aportaciones.
Su tarea es clásica para las redes neuronales, cuyo objetivo principal es resolver exactamente las tareas de clasificación. La red neuronal tiene una realización bastante simple en cualquier idioma, y es la "corriente principal" del "aprendizaje automático", más cercana a la IA que cualquier otra. Simplemente implementa (o obtiene una implementación existente) una red neuronal estándar, por ejemplo, una red multicapa con aprendizaje por propagación de error, y le da ejemplos de aprendizaje en ciclo. Después de un tiempo de ese aprendizaje, lo harás trabajar en ejemplos reales. Puede leer más sobre redes neuronales desde aquí: http://en.wikipedia.org/wiki/Neural_network http://en.wikipedia.org/wiki/Artificial_neural_network También puede obtener enlaces a muchas implementaciones listas aquí: http://en.wikipedia.org/wiki/Neural_network_software
Te recomiendo que uses http://www.cs.waikato.ac.nz/ml/weka/ para tu tarea
Es una colección de algoritmos de aprendizaje automático con una interfaz fácil de usar que facilita muchos tipos diferentes de características y estrategias de selección de modelos.
Puedes hacer muchas cosas realmente complicadas usando esto sin tener que hacer ninguna codificación o matemática
Los creadores también han publicado un libro de texto bastante bueno que explica los aspectos prácticos de la minería de datos.
Una vez que aprendas a usarlo, podrías usar su API para integrar cualquiera de sus clasificadores en tus propios programas java.