2017-09-30 2 views
2

問題呼び出す:

を私はその意志スタンドアロンのExcelのツールで、このモデルを展開する必要があるR.の訓練を受けたランダムフォレストモデルを持っていますセールスネットワーク上の350人が、スプレッドシートに入力したデータに基づいてユーザーがリアルタイムで予測を実行できるようにします。

どうすればいいですか?

制約:

  • 自分のローカルマシン上でRをインストールするには、ユーザーが必要とするオプションではありません。

  • スコアリングAPIを提供するサーバー(物理またはクラウド)を持つことは選択肢ではありません。

ここまで私は何をしましたか?

1. PMML

私はPMML(XML構造)でモデルをエクスポートすることができます。私は、PythonとJavaでPMML入力をロードして実行するためのライブラリがあることがわかりました。しかし、私はVBA/VBで実装されたものは見つかりませんでした。

2. Zementis

私は、ExcelアドインPMMLモデルを展開するために提供していますZementisと呼ばれる溶液の中に見えました。しかし、私の理解から、実際のモデルの実行が行われるクラウドサーバ(たとえばAWS)へのウェブサービスコールが必要です。私のITセキュリティ部門はこれを許可しません。

3.その他

最も一般的な勧告は、モデルをロードし、予測する機能を実行するために、Rを呼び出すことのようです。上記のように、これは実行可能な選択肢ではありません。

詳細コンテキスト:

ランダムフォレストモデルはCで、Rに訓練されます。 30変数。このモデルは、販売プロセスの一環として製品の「パーソナライズド」価格を推奨するために使用されます。

約350人のユーザーが、販売ネットワークにモデルを配布する必要があります。ビジネスの好みは、セールスチームが現在取引の収益性を計算するために使用する既存のスプレッドシートツールにモデルを統合することです。

これは、Excel VBAで実装できる方法でモデルをエクスポートできる必要があることを意味します。

タイムスケールが指定されている場合、インプリメンテーションはITインフラストラクチャや追加のアプリケーションのインストールなしで自己完結型である必要があります。組織のITチームとサーバーベースのソリューションで連携していますが、展開時間は12カ月以上です。短期的には戦術的ソリューションが必要です。

+0

正式な答えではありませんが、あなたのランダムなフォレストモデルをより単純な関数に適合させる可能性があります。その後、あなたのVBAコードに関数を含める必要があります。 –

+0

正式な回答ではありませんが、別のライブラリと言語を使用してランダムフォレストモデルを再実装する必要があります。実行可能ファイルを作成したり、Excelアドインに展開することができます。たとえば、[alglib](http ://www.alglib.net/dataanalysis/decisionforest.php)、Weka(Java)、scikit-learn、および[pyxll](https://www.pyxll.com/)(Python)です。 – nekomatic

+0

...または他の提案の行に沿って、より簡単なアルゴリズムを使用して満足できるモデルを構築できるかどうかを確認してください。単純な回帰ツリー - 予測関数はVBAで再作成するのに十分シンプルです。 – nekomatic

答えて

1

は(mtcarsデータセットを使用する例)木のための「ルール」を取得するための一つのアプローチ

install.packages("randomForest") 
library(randomForest) 

head(mtcars) 
set.seed(1) 
fit <- randomForest(mpg ~ ., data=mtcars, importance=TRUE, proximity=TRUE) 
print(fit) 

## Look at variable importance: 
importance(fit) 

# Print the rules for each tree in the forest 
install.packages("rattle") 
library(rattle) 
printRandomForests(fit) 

は、おそらく500本の木のためのルールを使用することは非現実的ですが、多分あなたは、100本の木を実装することができますあなたのvbaを取得し、結果の平均をとる(継続的な応答のために)か、または投票数が最も多いクラスを予測します(カテゴリーレスポンスの場合)。

+0

すべての回答ありがとうございます。最終的には、(i)新しい変数とデータでRFモデルを変更し続け、(ii)R(クラスタリング)で開発された他のコンポーネントを追加したため、VBAでツリーを再実装することは実現不可能であると判断しました。 。そこで、私たちはR-portableをローカルユーザーのマシンに導入し、VBAからRScript.exeを呼び出してRコードを実行するソリューションを完成させました。これはRの移植可能なバージョンなので、インストールする必要はありません。このアプローチは、次のブログ記事からインスピレーションを受けました:[link](https://www.r-bloggers.com/deploying-desktop-apps-with-r/) – CodingQuant

0

多分、モデルをワークシート上に再作成することができます。 私が知る限り、Excelは(開発ツールのリボン上の)XML構造をインポートできます。

編集:1)pmml構造体をプレーンテキストエディタで.xmlファイルとして保存します。

2)エクセル2013でファイルを開きます(多分他のバージョンでも)それを行う

3)エラーメッセージを介してクリックして、とにかくファイルを開きます。木はテーブルとして開きますが、ちょっと面白いですが、認識可能です。

4)ツリー上で操作する予測計算(VBAの汎用fn)を作成します。ここで

+0

もう少し説明を追加できますか?可能であれば、いくつかのコード? –