Подтвердить что ты не робот

Задача машинного обучения: диагностика программы в java/groovy (datamining, машинное обучение)

Я планирую разработать программу на Java, которая обеспечит диагностику. Набор данных разделен на две части для обучения, а другой для тестирования. Моя программа должна научиться классифицировать данные обучения (BTW, которые содержат ответ по 30 вопросам каждый в новом столбце, каждая запись в новой строке, последняя колонка будет диагнозом 0 или 1, в тестовой части колонки диагностики данных будет пустой - набор данных содержит около 1000 записей), а затем делать прогнозы в тестировании части данных:/

Я никогда не делал ничего подобного, поэтому я буду благодарен за любые советы или информацию о решении подобной проблемы.

Я думал о Java Machine Learning Библиотека или Java Data Горный пакет, но я не уверен, правильно ли он...? и я все еще не уверен, как решить эту проблему...

Просьба сообщить.

Все самое лучшее!

4b9b3361

Ответ 1

Привет, как сказал Ганн Биернер, это проблема классификации. Лучший алгоритм классификации для ваших нужд, о котором я знаю, - это алгоритм Росса Квинлана. Это концептуально очень легко понять.

Для готовых реализаций алгоритмов классификации лучшим вариантом является Weka. http://www.cs.waikato.ac.nz/ml/weka/. Я изучил Weka, но не использовался, так как обнаружил, что он слишком поздно.

Я использовал гораздо более простую реализацию под названием JadTi. Он работает очень хорошо для небольших наборов данных, таких как ваши. Я использовал его совсем немного, поэтому могу уверенно сказать это. JadTi можно найти по адресу:

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

Сказав все это, ваша задача будет заключаться в создании удобного интерфейса через Интернет. Для этого набор данных будет ограниченным использованием. Набор данных в основном работает с предпосылкой, что у вас уже установлен тренировочный набор, и вы загружаете новый тестовый набор данных за один шаг и сразу получаете ответ (ы).

Но мое приложение, вероятно, и ваше, было пошаговым поиском пользователей, с функциями для возврата туда и обратно на узлах дерева решений.

Чтобы создать такое приложение, я создал документ PMML из своего учебного набора и построил Java Engine, который пересекает каждый node дерева, запрашивая у пользователя ввод данных (текст/радио/список) и использование значения в качестве входных данных для следующего возможного предиката node.

Стандарт PMML можно найти здесь: http://www.dmg.org/ Здесь вам нужен только TreeModel. XML-плагин NetBeans - хороший редактор для редактирования PMML. Altova XML может сделать лучшую работу, но стоит $$.

Также можно использовать СУБД для хранения вашего набора данных и автоматического создания PMML! Я этого не пробовал.

Удачи вам в вашем проекте, пожалуйста, сообщите мне, если вам нужны дополнительные материалы.

Ответ 2

Я настоятельно рекомендую вам использовать Weka для своей задачи
Его коллекция алгоритмов машинного обучения с удобной интерфейсом, которая облегчает множество различных стратегий выбора функций и моделей
Вы можете сделать много действительно сложных вещей, используя это без необходимости делать какие-либо кодировки или математику Создатели также опубликовали довольно хороший учебник, в котором объясняются практические аспекты добычи данных
После того, как вы получите его, вы можете использовать его API для интеграции любого из своих классификаторов в свои собственные программы Java

Ответ 3

Существуют различные алгоритмы, которые относятся к категории "машинного обучения" и которые подходят для вашей ситуации, зависят от типа данных, с которыми вы имеете дело.

Если ваши данные по существу состоят из сопоставлений набора вопросов с набором диагнозов, каждый из которых может быть да/нет, то я думаю, что методы, которые потенциально могут работать, включают нейронные сети и методы для автоматического построения дерева решений на основе тестовые данные.

Я бы посмотрел на некоторые из стандартных текстов, таких как Russel и Norvig ( "Искусственный интеллект: современный подход" ) и другие интродукции в AI/машинное обучение и посмотреть, можете ли вы легко адаптировать алгоритмы, которые они упоминают, к ваши данные. См. Также O'Reilly, "Программирование коллективного интеллекта" для некоторых примеров кода Python одного или двух алгоритмов, которые могут быть адаптированы к вашему делу.

Если вы можете прочитать испанский язык, мексиканское издательство Alfaomega также опубликовало различные хорошие интродукции, связанные с AI, в последние годы.

Ответ 4

Это проблема классификации, а не интеллектуальная обработка данных. Общий подход заключается в извлечении функций из каждого экземпляра данных, и пусть алгоритм классификации изучает модель из функций и результата (для вас это 0 или 1). Предположительно, каждый из ваших 30 вопросов будет его собственной особенностью.

Существует много методов классификации, которые вы можете использовать. Поддержка векторных машин популярна, как максимальная энтропия. Я не использовал библиотеку Java Machine Learning, но с первого взгляда я не вижу ни одного из них. Проект OpenNLP имеет максимальную энтропийную реализацию. LibSVM имеет реализацию векторной машины поддержки. Вы почти наверняка должны будете изменить свои данные на то, что может понять библиотека.

Удачи!

Обновление: я согласен с другим комментатором в том, что Рассел и Норвиг - великая книга AI, в которой обсуждаются некоторые из этих вопросов. Епископ "Распознавание образов и машинное обучение" подробно обсуждает вопросы классификации, если вас интересуют нижние и грязные детали.

Ответ 5

Ваша задача классическая для нейронных сетей, которые предназначены прежде всего для решения точно задач классификации. Нейронная сеть имеет довольно простую реализацию на любом языке, и это "основное направление" "машинного обучения", ближе к ИИ, чем что-либо другое. Вы просто реализуете (или получаете существующую реализацию) стандартную нейронную сеть, например многоуровневую сеть с обучением путем распространения ошибок, и даете ей примеры обучения в цикле. По прошествии некоторого времени такого обучения вы будете работать над реальными примерами. Вы можете больше узнать о нейронных сетях, начиная отсюда: http://en.wikipedia.org/wiki/Neural_network http://en.wikipedia.org/wiki/Artificial_neural_network Также вы можете получить ссылки на многие готовые реализации здесь: http://en.wikipedia.org/wiki/Neural_network_software