Scikit-learn: Relevanzvektormaschine (RVM)

Erstellt am 3. Jan. 2013  ·  68Kommentare  ·  Quelle: scikit-learn/scikit-learn

RVM ist ein Bayes-Framework zum Erhalten spärlicher Lösungen für Regressions- und Klassifizierungsaufgaben. Es verwendete ein Modell mit identischer Form wie SVM (Support Vector Machine). Es behebt die folgenden Nachteile von SVM:
-- Die Anzahl der Basisfunktionen in SVM wächst linear mit der Größe des Trainingssets
In RVM beginnen wir mit 0 Basis und aktualisieren (hinzufügen/löschen) inkrementell den Satz der Basisfunktionen bis zur Konvergenz.

-- SVM-Vorhersagen sind nicht probabilistisch, während RVMs probabilistisch sind

-- Bei SVM ist es notwendig, den Margin-Trade-off-Parameter 'C' zu schätzen, was bei RVM nicht der Fall ist

-- Der SVM-Kernel sollte positiv definit sein. In RVM können wir jeden Kernel verwenden.

Es ist bereits in dlib http://dlib.net/dlib/svm/rvm_abstract.h.html implementiert und es gibt auch eine Matlab-Implementierung hier http://www.vectoranomaly.com/downloads/downloads.htm. Diese Codes sollen als Richtlinie dienen.
Ich denke, es wird eine gute Idee sein, es zu scikit-learn hinzuzufügen.

Verweise :
1- Tipping, M. E. and A. C. Faul (2003). Fast marginal likelihood maximisation for sparse Bayesian models. In C. M. Bishop and B. J. Frey (Eds.), Proceedings of the Ninth International Workshop on Artificial Intelligence and Statistics, Key West, FL, Jan 3-6.

2- Tipping, M. E. (2001). Sparse Bayesian learning and the relevance vector machine. Journal of Machine Learning Research 1, 211–244.

New Feature

Hilfreichster Kommentar

Hallo @amueller und alle zusammen! Wir haben diesen Thread gesehen und beschlossen, eine sklearn-kompatible Version des RVM zu implementieren (https://github.com/Mind-the-Pineapple/sklearn-rvm). Vieles haben wir auf der JamesRitchie-Implementierung aufgebaut. Es wäre toll, wenn jemand bereit wäre, sich das anzuschauen und Rückmeldungen und Beiträge (@themrzmaster) sind willkommen :)
Wir haben Pläne, dieses Repo zu pflegen, die schnelle Version auf Version 0.2 zu implementieren und hoffen, dass dieser Code vielleicht eines Tages für das scikit-learn-Haupt-Repository hilfreich sein könnte 😊 🍍

Alle 68 Kommentare

Ich müsste es noch einmal nachlesen, aber im Allgemeinen denke ich, dass RVMs eine gute Ergänzung wären.
dlib ist Boost-lizensiert, was kompatibel sein sollte. Es ist jedoch aufgrund des Boost-lastigen Codierungsstils möglicherweise nicht so einfach zu umschließen.
Ist das Problem mit SMO optimiert? Ist es sinnvoll, wenn wir SMO implementieren?

Ich muss meinen Bischof schnappen.

Welche Beziehung besteht zwischen ARD und RVM? Ist RVM nur die "Basisfunktion"-Version der ARD?

Übrigens hat es irgendjemanden jemals gestört, dass der Abschnitt Generalized Linear Models keine verallgemeinerten Modelle enthält?

Ok, also sollten wir den sequential sparse learning algorithm Bishop p verwenden. 352 folgen, denke ich?
Erkenne dich selbst ;)

Ich frage mich, ob es eine ähnliche Methode für die ARD gibt? Das wäre cool, da die aktuelle ARD-Implementierung ziemlich langsam ist :-/

Nein, die Implementierung von RVM verwendet definitiv kein SMO. Ich denke, SMO wird nur für die SVM-Optimierung verwendet.
Ja, wir sollten das sequential sparse learning algorithm in Referenz 1 Seite 7 verwenden (ist es in Bishop S. 352? welches). Dieser Algorithmus ist "einfach" genug und wir können ihn schreiben, ohne dlib zu verwenden. Ich dachte darüber nach, es in Python zu schreiben und dann Cython zur Optimierung zu verwenden. In diesem Fall können wir die Matlab-Implementierung voll ausnutzen. Was denkst du?
Wie auch immer, es sollte möglich sein, in C++ zu schreiben. Aber dafür brauchen wir eine gute Bibliothek für lineare Algebra in C++. Ich bin mir nicht sicher, ob scikit-learn standardmäßig mit einem ausgeliefert wird.

