2017-03-24 10 views
0

私はRの1500万回の観測データの大規模なデータセットを扱っています。ロジスティック回帰を実行して、バイナリ従属変数( "HasShared" )。 共有のイベントは非常にまれです(1%未満)ので、まれなイベントの問題を処理するためにlogistf回帰を試しました。データセットには48の変数があり、そのうち6つだけが回帰に参加する必要があります。私はGoogleのクラウドプラットフォーム上の仮想マシンで作業しているので余分なRAMがあり、RAMを約100 GBに変更しました。 私がlogistfモデルを実行しようとしているとき、実行は決して終了しません。私は2時間以上待って、それは終わらなかった。だから、これは実行不可能と思われる。 非常に大きなデータセット(biglm)の回帰を扱うパッケージがありますが、大きなデータセットとまれなイベントの問題を処理するソリューションを探しています。そのような組み合わせの解決策はありますか?数百万の観測と稀な事象を伴うRのロジスティック回帰

+2

「まれなイベントの問題」は不均衡な分類問題とも呼ばれ、DMwRパッケージの「SMOTE」機能はこの問題に対処するのに便利です[CRAN](https://cran.r-project.org/web /パッケージ/ 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クラスタを構築し、ロジスティック回帰アルゴリズムを使用することもできます。

関連する問題