2012-03-26 25 views
4

Ich fange gerade an, mit Mahout zu arbeiten, und eine Sache, die mich sehr verwirrte, ist das Fehlen der linearen Regression. Sogar die logistische Regression, die viel schwieriger ist, wird bis zu einem gewissen Grad durch die Forschung unterstützt, aber es ist alles still bezüglich der linearen Regressionsfront!Warum Mahout noch keine lineare Regression hat

Von dem, was ich verstehe, OLS ist eine der einfachsten Probleme zu lösen -

Y = Xb + e

eine lineare Regressions Lösung von b = (X^TX)^(- 1) X^TY, wobei X^T die Transponierte von X ist, und wenn die Matrix (X^TX) singulär (dh nicht invertierbar) wird, ist es vollkommen in Ordnung, eine Fehlermeldung zu zeigen, obwohl eine Lösung mit verallgemeinerter Invertierung existiert.

Berechnung von sowohl X^T X und X^Y sind nur Berechnungen von Summen und Summe von Produkten von Elementen, was wahrscheinlich die einfachste Sache mit MapReduce ist, wie ich es verstehe.

(Was mich denken lässt ... gibt es ein Modul, die native Matrix-Operationen erforderlich unterstützt Regression cofficients zu berechnen? Das wäre ein Regressionsmodul unnötig in der Tat machen ...)

bin ich etwas fehlt, die Regression macht schwer in Mahout zu berechnen?

Antwort

5

Ich weiß nicht, ob es so etwas wie "warum" gibt. Es existiert einfach nicht.

Aber ich denke, es ist das Gegenteil von dem, was Sie vermuten; es ist zu einfach". Sofern Sie nicht eine Lösung von zehn Millionen Gleichungen lösen, ist Hadoop wahrscheinlich nicht von einer Größenordnung. Es gibt viele vorhandene Pakete, die das auf einem Rechner wirklich gut machen können. Wenn Sie etwas auch in Java von Apache wollen, schauen Sie sich zum Beispiel Commons Math an.

Um nicht zu sagen, es könnte keine gute nicht-verteilte Version in dem Projekt sein, aber da der Schwerpunkt großräumig und Hadoop ist, ist das wahrscheinlich "warum".

+1

@kalEl weiterhin - Mahout ist ein Open-Source-Projekt, wenn Sie denken, dass es so einfach ist, fügen Sie es einfach selbst hinzu –

0

Ich denke, es ist einfach, weil die Komplexität der NxN-Matrixinversion O (N^3) ist und einer numerischen Instabilität unterliegt, die bei dünnen hochdimensionalen Matrizen ziemlich häufig ist.

Hat jemand eine andere Erklärung oder kann jemand meine Gedanken bestätigen?

Verwandte Themen