Bishop ist "Maschinelles Lernen und Mustererkennung".

Der Algorithmus ist wahrscheinlich nicht ganz einfach richtig zu machen. Wenn Sie damit beginnen möchten, wird es definitiv ein größeres Projekt. Wenn Sie interessiert sind und es auf irgendeine Weise umsetzen möchten, machen Sie weiter.

Die Implementierung unterscheidet sich auch ein wenig von der Einführung in scikit-learn. Dazu gehört auch das Schreiben von Tests, Dokumentation und einem Benutzerhandbuch – und hübschem Code.

Für einen ersten Versuch sollten Sie auf jeden Fall nur numpy verwenden. Es verwendet blas intern und ist daher recht schnell.
Die Beschleunigung mit Cython ist nur sinnvoll, wenn es viel Python-Overhead gibt. Wenn die ganze Zeit mit BLAS-Anrufen verbracht wird, macht die Verwendung von Cython nicht viel Sinn.

OK für Cython und Numpy. Ich wusste nicht, dass die Bischofsrede über RVM spricht.
Für die ARD- und RVM-Beziehung. Ich weiß nicht viel über die ARD. Aber in Referenz 2 sagten die Autoren, dass RVM auf ARD basiert: „Wir bezeichnen die Trainingsvektoren, die mit den verbleibenden Nicht-Null-Gewichten assoziiert sind, als ‚Relevanz‘-Vektoren, in Rücksicht auf das Prinzip der automatischen Relevanzbestimmung, das den vorgestellten Ansatz motiviert.“ Seite 3 (213) Zeile 8.
Wie funktioniert die ARD überhaupt?

ARD wird auch in Bishops Buch und in der Bedienungsanleitung erklärt . Es legt den Gewichten eine diagonale Gaussian vor und versucht, die Varianzen zu schätzen, was (wie ich es verstehe) dasselbe ist wie RVM. Ist das korrekt?

Mir ist klar, dass die erwähnte Referenz:

http://books.nips.cc/papers/files/nips20/NIPS2007_0976.pdf

ist nicht die Implementierung, die wir verwenden. Ich denke, dass @vmichel das implementiert hat
Bishop-Ansatz, während dieses Papier einen Fixpunkt-Ansatz ähnlich dem
ein Koordinatenabstiegsansatz. Dieser Code braucht definitiv etwas Liebe...

Danke @agramfort , das habe ich mich auch gefragt. Ich bin nicht auf die Details eingegangen, dachte aber, da das Papier die einzige Referenz war...

Ich wäre Ihnen sehr dankbar, wenn Sie dort einen Kommentar hinzufügen könnten, in dem Sie das verwendete Kapitel des Bischofs zitieren und vielleicht sagen, wir sollten stattdessen das andere Papier implementieren.

(Übrigens der derzeit langsamsten Dinge in der Testsuite passt ARD in den allgemeinen Tests an den Boston-Datensatz an)

Danke @agramfort , das habe ich mich auch gefragt. Ich bin nicht auf die Details eingegangen, dachte aber, da das Papier die einzige Referenz war...

Ich wäre Ihnen sehr dankbar, wenn Sie dort einen Kommentar hinzufügen könnten, in dem Sie das verwendete Kapitel des Bischofs zitieren und vielleicht sagen, wir sollten stattdessen das andere Papier implementieren.

siehe: https://github.com/scikit-learn/scikit-learn/pull/1530

Übrigens hat es irgendjemanden jemals gestört, dass der Abschnitt Generalized Linear
Modelle enthält keine verallgemeinerten Modelle?

Es tut es: logistische Regressionen.

Ich frage mich, ob es eine ähnliche Methode für die ARD gibt? Das wäre cool wie die
aktuelle ARD-Implementierung ist ziemlich langsam :-/

Ich glaube, dass der vielversprechendste Schnelllöser von ARD darin besteht, die
Strategie ausgesetzt in:
http://books.nips.cc/papers/files/nips20/NIPS2007_0976.pdf

Ich habe einen Code geschrieben, der vor einiger Zeit geschrieben wurde.

