2017-12-19 26 views
0

데이터 세트가 너무 커서 메모리에 저장할 수 없기 때문에 모델을 일괄 처리해야합니다. 내 모델을 GridSearchCV, RandomizedSearchCV 또는 BayesSearchCV (scikit-optimize)에서 래핑했습니다. 그리고 거대한 데이터 세트의 다른 부분에서 이들의 여러 인스턴스를 학습 할 수 없으며 각자 찾은 최상의 하이퍼 매개 변수가 일치 할 것입니다.sklearn의 GridSearchCV를 메모리에 맞지 않는 데이터와 함께 사용하려면 어떻게해야합니까?

데이터베이스에서 일괄 적으로 읽고 모델을 관리하는 BatchVoter에서 견적을 래핑하는 방법을 고려했습니다. 이것을 XSeachCV에 전달하고 매개 변수 공간 사전을 업데이트하여 모든 키가 'estimator__'로 연결되도록하면 하위 객체의 매개 변수를 설정하도록 검색을 지시 할 수 있지만 여전히 문제가 있습니다. .fit() 메소드는 데이터를 취해야한다.

네이티브 GridSearchCV를 .fit() 메소드로 전달하기에는 너무 큰 데이터와 함께 사용하는 영리한 방법이 있습니까?

답변

0

시도 dask 그것은 데이터 프레임, 배열 및 컬렉션을 지원합니다. 스케줄러와 작업자로 구성됩니다. 또한 distributed 스케줄러가있어 여러 대의 PC에서 데이터 프레임을 처리 할 수 ​​있습니다.

Here은 모델을 병렬 처리하는 방법에 대한 설명입니다.

Here 내가 크게이 프로젝트를 지연없이 다른 패키지를 사용할 수 없습니다 GridSearchCV

+0

의 드롭 인 교체 될 수있는 전체 모듈에 대한 링크입니다. 새로운 패키지가 승인되어야하고, 그런 다음 새로운 디자인 위에 모든 것을 리팩토링해야 할 것입니다. 우리의 데이터베이스는 엄청나게 빠르며 우리를 위해 잘 작동하는 numpy memmaps를 기반으로합니다. 그리고 dask는 베이시스 최적화를 수행하지 않습니다. 이것은 현재 리팩토링 중입니다. 여러 개의 코어에 배포하는 것이 현재로서는 충분하지만 n_jobs = X는 쉽게이 작업을 수행합니다. 그러나 앞으로의 연구를 위해 계속 염두에 두겠습니다. – pvlkmrv

+0

dask가 기본 배치 문제를 해결할 수 있을지 확신 할 수 없습니다. 학습자가 모든 데이터를 한 번에 볼 필요가있는 경우, 모든 데이터가 어딘가에 메모리에 저장되어야합니다. 그렇지 않으면 많은 페이지가 생성되어야합니다. 디스크의 메모리 매핑 파일을 둘러싼 오류로 인해 느려질 수 있습니다. 내 문제는 실제로 읽기 시간에 두 개의 데이터베이스 테이블을 조인하므로 디스크의 100GB가 TB로 폭발하여 교육을받습니다. – pvlkmrv