2017-03-24 3 views
0

R에서 1,500 만 건의 관측치의 큰 데이터 세트로 작업하고 있습니다. 로지스틱 회귀 분석을 실행하여 이진 종속 변수 ("HasShared"). 공유 이벤트가 매우 드물기 때문에 (1 % 미만) 희소 한 이벤트 문제를 처리하기 위해 logistf 회귀를 시도했습니다. 내 데이터 세트에 48 개의 변수가 있으며, 단지 6 개의 변수 만 회귀에 참여해야합니다. Google 클라우드 플랫폼의 가상 컴퓨터에서 작업 할 때 여분의 RAM이 있으며 RAM을 100GB 정도로 변경했습니다. logistf 모델을 실행하려고 할 때 실행이 끝나지 않습니다. 나는 2 시간 이상 기다렸고 끝내지 않았다. 그래서 이것은 실행 불가능한 것처럼 보입니다. 매우 큰 데이터 세트 (biglm)의 회귀를 처리해야하는 패키지가 있지만 큰 데이터 세트와 드문 이벤트 문제를 처리 할 솔루션을 찾고 있습니다. 그런 결합 된 해결책이 있습니까?수백만 회의 관찰과 희소 한 사건이있는 R의 로지스틱 회귀

+2

"희귀 이벤트 문제"는 불균형 문제로 알려져 있으며 DMwR 패키지의 'SMOTE'기능은이 문제를 해결하는 데 유용합니다. [CRAN] (https://cran.r-project.org/web/packages/DMwR /) 및 [SMOTE 용지] (http://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-14-106) – OdeToMyFiddle

답변

0

이것은 해결책이 아닌 의견을 제시하는 질문입니다. 나는 당신의 문제가 여기 '가상 머신에서 일하고있다'고 제안하고 싶다. 가상 머신, 단수. 여러 가상 머신에서로드를 공유 할 수있는 제품일까요? RHadoop? 최근에 예측 분석에 대한 입문 과정을 마쳤습니다. 이 과정에서는 통계 분석 기능이있는 SQL 기반 솔루션 인 HPE Vertica를 도입했습니다.

https://www.futurelearn.com/courses/predictive-analytics

그리고 그래, 차라리 주석으로이 게시 한 것입니다하지만 난 경험치가 없습니다.

0

블랙 박스 라이브러리를 사용하는 대신 수동으로 비용 함수 최소화 알고리즘을 구현하는 것이 좋습니다. 이 경우에는 비용 함수 값의 진행 상황을 볼 수 있습니다 (변수를 새로 고칠 수있는 Rstudio를 사용하는 경우). 학습 속도 알파로 재생합니다.

# generate some data: 

x1 = rnorm(1000)   
x2 = rnorm(1000) 
z = 1 + 2*x1 + 3*x2   
pr = 1/(1+exp(-z))   
y = pr > 0.5    

# apply gradient descent to minimize cost function: 

alpha = 0.001 

m = length(y) 

X = as.matrix(cbind(x0 = rep(1,m), x1, x2)) 
Y = y 
n = ncol(X) 
THETA = rep(0, n) 

H_theta = function(i){ 
    1/(1+exp(-(t(THETA) %*% X[i,]))) 
} 

J_theta <- function(){ -(1/m)*( sum( Y*log(mapply(H_theta, 1:m)) + (1-Y)*log(1 - (mapply(H_theta, 1:m))) )) } 

gradient_j <- function(j){sum((mapply(H_theta, 1:m) - Y)*X[,j]) } 


for(i in 1:1000){ 
    NEW_THETA <- THETA - alpha*mapply(gradient_j, 1:n) 
    THETA <- NEW_THETA 
    cost = J_theta() 
} 
predicted_y = mapply(H_theta, 1:m)>0.5 

# see results: 
table(y == predicted_y) 

또는 Apache Spark 클러스터를 빌드하고 로지스틱 회귀 알고리즘을 사용할 수 있습니다.