Wenn jemand bei der ARD mitarbeiten möchte, dachte ich, das könnte nützlich sein.

https://gist.github.com/4494613

WARNUNG: Es wurde nicht viel getestet und ich garantiere nicht für die Richtigkeit, aber es
scheint zu funktionieren.

@amueller
Ich habe ARD in http://books.nips.cc/papers/files/nips20/NIPS2007_0976.pdf analysiert und ich denke, RVM und ARD wollen die gleiche Zielfunktion optimieren. Der Unterschied liegt in der Methode zur Optimierung dieser Funktion. Bei RVM stellten die Autoren fest, dass der größte Teil der Gewichtung nahe Null liegt und sie nutzten dies, um einen "schnellen" Algorithmus abzuleiten.

Das klingt seltsam. Wenn das Ziel das gleiche ist, sollten Sie in der Lage sein, die gleichen Methoden zur Optimierung zu verwenden, oder?

Ja, das sollten Sie auf jeden Fall, aber ich denke, die Autoren von RVM haben eine andere Optimierungsstrategie verwendet, um einen schnelleren und sparsameren Algorithmus zu haben.

@yedtoss Ich bin mir ziemlich sicher, dass es noch einen anderen Unterschied gibt. Wie ich bereits sagte, könnte dies sein, dass RVM in einem Feature-Space oder mit einem Kernel oder so funktioniert. Sonst könnte man einfach die ARD-Implementierung ersetzen? Das ist jedoch Regression, und Sie wollen eine Klassifizierung, oder?

@agramfort weißt du etwas über den Unterschied von ARD und RVM?

@amueller
Anfänglich ist RVM eine Regressionstechnik. Aber die Autoren stellten eine Möglichkeit vor, sie zur Klassifizierung zu verwenden. RVM verwendet jede Art von Kernel.
Was ich meine, ist, dass die logarithmische Wahrscheinlichkeit von ARD (Gleichung 2 von A New View of Automatic Relevance Determination) und von RVM (Gleichung 7 von Fast Marginal Likelihood Maximization for Sparse Bayesian Models) identisch sind.

Ich glaube, ich müsste die Zeitungen lesen, um zu wissen, was los ist...

Entschuldigung Jungs, ich bin nicht so der Bayesianer ... Ich kenne mich nicht gut aus
Feinheiten...

RVMs sind von Microsoft patentiert .

verrückt.

@larsmans @amueller Während es in den USA ein Patent für RVM gibt, empfiehlt der Autor auf seiner Webseite eine GPLv2-Matlab-Implementierung, daher denke ich, dass es in Ordnung ist, sie zu implementieren ...
http://www.miketipping.com/sparsebayes.htm

Am besten,
Angelos

@kalxas Lizenz und Patent sind ziemlich orthogonal und insbesondere GPLv2 hat Softwarepatente nicht

Allerdings habe ich in der Zwischenzeit herausgefunden, dass Support Vector Machines von AT&T patentiert sind, aber das Patent wurde anscheinend nie durchgesetzt. Wenn etwas Ähnliches von RVMs nachgewiesen werden kann, werde ich meine Meinung ändern.

@larsmans Ich habe eine reine Numpy/Python-Portierung der Dlib-Implementierung geschrieben (im Moment schrecklich langsam, ich werde versuchen, sie zu cythonisieren). Laut Header gibt es das Implem von dlib seit 2008 und sie scheinen damit einverstanden zu sein. Würden Sie Ihre Meinung über RVM in sklearn ändern?

Lass uns die Meinung von

Gibt es Updates zu diesem Thema? Ich habe mich in letzter Zeit mit RVMs befasst und mich gefragt, ob es dort Code gibt ...

Ich glaube nicht, dass sich irgendjemand um eine schnelle Umsetzung bemüht hat, und wir sind uns noch unsicher über den rechtlichen Status.

@jlopezpena Schauen Sie sich dlib an, der Code ist ziemlich klar und es gibt nur Header (Vorlagen). Es sollte ziemlich einfach sein, eine C-Erweiterung für die Verwendung von numpy . zu erstellen

Hallo allerseits,

