2014-02-13 4 views
0

Я хочу проанализировать большой набор данных (2 000 000 записей, 20 000 идентификаторов клиентов, 6 номинальных атрибутов) с использованием алгоритма обобщенного последовательного шаблона.Rapidminer: проблемы с памятью, преобразующие номинальные в биномиальные атрибуты

Для этого требуется, чтобы все атрибуты, кроме атрибута времени и идентификатора клиента, были биноминальными. Имея 6 номинальных атрибутов, которые я хочу проанализировать для шаблонов, мне нужно преобразовать их в биномиальные атрибуты, используя функцию «Номинал для биноминала». Это вызывает проблемы с памятью на моей рабочей станции (с 16 ГБ ОЗУ, из которых я выделил 12 для экземпляра Java, на котором работает quickminer).

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

Я попытался написать шаг за шагом результаты биноминального преобразования в файлы csv на мой локальный диск. Я начал использовать номинальный атрибут с наименьшими значениями, в результате получился файл csv, содержащий мой идентификатор набора данных, и теперь 7 биномиальных атрибутов. Я был серьезно удивлен, увидев, что размер файла составляет> 200 МБ. Это вызвано быстрым написанием строк для биномиальных значений «true»/«false». Разве это не было бы более эффективным с точки зрения памяти, просто записывая 0/1?

Есть ли способ использовать базу данных oracle напрямую или работать с значениями 0/1 вместо «true»/«false»? У моей следующей колонки будет 3000 различных значений, которые будут преобразованы, которые закончились бы в кошмаре ...

Я очень ценю рекомендации по использованию более эффективной памяти или работе непосредственно в базе данных. Если кто-то знает, как легко преобразовать varchar2-column в Oracle в логические столбцы для каждого отдельного значения, которое также будет оценено!

Спасибо большое, Хольгер

редактировать:

Моя цель состоит в том, чтобы получить от такой структуры:

column_a; column_b; customer_ID; timestamp 

value_aa; value_ba; 1; 1 

value_ab; value_ba; 1; 2 

value_ab; value_bb; 1; 3 

к этой структуре:

customer_ID; timestamp; column_a_value_aa; column_a_value_ab; column_b_value_ba; column_b_value_bb 

1; 1; 1; 0; 1; 0 

1; 2; 0; 1; 1; 0 

1; 3; 0; 1; 0; 1 
+0

Я имею в виду двоичные или булевские значения. Не знаю почему, но в quickminer они называются биномиальными (а не биномиальными). – Holger

ответ

0

Этот ответ слишком длинный для комманды Ent.

Если у вас есть тысячи уровней для шести переменных, которые вас интересуют, то вряд ли вы получите полезные результаты с использованием этих данных. Типичный подход - классифицировать данные, которые приводят к меньшему количеству «биномиальных» переменных. Например, вместо «1 галлон цельного молока» вы используете «дневниковые продукты». Это может привести к более эффективным результатам. Помните, что Oracle позволяет только 1000 столбцов в таблице, поэтому в базе данных есть другие ограничивающие факторы.

Если вы работаете с множеством отдельных элементов, я бы предложил другие подходы, в частности подход, основанный на правилах ассоциации. Это не будет ограничивать вас числом переменных.

Лично я считаю, что могу выполнить большую часть этой работы в SQL, поэтому я написал книгу по этой теме («Анализ данных с использованием SQL и Excel»).

+0

На самом деле с моей проблемой их категоризировать нельзя. Я не знал об ограничении в 1000 столбцов, спасибо, что рассказал мне. Возможно, я могу предварительно фильтровать свои данные, чтобы посмотреть только на подмножества и их последовательный порядок. Но предпочтительнее нет. Я до сих пор не понимаю, почему quickminer не просто использует 0/1 ... – Holger

0

Вы можете использовать оператор Nominal to Numeric для преобразования значений true и false в 1 или 0.установите для параметра coding type значение unique integers.

+0

спасибо, что поможет с размером для сохранения. Однако я смог ограничить количество элементов в моем анализе. – Holger