2014-07-01 5 views
3

나는 단계적 모델 선택을 수행하여 분산 인플레이션 팩터가있는 변수를 점차적으로 특정 임계 값 이상으로 떨어 뜨립니다.파이썬에서 가장 빠른 선형 회귀 구현

이렇게하려면 몇 백 메가 바이트에서 10 기가에 이르는 데이터 세트에서 OLS를 여러 번 실행하고 있습니다.

더 큰 데이터 세트의 경우 OLS의 가장 빠른 구현은 무엇입니까? Statsmodel OLS 구현은 행렬을 반전시키기 위해 numpy를 사용하는 것 같습니다. 그라디언트 디센트 기반 메소드가 더 빠릅니까? scikit-learn은 특히 빠른 구현을합니까?

아니면 pymc를 사용하여 MCMC 기반의 접근 방식은 빠른입니다

...

업데이트 1 : 선형 회귀의 학습 scikit 구현이 scipy 구현을위한 래퍼 것 같다.

업데이트 2 : scikit를 통해 Scipy의 OLS는 가장 빠른 (IIRC)을 scikit 배우기 SGDRegressor 클래스는

+0

얼마나 많은 행/관측과 몇 개의 열/설명 변수가 있습니까? – user333700

+0

수백 개의 관측과 행이 있습니다. – Luke

답변

3

... 내 매우 제한된 테스트에서 OLS를 statsmodels로 선형 회귀가 두 배 빠른 속도로 배울하지만, 아마 더 될 것 간단한 LinearRegression보다 튜닝하기가 어렵습니다.

나는 그것들 각각을 시험해보고 그들이 당신의 필요를 충족시키는지를 볼 것이다. 또한 데이터를 서브 샘플링하는 것이 좋습니다. 많은 공연이 있지만 모두 동일한 Distibution의 샘플 인 경우 수천 개의 샘플 (기능 수에 따라 다름)에서 모델을 조정/조정할 수 있습니다. 이렇게하면 "반복/흥미롭지 않은"데이터에 많은 시간을 낭비하지 않고도 모델 공간을 더 빠르게 탐색 할 수 있습니다.

몇 가지 후보 모델을 찾으면 전체 데이터 세트에서 시도해 볼 수 있습니다.

2

단계별 방법은 모델 선택을 수행하는 좋은 방법이 아닙니다. 모델 선택은 완전히 임시적이며 단계별 절차를 수행하는 방향에 크게 의존하기 때문입니다. 기준 기반 방법이나 모델 확률을 생성하는 다른 방법을 사용하는 것이 훨씬 좋습니다. 아마도 최선의 방법은 특정 모델의 매개 변수 공간뿐만 아니라 전체 모델 공간에 맞는 모델 인 가역 점프 MCMC를 사용하는 것입니다.

PyMC는 rjMCMC 자체를 구현하지 않지만 구현할 수 있습니다. 또한 PyMC 3은 회귀 모델을 new glm submodule을 사용하여 쉽게 맞출 수 있습니다.

+0

좋은 지적입니다. elasticnet과 같은 다른 접근 방식을 사용할 수도 있지만 그 이유는 있습니다. – Luke