2016-06-11 11 views
0

Ich habe am maschinellen Lernen KNN (K Nearest Neighbors) -Algorithmus mit Python und Python Scikit-lernen Machine Learning API gearbeitet.Scikit-lernen KNN (K Nearest Neighbours) parallelisieren mit Apache Spark

Ich habe Beispielcode mit Spielzeug-Dataset einfach mit Python und Scikit-lernen erstellt und mein KNN funktioniert gut. Aber wie wir wissen, ist die Scikit-learn-API so aufgebaut, dass sie auf einer einzelnen Maschine funktioniert, und sobald ich meine Spielzeugdaten durch Millionen von Datensätzen ersetzen werde, wird dies meine Ausgabeleistung verringern.

Ich habe nach vielen Optionen, Hilfe und Codebeispielen gesucht, die meine maschinelle Lernverarbeitung parallel unter Verwendung von Spark mit Scikit-learn API verteilen, aber ich fand keine richtige Lösung und Beispiele.

Können Sie mir bitte mitteilen, wie ich meine Leistung mit den K Nearest Neighbors von Apache Spark und Scikit-learn API erreichen und steigern kann?

Vielen Dank im Voraus!

+0

Ihre Frage ist sehr breit. Ich denke jedoch, dass Ihnen dieser Beitrag helfen kann [Automatische Skalierung von Sci-Kits mit Apache Spark] (https://databricks.com/blog/2016/02/08/auto-scaling-scikit-learn-with-apache-spark .html) –

+0

Hallo @AlbertoBonsanto, ich habe den Link, den du gegeben hast, durchgelaufen, aber ich finde nicht, wie ich mein Scikit-KNN mit Spark skalieren soll. Ich habe auch ein Drittanbieter-Paket für Scikit-learn auf Sparks offizieller Website heruntergeladen, aber ich bin mir nicht sicher, ob es um die API geht und finde nicht viel Hilfe mit einem richtigen Beispiel. – Nishan

Antwort

0

Nun laut Diskussionen https://issues.apache.org/jira/browse/SPARK-2336 hier MLLib (Machine Learning Library für Apache Spark) hat keine Implementierung von KNN. Sie könnten versuchen https://github.com/saurfang/spark-knn.

+0

Hallo Krishna, Ja Spark MLlib hat keine Unterstützung für KNN. Aber hier verwende ich Sparks MLlib nicht zum maschinellen Lernen. Ich benutze Python und Scikit-learn KNN. Aber das Problem ist, dass mein Algorithmus viele Stunden braucht, um den Datensatz und die Vorhersage zu trainieren. Daher möchte ich die Spark-Distributionsleistung mit meiner vorhandenen Python-KNN-Implementierung nutzen, um meine Prozesszeit zu reduzieren. – Nishan

+0

Hier kann Spark nur für Hyperparameter-Optimierungstechniken wie Rastersuche helfen. Ich bin mir nicht sicher, ob Sie erreichen können, wonach Sie fragen. –

+0

Hallo Krishna, du hast Recht. Aber ich dachte daran, die Modellverarbeitung in separate Chargen aufzuteilen und die gesamte Stapelverarbeitung unter Verwendung von Spark in Cluster zu parallelisieren. Ich dachte, auf diese Weise können wir Parallelität erreichen, aber ich muss das mit den tatsächlichen Daten versuchen und sehen, dass es einen Einfluss auf die Verarbeitungszeit hat oder nicht. Vielen Dank . – Nishan