SparkR演算で最適化メソッドを指定する方法について誰でも説明できますか?glm
? glm
と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に合うように反復法を使用することについてあります、例えばLogisticRegressionWithLBFGS
とLinearRegressionWithSGD
(hereを議論)しかし、私には見つからなかったそのような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の概要を印刷しようとすると、私は次のエラーが表示されます
参考、私はAWSを介してこれをやっていると、異なるバージョンを試してみました最新のものを含むEMRの(差がある場合)。また、Spark 1.6.1(R API)を使用しています。私に
どのバージョンのsparkを使用していますか? – eliasah
@eliasah、私は使用しているSparkのバージョンで自分の投稿を更新しました。ご意見ありがとうございます! – kathystehl