2012-04-16 8 views
2

У меня очень большой набор данных в файле csv (1,700,000 сырых и 300 разреженных объектов). - У него много недостающих значений. - данные варьируются между численными и категориальными значениями. - зависимая переменная (класс) является двоичной (1 или 0). - данные сильно искажены, число положительных ответов низкое.Модель регрессии для категориальных данных

Теперь от меня требуется применить регрессионную модель и любой другой алгоритм машинного обучения по этим данным.

Я новичок в этом, и мне нужна помощь. -ужели иметь дело с категориальными данными в случае регрессионной модели? и недостающие значения слишком сильно влияют на него? - Какая лучшая модель прогнозирования я могу попробовать для больших, редких, перекошенных данных? - какую программу вы посоветуете мне работать? Я попробовал Weka, но он даже не может открыть большую часть данных (сбой памяти). Я знаю, что Matlab может открывать либо числовые csv, либо категории csv, которые не смешиваются, а недостающие значения должны быть вменены, чтобы позволить ему открыть файл. Я знаю немного R.

  • Я пытаюсь манипулировать данными, используя excel, access и perl script. и это очень сложно с этим объемом данных. excel не может открыть более чем 1M записи, и доступ не может открыть более 255 столбцов. любое предложение.

Спасибо за помощь заранее

+0

Отличный вопрос! Вы можете взглянуть на деревья классификации и регрессии (http://en.wikipedia.org/wiki/Predictive_analytics#Classification_and_regression_trees), которые реализованы в R в пакете RPART (http://www.statmethods.net/ advstats/cart.html). – arboc7

ответ

2

Прежде всего, вы говорите о классификации, а не регресс - классификация позволяет прогнозировать значение из фиксированного набора (например, 0 или 1), тогда как регрессия производит реальной числовой вывод (например, 0, 0.5, 10.1543 и т. д.). Также не следует путать с так называемой логистической регрессией - это тоже классификатор, и его имя просто показывает, что оно основано на линейной регрессии.

Для обработки такого большого количества данных, которые необходимо индуктивной (обновляемого) модели. В частности, в Weka существует ряд таких алгоритмов в разделе классификации (например, Naive Bayes Updatable, Neutral Networks Updatable и другие). С индуктивной моделью вы сможете соответствующим образом загружать часть данных по части и модели обновления (для Weka см. Интерфейс Knowledge Flow, чтобы узнать, как его проще использовать).

Некоторые классификаторы могут работать с категориальными данными, но я не могу вспомнить какие-либо обновляемые из них, поэтому, скорее всего, вам все равно нужно преобразовать категориальные данные в числовые. Стандартное решение здесь - использовать атрибуты индикаторов, т. Е. Заменить каждый категориальный атрибут несколькими двоичными индикаторами. Например. если у вас есть атрибут day-of-week с 7 возможными значениями, вы можете заменить его на 7 двоичных атрибутов - Sunday, Monday и т. д. Конечно, в каждом конкретном случае только один из 7 атрибутов может содержать значение 1, а все остальные должны быть 0.

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

И, наконец, для сильно искаженные данные используют F1 (или просто Precision/Recall) меру вместо точности.

+0

Благодарим вас за ответ. Моя проблема с weka в том, что она дает сообщение об ошибке памяти при открытии файла csv, то есть даже не может прочитать данные, упомянутые выше, я разделил их на меньшие файлы csv и максимальные записи, которые он смог прочитать только 100 000, хотя Я установил размер кучи на 2G (у меня 4G RAM). любые идеи об этом? – simplyme

+1

Weka имеет 3 интерфейса (3 кнопки при запуске weka.jar), а последний - интерфейс потока знаний. В отличие от интерфейса Explorer, который вы, скорее всего, используете, в KN вы не загружаете все данные заранее. Вместо этого вы строите конвейер компонентов и запускаете его. Если все ваши компоненты обновляемы, весь конвейер также сможет обрабатывать данные по строкам. Для получения дополнительной информации см. [Tutorial] (http://software.ucv.ro/~eganea/AIR/KnowledgeFlowTutorial-3-5-8.pdf). Начните с загрузчика CSV и класса Assigner, а затем добавьте все необходимые компоненты. – ffriend

Смежные вопросы