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

Является ли scikit-learn подходящим для больших задач с данными?

Я работаю над заданием TREC, в котором используются методы машинного обучения, где набор данных состоит из более чем 5 терабайт веб-документов, из которых планируются выделение векторов слов. scikit-learn имеет хороший набор функций, которые, похоже, соответствуют моей потребности, но я не знаю, будет ли он масштабироваться для обработки больших данных. Например, HashingVectorizer способен обрабатывать 5 терабайт документов, и можно ли его распараллелить? Более того, каковы некоторые альтернативы для масштабных задач машинного обучения?

4b9b3361

Ответ 1

HashingVectorizer будет работать, если вы итеративно обмениваете ваши данные пакетами 10k или 100k документов, которые подходят, например, в память.

Затем вы можете передать пакет преобразованных документов в линейный классификатор, который поддерживает метод partial_fit (например, SGDClassifier или PassiveAggressiveClassifier), а затем итерации по новым партиям.

Вы можете начать забивать модель по установленному набору валидации (например, документы 10 тыс.), поскольку вы идете контролировать точность частично обученной модели, не дожидаясь появления всех образцов.

Вы также можете сделать это параллельно на нескольких машинах на разделах данных, а затем усреднить полученный атрибут coef_ и intercept_, чтобы получить окончательную линейную модель для всего набора данных.

Я обсуждаю это в этом разговоре, который я дал в марте 2013 года в PyData: http://vimeo.com/63269736

В этом учебном пособии приведен пример кода, в котором парализует scikit-learn с помощью IPython.parallel, взятый из: https://github.com/ogrisel/parallel_ml_tutorial