DISCLAIMER Ich habe nie NNLS
verwendet und habe keine Ahnung über nicht-negative multiple lineare Regression.
Sie betrachten Spark 2.1.1 NNLS
, die das tut, was Sie wollen, aber ist nicht der Weg zu gehen seit the latest Spark 2.2.1 marked as private[spark].
private[spark] object NNLS {
Noch wichtiger ist, als Spark 2.0, org.apache.spark.mllib
Paket (inkl. org.apache.spark.mllib.optimization
dass NNLS
gehört) ist in maintenance mode:
Die MLlib RDD-basierte API ist jetzt in den Wartungsmodus.
Ab Spark 2.0 sind die RDD-basierten APIs im Paket spark.mllib in den Wartungsmodus gewechselt. Die primäre Machine Learning-API für Spark ist jetzt die DataFrame-basierte API im Paket spark.ml.
Mit anderen Worten, Sie sollten sich von dem Paket und NNLS
insbesondere fern bleiben.
Was sind die Alternativen dann?
Sie könnten die Tests von NNLS
betrachten, d. H. NNLSSuite wo Sie einige Antworten finden konnten.
Der tatsächliche Typ von ATA ist jedoch doppelt [].
Das ist eine Matrix, so dass die Elemente wieder verdoppelt werden. Als eine Tatsache wird ata
dgemv
direkt an BLAS des bestanden (here und here), die in den LAPACK docs beschrieben:
DGEMV führt eine der Matrix-Vektor
y := alpha*A*x + beta*y, or y := alpha*A**T*x + beta*y,
Operationen, bei denen alpha und Beta sind Skalare, x und y sind Vektoren und A ist eine m-n-Matrix.
Das sollte Ihnen genug Antworten geben.
Eine andere Frage wäre, was werden die empfohlene Art und Weise in Funken MLlib für NNLS
-ähnlichen Berechnungen ist?
Es sieht aus wie Spark MLLib ALS-Algorithmus usesNNLS
unter der Decke (was für Maschinen lernen Praktiker nicht so überraschend sein kann).
Dieser Teil des Codes wird verwendet, wenn ALS zum Trainieren eines Modells mit aktiviertem nonnegative-Parameter konfiguriert ist, d. H. true
(standardmäßig deaktiviert).
nichtnegativ Param für ob Nichtnegativitätsbedingungen anzuwenden.
Default: false
ob nicht negative Einschränkung für kleinste Quadrate verwenden
Ich würde empfehlen, dass ein Teil der Funken MLlib Überprüfung tiefer in die Verwendungen von NNLS
zu bekommen für nicht-negative lineare Regression zur Problemlösung .
Vielen Dank für die detaillierte Beschreibung. 'Mit anderen Worten, Sie sollten weg von der Verpackung und insbesondere NNLS bleiben. Also, sollte ich nicht NNLS im Moment verwenden? Wie auch immer, ich lese [NNLSSuite] (https://github.com/apache/spark/blob/master/mllib/src/test/scala/org/apache/spark/mllib/optimization/NNLSSuite.scala#L27) und festgestellt, dass 'ata' abgeflacht ist. Ich habe einige Testcodes geschrieben und es scheint gut zu funktionieren. Also werde ich es unten posten. – takoyaki9n
_ "Also, sollte ich nicht NNLS im Moment verwenden?" _ Das scheint so. Akzeptieren Sie die Antwort (oder zumindest den Upvote), wenn es geholfen hat. Das wird anderen helfen zu finden, was dir geholfen hat. Vielen Dank! –