2016-06-17 6 views
2

例えば、MLlibロジスティック回帰を使用してデータセットを訓練し、各データが100,000,000以上のフィーチャを持つ場合、モデルを取得した後、モデルを使用して「リアルタイム」で予測する方法、例えば、ウェブページは200msの予測結果でユーザに応答しますか? model.predict(...)を単に使用しますか?長時間実行中のオフラインスパーク(MLlib)モデルトレーニングの後、リアルタイムで予測を取得する手順は何ですか?

答えて

1

Logistic Regressionは、バイナリ分類のみをサポートしています。 OPは、回帰が..ので、我々はそれをフォローアップする必要があると述べた。..

バイナリ分類のためのいずれの場合も予測のために行われる作業は、ほとんど自明であるロジスティックRegressiobを使用して:

BLAS.dot(features, coefficients) + intercept 

だから、スパーク訓練された重み(「係数」)と入力行とのDOT積をとるだけでよい。

単一の行は、1台のマシンのメモリに収まる必要があります。さらに、ベクトルの要素の数==特徴の数は< = 2^31に保たれなければならない。

MLlibは、以下の "家族" をサポート GeneralizedLinearRegressionクラスを介して処理されるスパーク2.0で

さらに更新Regression

  • ガウス
  • 二項
  • ポアソン
  • ガンマ

計算それはスパークに予測するために観察をロードするのにかかるように予測が早くに関するを完了する必要があり、そして - 同様LogisticRegression

BLAS.dot(features, coefficients) + intercept 

WeightedLeastSquaresによって行われるので、複雑さは予測のため低いですそのサイズにかかわらず。それはちょうど1つのマシンのメモリに収まる必要があります。

+0

あなたの答えをありがとうございますが、訓練されたモデルを既に持っていて機能が巨大である場合、私たちはどのように「リアルタイムで予測を計算するのですか? 'predict'メソッドが、非常に高い次元のフィーチャなどの理由で遅い場合、それをリアルタイムで作成する方法はありますか? –

+0

@Stephenああ、私は十分に注意を払っていなかった。 "100Meg機能"。それは多いです。ソースコードを見て、それが実際に何を意味するのかを見てみましょう。 – javadba

+0

@Stephen答えを更新しました。 Spark2.0のLogReg専用の重要な考慮事項は、バイナリ分類のみをサポートすることです。あなたのOPから、回帰がありました:あなたが特定の(異なる)回帰アルゴリズムを念頭に置いているかどうかは分かります。私はここでもいくつかの提案をするために答えを更新しました。 – javadba

関連する問題