Ich habe kürzlich das frei verfügbare SparseBayes MATLAB-Programm von Mike Tipping, das hauptsächlich die RVM implementiert, von MATLAB in Python übersetzt. Es ist hier zu finden: https://github.com/jhallock7/SparseBayes-Python . Ich kontaktierte Mike Tipping und er sagte, dass Microsofts Patent nur für den ursprünglichen langsamen Algorithmus gilt, während das SparseBayes-Programm den schnelleren verwendet, der hier gefunden wird: http://www.miketipping.com/papers/met-fastsbl.pdf . Es wäre also in Ordnung, wenn irgendeine Form seines Programms in scikit-learn eingebunden würde. Ich bin relativ neu in Python, daher kann meine Übersetzung zweifellos verbessert oder modifiziert werden.

Danke, dass du dazu beitragen möchtest und danke auch für die Überprüfung des Patentstatus.
Es stellt sich jedoch eine andere Frage, ob dieser Algorithmus allgemein nützlich ist.

Ich habe mir den Algorithmus und seine Verwendung nicht mehr angesehen, seit ich Bishops Buch das letzte Mal gelesen habe, was eine Weile her ist.
Ich denke, ein interessantes Beispiel wäre zu zeigen, dass es entweder eine bessere Unsicherheit ergibt als eine Kalibrierung
eine SVM ist oder schneller ist (das Kalibrieren einer SVM und die Suche über C erfordert viel Kreuzvalidierung).

@amueller RVM (hauptsächlich Revelance Vector Regression (RVR)) ist bei der Neuroimaging-Datenanalyse ziemlich nützlich. Viele Papiere verwenden diese Methode anstelle von SVR, um Vorhersagen zu treffen. Es ist perfekt, wenn diese Methode der scikit Learn Toolbox hinzugefügt werden kann.

@amueller Ich habe eine langsame Version von RVM implementiert, die entweder EM- oder Festkommaalgorithmen verwenden kann, um das Modell
( Hier ist ein einfaches Beispiel, das auch in Tipping 2001 verwendet wird)

@amueller (Hinzufügen zum vorherigen Kommentar) Und offensichtlich wird eine kleine Anzahl von Unterstützungsvektoren eine sehr schnelle Vorhersage implizieren.
Ein weiterer Vorteil von RVM ist die probabilistische Behandlung. Mit RVM für jeden Datenpunkt im Testsatz finden Sie nicht nur die Punktschätzung, sondern auch die prädiktive Verteilung

liefert RVR auch Wahrscheinlichkeitsverteilungen?

Klingt wie RVR und RVM sind vernünftige Kandidaten für die Aufnahme. Ich bin mir jedoch nicht sicher, ob die Algorithmen auf dem neuesten Stand sind. Ist es http://www.miketipping.com/papers/met-fastsbl.pdf ? Das scheint ziemlich alt zu sein. Der Programmierstil von SparseBayes ist ... interessant, und ich denke, er würde besser als Referenz denn als Grundlage für die Sklearn-Implementierung dienen.

Ja RVR bietet Wahrscheinlichkeitsverteilungen, aber in einigen Fällen Varianz der prädiktiven Verteilung außerhalb der Domäne des Trainingssatzes für Datenpunkte kleiner sein Beispiel .
Nach meinem besten Wissen ist das von Ihnen erwähnte Papier die letzte Version von RVM, es entspricht auch der Matlab-Implementierung auf der Website von Tipping (Version 2).

Ich habe auch einen interessanten Vergleich der RVM- und SVM-Geschwindigkeit in Kevin Murphys Buch gefunden:
"RVM ist auch am schnellsten zu trainieren. Dies trotz der Tatsache, dass sich der RVM-Code in Matlab und der SVM-Code in C befindet" (Kapitel 14, S.490). Es scheint jedoch, dass sie Vergleiche nur für kleine Datensätze angestellt haben.

@amueller RVM (hauptsächlich Revelance Vector Regression (RVR)) ist ziemlich nützlich in
Neuroimaging-Datenanalyse.

Ich bin nicht überzeugt (und ich mache Neuroimaging). Ich habe kein gutes gesehen
empirischer Vergleich.

Ich sehe den richtigen Weg darin, RVMs in einem separaten Paket zu haben, mit
scikit-learn API und ermutigen zu guter empirischer Arbeit, um ihre
Nützlichkeit. Wenn sie nützlich sind, führen Sie sie in scikit-learn zusammen.

