2016-07-11 59 views
2

SparkR演算で最適化メソッドを指定する方法について誰でも説明できますか?glmglmとOLSモデルを適合させようとすると、ソルバータイプとして"normal"または"auto"しか指定できません。 SparkRは私が"auto"を指定したとき、SparkRは単に「"normalを前提としていることを信じるように私をリードし、ソルバー仕様"l-bfgs"を解釈することができませんし、その後正規方程式をLSを使用して、解析的モデル係数を推定する。SparkR MLlib&spark.ml:最小二乗法とglm最適化

とのフィッティングGLMSですSparkRで利用可能な、または私は間違って以下の評価を書いていない確率的勾配降下法とL-BFGS?

m <- SparkR::glm(y ~ x1 + x2 + x3, data = df, solver = "l-bfgs") 

スパークのドキュメントの多くは、GLMSに合うように反復法を使用することについてあります、例えばLogisticRegressionWithLBFGSLinearRegressionWithSGDhereを議論)しかし、私には見つからなかったそのようなR APIのドキュメントこれはSparkRでは利用できません(つまり、SparkRのユーザーは分析的に解決できないため、データのサイズに制約があります)か、ここで欠かせないものがありますか? SparkRで現在利用できない場合は、SparkR 2.0.0がリリースされる予定ですか?以下は

、私はセットのおもちゃのデータを作成し、異なるソルバー仕様に三つのモデル、それぞれに合う:

x1 <- rnorm(n=200, mean=10, sd=2) 
x2 <- rnorm(n=200, mean=17, sd=3) 
x3 <- rnorm(n=200, mean=8, sd=1) 
y <- 1 + .2 * x1 + .4 * x2 + .5 * x3 + rnorm(n=200, mean=0, sd=.1) 
dat <- cbind.data.frame(y, x1, x2, x3) 

df <- as.DataFrame(sqlContext, dat) 

m1 <- SparkR::glm(y ~ x1 + x2 + x3, data = df, solver = "normal") 
m2 <- SparkR::glm(y ~ x1 + x2 + x3, data = df, solver = "auto") 
m3 <- SparkR::glm(y ~ x1 + x2 + x3, data = df, solver = "l-bfgs") 

同じパラメータ推定値における第1および第2のモデルの結果(SparkRがあるという私の仮説をサポート両方のモデルをフィッティングするときに正規方程式を解くと、結果的にモデルは等価です)。 SparkRは、第3のモデルをフィットすることができますが、私はGLMの概要を印刷しようとすると、私は次のエラーが表示されます

参考

summary(m3) error

、私はAWSを介してこれをやっていると、異なるバージョンを試してみました最新のものを含むEMRの(差がある場合)。また、Spark 1.6.1(R API)を使用しています。私に

+0

どのバージョンのsparkを使用していますか? – eliasah

+0

@eliasah、私は使用しているSparkのバージョンで自分の投稿を更新しました。ご意見ありがとうございます! – kathystehl

答えて

1

Spark 1.6.2 API documentation is here

solver:
The solver algorithm used for optimization, this can be "l-bfgs", "normal" and "auto". "l-bfgs" denotes Limited-memory BFGS which is a limited-memory quasi-Newton optimization method. "normal" denotes using Normal Equation as an analytical solution to the linear regression problem. The default value is "auto" which means that the solver algorithm is selected automatically.

- これはApache Spark Jira site上のバグレポートの価値が見えます。

+1

こんにちは@SpiritusPrana、ご意見ありがとうございます。私はそれぞれのソルバーのそれぞれが何をしているのかを知っています(定義的に隠れている自動保存)が、SparkR Jiraボードに投稿する必要があると思っているとお考えですか? – kathystehl

+0

問題を開く前に、どのスパークバージョンを使って質問を更新できますか?だから我々は、エラー – eliasah

+0

を再現することができますこんにちは@ kathystehl - はい - あなたのコードは私によく整形され、APIのドキュメントと一貫しています。一貫して動作しないので、バグとして研究する価値があります。エライアサが助言を得て戻ってくるかどうかを少しでも待つ価値があるでしょう。 Apacheプロジェクトの経験がないRユーザーとして、私はSparkRのバグを記録するのに少し苦労しましたが、私は開発者が支持的で、明らかにバグレポートを書くようになっています。 – SpiritusPrana

関連する問題