Я профессионально использую SAS около 5 лет. Он установлен на моем ноутбуке, и мне часто приходится анализировать наборы данных с 1000-2000 переменных и сотнями тысяч наблюдений.
Я искал альтернативы SAS, которые позволили бы мне проводить анализ наборов данных аналогичного размера. Мне любопытно, что другие люди используют для таких ситуаций, как это. Это, конечно, не «большие данные» в том виде, в каком они используются сегодня. Мои наборы данных не настолько малы, чтобы хранить их в памяти. Мне нужно решение, которое может применять алгоритмы к данным, хранящимся на жестком диске. Это то, что я исследовал безрезультатно:
- R - BigMemory может создавать матрицы, хранящиеся вне памяти, но элементы должны быть в том же режиме. Я работаю с данными, которые почти на 50/50 разделены между символами и цифрами. Пакет FF становится ближе к тому, что мне нужно, но я не совсем понимаю, какие процедуры совместимы с ним. Я думаю, что поддержка несколько ограничена.
- Панды - Я был очень взволнован по поводу Pythonic альтернативы R. Однако, он также должен хранить все данные в памяти.
- Revolution R - этот показывает много обещаний. У меня есть копия на моем домашнем компьютере (бесплатная, если вы зарегистрируетесь в Kaggle), и я еще не опробовал ее как жизнеспособную альтернативу SAS. Комментарии к Revolution R как альтернативе SAS высоко ценятся.
Благодарность
ОБНОВЛЕНИЕ 1
Редактирование, чтобы добавить, что я ищу реальные, практические решения, которые люди успешно использовали. По большей части SAS позволяет мне просматривать большие файлы, не беспокоясь об ограничениях памяти. Однако SAS реализован, они выяснили, как сделать управление памятью прозрачным для пользователя. Но я с тяжелым сердцем использовал SAS для своей работы (я должен) и ЛЮБЛЮ альтернативу FOSS, которая позволяет мне работать с «большими» данными, не задумываясь о том, где эти данные расположены. конкретное время (в памяти или на диске).
Самые близкие вещи, с которыми я столкнулся, - это пакет FF от R и кое-что на горизонте для Python под названием Blaze . И все же эти проблемы существуют уже много лет, так что же делают аналитики в это время? Как они решают эти проблемы с ограничениями памяти? Большинство предлагаемых решений:
- Получите больше оперативной памяти - это не очень хорошее решение, IMO. Легко найти набор данных, который может превышать объем оперативной памяти, но при этом помещаться на жесткий диск. Кроме того, рабочий процесс должен учитывать все структуры, которые создаются во время анализа поисковых данных.
- Подмножество данных - это хорошо для разведки, но не для финализации результатов и отчетности. В конце концов, любые процессы, разработанные в подмножестве, должны будут применяться ко всему набору данных (в любом случае, в моем случае).
- Разделение данных - это то, что я хотел бы узнать больше от людей, которые фактически реализуют этот рабочий процесс. Как это сделать? Какими инструментами? Может ли это быть сделано прозрачным для пользователя способом? (то есть, создайте некоторую структуру данных на диске, и структура будет заботиться о разбивке на части).