Einige Neuroimaging-Studien haben die Relevanzvektorregression (RVR) verwendet und
Vergleiche zwischen RVR und SVR angestellt.
Um einige aufzuzählen:
http://www.sciencedirect.com/science/article/pii/S1053811910000108
http://www.sciencedirect.com/science/article/pii/S1053811910012644
http://www.sciencedirect.com/science/article/pii/S1053811910003459
http://www.nature.com/npp/journal/v39/n3/abs/npp2013251a.html

Und der RVR ist in einer Toolbox zur Mustererkennung implementiert für
Neuroimaging-Daten:
http://www.mlnl.cs.ucl.ac.uk/pronto/

Ich hoffe, dass RVR in scikit-learn integriert werden kann.

Die besten Wünsche

Zaixu

Am Do, 15. Okt 2015 um 12:57 Uhr, Gael Varoquaux [email protected]
schrieb:

@amueller RVM (hauptsächlich Revelance Vector Regression (RVR)) ist hübsch
nützlich in
Neuroimaging-Datenanalyse.

Ich bin nicht überzeugt (und ich mache Neuroimaging). Ich habe kein gutes gesehen
empirischer Vergleich.

Ich sehe den richtigen Weg darin, RVMs in einem separaten Paket zu haben, mit
scikit-learn API und ermutigen zu guter empirischer Arbeit, um ihre
Nützlichkeit. Wenn sie nützlich sind, führen Sie sie in scikit-learn zusammen.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/1513#issuecomment -148281784
.

Ich sehe den richtigen Weg darin, RVMs in einem separaten Paket mit scikit-learn API zu haben und gute empirische Arbeit zu ermutigen, um ihre Nützlichkeit zu zeigen. Wenn sie nützlich sind, führen Sie sie in scikit-learn zusammen.

+1

Ich meine, es gibt https://github.com/AmazaspShumik/Bayesian-Regression-Methods/blob/master/Relevance%20Vector%20Machine%20%26%20ARD/rvm.py, das relativ kompatibel aussieht. benötigt set_params und get_params oder erbt von BaseEstimator .

Und es gibt https://github.com/jhallock7/SparseBayes-Python, das gewickelt werden könnte.

@ZaixuCui warum möchten Sie, dass es in scikit-learn ist, wenn es eine gebrauchsfertige Implementierung gibt?

Ich neige dazu, @GaelVaroquaux und @mblondel zuzustimmen . Wenn in fast zehn Jahren niemand über Algorithmen veröffentlicht hat, scheinen die Leute nicht sehr daran interessiert zu sein. [oh, der Standardalgorithmus ist sogar von 2003. aber dann ist libsvm wieder 2005]

Weil ich Scikit benutze, lerne SVR, Elastic-Net.
Wenn es also eine RVR-Implementierung gibt, muss ich Matlab nicht verwenden, wenn
Analyse des maschinellen Lernens durchführen.

Vielen Dank.
Wünsche dir alles Gute

Zaixu

Am Do, 15.10.2015 um 11:13 Uhr, Andreas Mueller [email protected]
schrieb:

Ich meine, es gibt
https://github.com/AmazaspShumik/Bayesian-Regression-Methods/blob/master/Relevance%20Vector%20Machine%20%26%20ARD/rvm.py
was relativ kompatibel aussieht. braucht set_params und get_params oder
erben von BaseEstimator.

Und es gibt https://github.com/jhallock7/SparseBayes-Python, das könnte
gewickelt werden.

@ZaixuCui https://github.com/ZaixuCui warum soll es drin sein ?
scikit-learn, wenn es eine gebrauchsfertige Implementierung gibt?

Ich neige dazu, @GaelVaroquaux zuzustimmen https://github.com/GaelVaroquaux
und @mblondel https://github.com/mblondel . Wenn niemand veröffentlicht auf
Algorithmen in fast zehn Jahren scheinen die Leute nicht sehr daran interessiert zu sein.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/1513#issuecomment -148440665
.

Weil ich Scikit benutze, lerne SVR, Elastic-Net.
Wenn es also eine RVR-Implementierung gibt, muss ich Matlab nicht verwenden, wenn
Analyse des maschinellen Lernens durchführen.

Sie können den Python-Code für RVR verwenden, auf den wir in der hingewiesen haben
Diskussion.

OK danke

Am Mo, 19. Okt 2015 um 8:29 Uhr, Gael Varoquaux [email protected]
schrieb:

Weil ich Scikit benutze, lerne SVR, Elastic-Net.
Wenn es also eine RVR-Implementierung gibt, muss ich Matlab nicht verwenden
Wenn
Analyse des maschinellen Lernens durchführen.

