2016-10-14 2 views
0

Ich versuche herauszufinden, wie man ein von Spark + MLlib (in diesem Fall eine Collaborative Filtering Recommendation Engine) erzeugtes Modell verwendet, um Vorhersagen schnell zu treffen. auf Anfrage und als Server.Die beste Vorgehensweise, um das von Spark generierte mllib-Modell als Server zu verwenden

Meine aktuelle Lösung besteht darin, zu diesem Zweck kontinuierlich eine Instanz von Spark auszuführen, aber ich wollte wissen, ob es dafür bessere Lösungen gibt, vielleicht eine Lösung, die keinen laufenden Spark benötigt. Vielleicht gibt es eine Möglichkeit, ein generiertes Modell von Spark zu laden und zu verwenden, ohne Spark einzubeziehen?

Antwort

0

Sie können ein Modell über Pmml exportieren und dann dieses Modell verwenden und es in einer anderen Anwendung verwenden.

+0

Sehr coole Idee. Ich bin mir jedoch nicht sicher, ob die Collaborative Filtering-Modelle als PMML-Datei exportiert werden können. Laut http://spark.apache.org/docs/latest/mllib-pmml-model-export.html gehört Collaborative Filtering nicht zu den Optionen. – shahins

0

Jetzt finde ich die Art und Weise. Erstens können wir als Modell des product_features und user_feaures von model.productFeatures() and Model.userFeatures()

Dann sparen wir Produkteigenschaften wie diese

209699159874445020 
0.0533636957407,-0.0878632888198,0.105949401855,0.129774808884,0.0953511446714,0.16420891881,0.0558457262814,0.0587058141828 

So können wir Produkt-Features und Funktionen für Nutzer laden erhalten in zwei dicts in python und machen einen Server von Tornado, um Bewertungen mit diesen beiden dicts vorherzusagen. Ich werde den Code zum Beispiel zeigen.

def predict(item_id, user_id): 
    ind = item_id_index[item_id] 
    gf = goods_features[ind,1:] 
    ind = user_id_index[user_id] 
    uf = user_features[ind,1:] 
    return blas.ddot(gf,uf,len(gf),0,1,0,1) 

Als Abschluss. Wir müssen als Modell selbst bestehen und es ist nicht so schwierig wie wir dachten. Irgendwelche Vorschläge sind willkommen.

Verwandte Themen