Большие данные конвертируются в «транзакции» из пакета arules - PullRequest
6 голосов
/ 30 августа 2011

Пакет arules в R использует класс «транзакции».Поэтому, чтобы использовать функцию apriori(), мне нужно преобразовать мои существующие данные.Я получил матрицу с 2 столбцами и примерно 1,6 мм строк и попытался преобразовать данные следующим образом:

transaction_data <- as(split(original_data[,"id"], original_data[,"type"]), "transactions")

, где original_data - это моя матрица данных.Из-за объема данных я использовал самую большую машину AWS Amazon с 64 ГБ ОЗУ.Через некоторое время я получаю

, результирующий вектор превышает предельную длину вектора в 'AnswerType'

Использование памяти машиной все еще было "всего лишь" при 60%.Это ограничение на основе R?Есть ли способ обойти это, кроме использования выборки?При использовании только 1/4 данных преобразование работало нормально.

Редактировать: Как указывалось, одна из переменных была фактором вместо символа.После изменения трансформация была обработана быстро и правильно.

1 Ответ

3 голосов
/ 05 сентября 2011

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

В общем, я бы действительно рекомендовал использовать файлы с отображением в памяти через bigmemory, которые также можно разделить и обработать через bigsplit или mwhich.Если выгрузка данных работает для вас, вы также можете использовать гораздо меньший размер экземпляра и сэкономить $$.:)

...