Sie können den Python-Code für RVR verwenden, auf den wir in der hingewiesen haben
Diskussion.


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/1513#issuecomment -149213151
.

Könnten wir dies nicht als sehr leichte Klasse basierend auf unserer neuen Gaussian Process-Implementierung implementieren? Soweit ich weiß, ist RVR nur der Name, der einem GP mit einer speziellen Art von Kernel gegeben wird.

Obwohl dies nur minimalen Aufwand erfordern würde, ist die Implementierung von RVR auf der Basis von GP möglicherweise nicht die am besten geeignete Vorgehensweise? CC: @jmetzen

@amueller @GaelVaroquaux @ZaixuCui @yedtoss @jlopezpena

Hallo, ich habe eine schnelle Version von Relevance Vector Machine mit scikit-learn API implementiert,
Also, wenn jemand beabsichtigt, es zu verwenden, kann es gerne tun.

Code: https://github.com/AmazaspShumik/sklearn_bayes/blob/master/sklearn_bayes/rvm/fast_rvm.py

Beispiele: https://github.com/AmazaspShumik/sklearn_bayes/blob/master/ipython_notebooks_tutorials/rvm_ard/rvm_demo.ipynb

Es gibt vier implementierte Klassen im Code:
-RückschrittARD
-KlassifizierungARD
-RVC
-RVR

So können auch RegressionARD und ClassificationARD nützlich sein

@AmazaspShumik vielen Dank für Ihre Umsetzung. Super Arbeit :+1:

@AmazaspShumik

Vielen Dank für Ihre Bemühungen.
Ich werde dieses Paket auf jeden Fall ausprobieren.

Wünsche dir das Beste.

Zaixu

Hatte jemand Probleme bei der Implementierung der @ AmazaspShumik-Methode Predict_proba?

Hat jemand hier eine Bibliothek für RVM auf PHP? ich verstehe nicht mit RVm kann das für mich erklären?

hat jemand eine Bibliothek RVM für PHP?

RVMs sind von Microsoft patentiert .

Patent läuft bald aus

2019-09-04
Voraussichtlicher Ablauf

Einige in der Diskussion erwähnte Links zur Stellen Sie sie einfach hier für Leute ein, die sich für (und einige andere Implementierungen) interessieren:

https://github.com/AmazaspShumik/sklearn_bayes - RVM + einige andere Algs-Implementierungen
https://github.com/JamesRitchie/scikit-rvm - einfache Implementierungen mit scipy
https://github.com/siavashserver/neonrvm - C-Implementierung mit Python-Anbindung

Hier ist auch eine relevante Papiersammlung:
http://www.miketipping.com/sparsebayes.htm

Darin befindet sich eine C++-Implementierung von RVM (Ergänzungsmaterial zu einem Paper):
https://pubs.acs.org/doi/abs/10.1021/ci200128w
Genau hier:
https://pubs.acs.org/doi/suppl/10.1021/ci200128w/suppl_file/ci200128w_si_001.zip

Microsoft-Patent ist abgelaufen. Könnten wir es möglicherweise zu sklearn hinzufügen?

Es löscht leicht die Standardanforderungen, also sehe ich nicht, warum nicht. Vielleicht ist es interessant, ein paar gute/überzeugende Beispiele zu haben. scikit-rvm und sklearn_bayes scheinen ungepflegt, können aber dennoch nützlich sein.
Braucht jetzt wohl meistens einen Champion, der die Arbeit auch wirklich reinstecken will.

In Murphys Buch behauptet er, dass die Leistung von RVMs der von SVMs sehr ähnlich ist, aber den Vorteil hat, dass es sich um eine echte probabilistische Methode handelt, die kalibrierte Wahrscheinlichkeiten als Antworten liefert. Hier https://github.com/probml/pmtk3/blob/master/docs/tutorial/html/tutKernelClassif.html hat er die Methoden anhand eines kleinen Datensatzes verglichen

Können Sie einen Link zur gerenderten Version bereitstellen?
Es ist auch nicht überraschend, dass es sich um ein kleines Dataset handelt, da es wahrscheinlich Skalierbarkeitsprobleme gibt.

@amueller http://htmlpreview.github.io/?https : //github.com/probml/pmtk3/blob/master/docs/tutorial/html/tutKernelClassif.html

Ich werde versuchen, an der Umsetzung zu arbeiten. Jede Hilfe wäre sehr dankbar.

IIRC, ein Vorteil von RVM gegenüber SVM, besteht darin, dass Sie den optimalen C-Parameter finden können, ohne einen Optimierungsdurchgang durchzuführen.
Ich frage mich, ob der ursprüngliche Autor bereit wäre, seine Referenzimplementierung beizutragen.
Nun, es ist in Matlab und Mike Tipping ist nicht einmal auf github...

Hallo @amueller und alle zusammen! Wir haben diesen Thread gesehen und beschlossen, eine sklearn-kompatible Version des RVM zu implementieren (https://github.com/Mind-the-Pineapple/sklearn-rvm). Vieles haben wir auf der JamesRitchie-Implementierung aufgebaut. Es wäre toll, wenn jemand bereit wäre, sich das anzuschauen und Rückmeldungen und Beiträge (@themrzmaster) sind willkommen :)
Wir haben Pläne, dieses Repo zu pflegen, die schnelle Version auf Version 0.2 zu implementieren und hoffen, dass dieser Code vielleicht eines Tages für das scikit-learn-Haupt-Repository hilfreich sein könnte 😊 🍍

Hallo @amueller und alle zusammen! Wir haben diesen Thread gesehen und beschlossen, eine sklearn-kompatible Version des RVM zu implementieren (https://github.com/Mind-the-Pineapple/sklearn-rvm). Vieles haben wir auf der JamesRitchie-Implementierung aufgebaut. Es wäre toll, wenn jemand bereit wäre, sich das anzuschauen und Rückmeldungen und Beiträge (@themrzmaster) sind willkommen :)
Wir haben Pläne, dieses Repo zu pflegen, die schnelle Version auf Version 0.2 zu implementieren und hoffen, dass dieser Code vielleicht eines Tages für das scikit-learn-Haupt-Repository hilfreich sein könnte 😊 🍍

Hallo @PedroFerreiradaCosta
Ich habe diese scikit-learn-API getestet und es scheint, dass sie immer noch so langsam ist (scheint noch nicht zu reagieren). Glauben Sie, dass der Grund dafür sein könnte, dass es unter Windows implementiert ist? Unten ist, was ich verwendet habe:
EMRVC(kernel='rbf', gamma='scale', n_iter_posterior=10, max_iter=500, compute_score=True , verbose=True) Danke für deine Antwort @themrzmaster @PedroFerreiradaCosta

Hallo @mustuner ! Vielen Dank für das Ausprobieren unserer API!
Die RVM hat eine höhere Rechenkomplexität als beispielsweise die SVM (O(M^3)), was sie in Fällen mit einer großen Anzahl von Basisfunktionen langsamer machen kann. In jedem Fall gibt es eine Reihe von Dingen, die Sie tun können, um den Prozess zu beschleunigen. Sie können die Kernel-Matrix vorab berechnen und unserem Algorithmus anstelle von X zuführen (set kernel='precomputed') oder Sie können auch die Skalierung von alpha_threshold verringern (standardmäßig auf 1e5 eingestellt). Bitte beachten Sie, dass diese zweite Option zu einer geringeren Genauigkeit des Modells führen kann.
Hoffe das hilft! Und zögern Sie nicht, ein Problem zu öffnen, damit wir Ihnen weiterhelfen können.

Am besten,
Pedro

Hallo @mustuner ! Vielen Dank für das Ausprobieren unserer API!
Die RVM hat eine höhere Rechenkomplexität als beispielsweise die SVM (O(M^3)), was sie in Fällen mit einer großen Anzahl von Basisfunktionen langsamer machen kann. In jedem Fall gibt es eine Reihe von Dingen, die Sie tun können, um den Prozess zu beschleunigen. Sie können die Kernel-Matrix vorab berechnen und unserem Algorithmus anstelle von X zuführen (set kernel='precomputed') oder Sie können auch die Skalierung von alpha_threshold verringern (standardmäßig auf 1e5 eingestellt). Bitte beachten Sie, dass diese zweite Option zu einer geringeren Genauigkeit des Modells führen kann.
Hoffe das hilft! Und zögern Sie nicht, ein Problem zu öffnen, damit wir Ihnen weiterhelfen können.

Am besten,
Pedro

Danke @PedroFerreiradaCosta Lass mich das versuchen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen