Scikit-learn: Poisson-, Gamma- und Tweedie-Familie von Verlustfunktionen

Erstellt am 7. Dez. 2015  ·  57Kommentare  ·  Quelle: scikit-learn/scikit-learn

Ich möchte, dass sklearn Poisson-, Gamma- und andere Verlustfunktionen der Tweedie-Familie unterstützt. Diese Verlustverteilungen werden in der Industrie häufig für Zähl- und andere Long-Tail-Daten verwendet. Darüber hinaus sind sie in anderen Bibliotheken wie R: GLM, GLMNET, GBM ext implementiert. Ein Teil der Implementierung dieser Verteilungen würde darin bestehen, eine Möglichkeit für die Weitergabe von Offsets an die Verlustfunktionen einzubeziehen. Dies ist eine gängige Methode, um mit der Offenlegung umzugehen, wenn eine Protokollverknüpfungsfunktion mit diesen Distributionen verwendet wird.

Wäre die Sklearn-Community bereit, diese Verlustfunktionen hinzuzufügen? Wenn ja, wären ich oder (hoffentlich andere) bereit, die Machbarkeit der Implementierung dieser Verlustfunktionen und Offsets in die Sklearn-API zu untersuchen. Danke

New Feature

Hilfreichster Kommentar

@thenomemac Sie haben absolut Recht mit der Änderung der Verlustfunktion aufgrund der Belichtung, ich habe mich geirrt. Tatsächlich glaube ich, dass ich es geschafft habe. Ich habe ein sehr frühes WIP (eher nur herumspielen): https://github.com/bjlkeng/scikit-learn/blob/poisson_regression/sklearn/linear_model/poisson.py (sehen Sie sich die Funktion _poisson_loss() an ).

@josef-pkt Danke, ich habe mir die statsmodels-Implementierung angesehen, sie ist eigentlich ganz gut (mit Ausnahme der API, von der ich kein Fan bin). Es ist eigentlich etwas allgemeiner, wo ihr "Zähl"-Modell andere zählbasierte Regressionen wie negative Binomialzahlen unterstützt. Die Statsmodel-Implementierung berücksichtigt bereits Exposition und Regularisierung (was ich auch gesucht habe).

Angesichts der Tatsache, dass statsmodels eine Implementierung hat, denken Sie, dass es immer noch wertvoll ist, so etwas in sklearn zu haben? Wenn ja, kann ich versuchen, etwas mehr Mühe darauf zu verwenden, es in eine brauchbare Form zu bringen. Ich war gerade ziemlich beschäftigt mit der Arbeit, also hatte ich nicht viel Zeit.

Alle 57 Kommentare

Ich denke, wir sollten zumindest eine Poisson-Regression hinzufügen, obwohl ich damit nicht sehr vertraut bin.
Haben Sie offene Beispieldatensätze?
Für welche Art von Daten wird Gammaverlust verwendet?

Kannst du den Versatz näher erläutern?

Dies wären alles separate Modelle in linear_model , denke ich. Ich bin mir nicht sicher, ob sie normalerweise mit l-bfgs gelernt werden oder ob die Leute CD-Löser verwenden? Vielleicht wissen @mblondel oder @larsmans oder @agramfort mehr?

Die Poisson-Verteilung wird häufig zur Modellierung von Zähldaten verwendet. Es kann gezeigt werden, dass dies die Grenzverteilung für eine normale Annäherung an ein Binomial ist, bei der die Anzahl der Versuche gegen unendlich geht und die Wahrscheinlichkeit gegen Null geht und beides mit einer solchen Rate geschieht, dass np gleich einer mittleren Häufigkeit für Ihren Prozess ist. Es kann theoretisch gezeigt werden, dass Gamma die Zeit ist, bis ein Poisson-Ereignis eintritt. So kann zum Beispiel die Anzahl der Unfälle, die Sie in diesem Jahr haben werden, theoretisch als Poisson nachgewiesen werden. Und die erwartete Zeit bis zu Ihrem nächsten Unfall ist oder Third Ext ist ein Gamma-Prozess. Tweedie ist ein verallgemeinerter Elternteil dieser Verteilungen, der eine zusätzliche Gewichtung von Null zulässt. Stellen Sie sich Tweedie als Modellverlust in Dollar vor, und 99 Prozent aller Kunden haben ein Nullgewicht, der Rest hat einen lang anhaltenden positiven Verlust oder Gamma. In der Praxis werden diese Verteilungen häufig für Regressionsprobleme in Versicherungen, Gefahrenmodellen, Katastrophenmodellen, Finanzen, Wirtschafts- und Sozialwissenschaften verwendet. Fühlen Sie sich frei, auf Wikipedia zu verweisen. Ich möchte diese Verlustfunktionen als Auswahlmöglichkeiten in glmnet, GBM und Random Forest haben. Dies bedeutet, dass in GBM zum Beispiel der Boosting-Algorithmus von Freedman diesen Verlust anstelle von Gauß- oder Quartilverlust verwenden würde. Gamma und Poisson (beta tweedie) sind bereits in Rs GBM- und glm-Paketen und xgboost hat etwas Unterstützung. Die Offsets werden von Praktikern verwendet, um ihre Daten nach Exposition zu gewichten. Typischerweise hat ein Poisson-Modell eine Verknüpfungsfunktion, z. Hier ermöglicht der Offset eine unterschiedliche Aufnahme der Belichtung für unterschiedliche Betrachtungseinheiten. Poisson-Prozesse sind additiv, aber unterschiedliche Beispiele können über ungleichen Raum oder Zeit oder Kundenzahlen genommen worden sein, und daher wird der Offset-Vektor für jede Beobachtung benötigt. Ich bin bereit, die Programmierung in Angriff zu nehmen, bin aber mit der API nicht sehr vertraut, daher würde ich mich über Vorschläge freuen, damit ich dies richtig mache und es in die Version einführe.

Okay, ich arbeite an der Umsetzung. Ich füge die drei oben genannten Verteilungen und Offsets hinzu. Ich würde mich über Feedback vom allgemeinen sklearn-Publikum zur Implementierung der Offsets freuen. Ich plane, dem GradientBoostedRegression-Aufruf 'offset=None' ein neues Argument hinzuzufügen, wobei offset ein vektorähnliches Objekt mit der Länge n (Anzahl der Samples) wäre. Meine Hauptfrage ist, ob ich Offsets zu allen Verlustfunktionen (Gaußian, Huber, Quantile) hinzufügen sollte, wie es in der GBM-Implementierung von R der Fall ist, oder ob ich einfach hinzufügen sollte, dass die Offsets mit der Tweedie-Familie arbeiten und eine Warnung ausgeben sollte, wenn Sie es versuchen Offset mit einer nicht unterstützten Verlustfunktion verwenden?

Ich habe eher nach praktischen Anwendungsfällen gefragt, wie in Datensätzen oder Veröffentlichungen. Ich weiß, was die Distributionen tun ;)

Es wäre wahrscheinlich eine gute Ergänzung, obwohl ich Ihnen nicht garantieren kann, dass Ihr Beitrag zusammengeführt wird. Es wäre wahrscheinlich gut, es breiter zu diskutieren, bevor Sie einsteigen. Es sei denn, Sie möchten es nur für sich selbst implementieren und es ist Ihnen egal, ob wir es zusammenführen;)

Ich nehme an, Sie interessieren sich hauptsächlich für Gradientenverstärkung, nicht für lineare Modelle?

ping @pprett @glouppe @arjoly

Ich interessiere mich dafür, es rundherum zu integrieren, aber hauptsächlich Baumensembles
Erste. In jedem Fall sind sie eine Menge doppelter Arbeit als Random Forest
und GBM haben beide unterschiedliche ABC für jede Verlustfunktion. Also kann ich einfach machen
das funktioniert einmal und hat es leider in beiden funktioniert. Ich kann auch welche bekommen
Datensätze. Wie sieht der Prozess zum Zusammenführen dieses Was-Prozesses aus?
soll ich folgen. Ich bin neu im Beitragen, also möchte ich sicherstellen, dass es fertig ist
rechts. Aber wie gesagt behandelt GBM Verlustklassen unabhängig von allem anderen
in sklearn, sodass meine Änderungen an GBM problemlos alleine stehen könnten. Ich muss nur
Bearbeiten Sie den Code in einem .py-Skript.
Am 10. Dezember 2015 um 16:57 Uhr schrieb „Andreas Mueller“ [email protected] :

Ich habe eher nach praktischen Anwendungsfällen gefragt, wie in Datensätzen oder
Veröffentlichungen. Ich weiß, was die Distributionen tun ;)

Es wäre wahrscheinlich eine gute Ergänzung, obwohl ich Ihnen das nicht garantieren kann
Ihr Beitrag wird zusammengeführt. Es wäre wahrscheinlich gut, darüber zu diskutieren
breiter, bevor Sie einspringen. Es sei denn, Sie möchten es nur implementieren
du selbst und es ist egal, ob wir es zusammenführen ;)

Ich nehme also an, Sie interessieren sich hauptsächlich für die Gradientenverstärkung, nicht für lineare
Modelle?

ping @pprett https://github.com/pprett @glouppe
https://github.com/glouppe @arjoly https://github.com/arjoly


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

Es wäre schön, etwas Input von unseren GBM-Experten zu bekommen, die ich oben angepingt habe, aber Sie können auch an die Mailingliste schreiben und fragen, ob die Leute an der Ergänzung interessiert sind.

Planen Sie auch, Koordinatenlöser mit L1/L2-Abzügen zu unterstützen
wie _glmnet
?_

Irgendwelche Updates zu diesem Problem? Ich würde gerne sehen, dass eine Poisson-Regression in linear_models hinzugefügt wird, damit ich mich nicht außerhalb der Verwendung von sklearn wagen muss. Wenn niemand aktiv daran arbeitet, kann ich versuchen, es umzusetzen.

niemand AFAIK.

Zögern Sie nicht, es auszuprobieren und teilen Sie eine WIP-Implementierung.

Ich wollte daran arbeiten und mache es immer noch. Wenn ich es aber tue
brauchen einen sauberen Weg, um der API Offsets hinzuzufügen. Ich dachte darüber nach, eine hinzuzufügen
offset kwarg und der Standardwert könnte None sein und bei Verlust eine Warnung ausgeben
ist kein Gift. Ich verwende Poisson hauptsächlich für die Versicherungsmodellierung, wo die
Offset ist log (erworbene Belichtung), die ich aus Experimenten und Vertrieb kenne
Theorie, dass Sie für spärliche Zähldaten ein weit unterlegenes Modell erhalten
ohne Offsets. Derzeit unterstützen sowohl das lineare Modell von R als auch GBM Poisson
mit Offsets. Das ist also mein aktuelles Go-to-Tool. Ich möchte dies ergänzen
sklearn, wenn andere es hinzugefügt haben möchten.
Am 1. Mai 2016, 4:03 Uhr, „Alexandre Gramfort“ [email protected]
schrieb:

niemand AFAIK.

Zögern Sie nicht, es auszuprobieren und teilen Sie eine WIP-Implementierung.


Sie erhalten dies, weil Sie den Thread verfasst haben.
Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/5975#issuecomment -216024458

@thenomemac Haben Sie eine WIP-Implementierung, die ich mir ansehen könnte?

Könnten Sie für Offsets nicht einfach verlangen, dass der Benutzer seine Zählungen durch den Offset/die Belichtung dividiert, um den „y“-Wert zu einer Rate anstelle einer Zählung zu machen (https://en.wikipedia.org/wiki/Poisson_regression#. 22Exposure.22_and_offset)? Das GLM-Paket von R verfügt über eine großartige Schnittstelle zum Angeben von Modellen (einschließlich der Angabe von Offsets), ist sich jedoch nicht sicher, wie dies in die vorhandene API für lineare Modelle passen würde.

@bjlkeng Ich habe noch keine WIP-Implementierung abgeschlossen. Ich habe vor einer Weile angefangen und wurde dann abgelenkt. Ich denke nicht, dass das Teilen durch Expositionen, um eine Poisson-Rate zu erhalten, eine korrekte Ableitung des GBM-Algorithmus für den Poisson-Verlust ist. Der offset=log(exposure) im Gradienten ist ein additiver Faktor. Sie geben also "Bereichen" mit einer höheren Exposition effektiv mehr Gewicht. Nicht 100% sicher, ob Sie bei jeder Iteration der Anpassung des Basislerners (Baum) zum richtigen Gradienten zurückkehren können, da das aktuelle Schema zum Übergeben von Gewichten an den Baumlerner multiplikativ und nicht additiv ist. Ich werde versuchen, eine strengere mathematische Ableitung dessen zu schreiben, worauf ich mich beziehe. Ich kann sagen, in der Praxis spielt es eine Rolle. In realen Datensätzen, die ich modelliert habe, wo Sie erwarten würden, dass die Zähldaten Poisson sind, konvergiert die Verwendung von R's gbm schneller und zu einem besseren Ergebnis, da Offsets auf "mathematisch" korrekte Weise gehandhabt werden. Und andere gbm-Implementierungen wie xgboost mit einer Poisson-Verlustfunktion können die Daten nicht so gut mit einer Poisson-Rate wie vorgeschlagen modellieren.

(Nebenbei habe ich den Link zu diesem Problem auf stats.stackexchange gefunden

Statmodels GLM hat Offset und Exposition (Exposition nur für Log-Link)

In Master gibt es jetzt eine elastische Netzoption für GLM und einige andere Modelle, die über eine Python-Schleife für den Koordinatenabstieg implementiert werden (verwendet generische Maximum Likelihood mit Offset).

Im Master gibt es jetzt auch die Tweedie-Familie für GLM. Es wird jedoch nicht die vollständige Loglikelihood-Verlustfunktion verwendet, da dies eine unendliche Summe von Termen ist und die Berechnung einer abgeschnittenen Version langsam ist und häufig verwendete Annäherungen über einen gewissen Bereich des Parameterraums nicht sehr genau sind

Wenn Sie also eine Referenzimplementierung benötigen, hat statsmodels diese Teile. Ich habe noch nie von GBM für GLM gehört oder nachgeschaut. Ich weiß auch nicht genug über den scikit-learn-Code, um zu sagen, wie er hineinpassen würde.
)

@thenomemac Sie haben absolut Recht mit der Änderung der Verlustfunktion aufgrund der Belichtung, ich habe mich geirrt. Tatsächlich glaube ich, dass ich es geschafft habe. Ich habe ein sehr frühes WIP (eher nur herumspielen): https://github.com/bjlkeng/scikit-learn/blob/poisson_regression/sklearn/linear_model/poisson.py (sehen Sie sich die Funktion _poisson_loss() an ).

@josef-pkt Danke, ich habe mir die statsmodels-Implementierung angesehen, sie ist eigentlich ganz gut (mit Ausnahme der API, von der ich kein Fan bin). Es ist eigentlich etwas allgemeiner, wo ihr "Zähl"-Modell andere zählbasierte Regressionen wie negative Binomialzahlen unterstützt. Die Statsmodel-Implementierung berücksichtigt bereits Exposition und Regularisierung (was ich auch gesucht habe).

Angesichts der Tatsache, dass statsmodels eine Implementierung hat, denken Sie, dass es immer noch wertvoll ist, so etwas in sklearn zu haben? Wenn ja, kann ich versuchen, etwas mehr Mühe darauf zu verwenden, es in eine brauchbare Form zu bringen. Ich war gerade ziemlich beschäftigt mit der Arbeit, also hatte ich nicht viel Zeit.

Ich denke, das wäre immer noch wertvoll.

@bjlkeng Danke für den Kommentar! Sind Sie daran interessiert, es aufzunehmen und einen Pull-Request zu stellen? Wenn nicht, kann ich versuchen, dieses Problem anzugehen und eine PR zu erstellen ... Zuerst für Poisson und anschließend für Gamma ... @agramfort Ist das für Sie in Ordnung? :)

Hey @raghavrv , sorry für die späte Antwort. Die Arbeit wurde ziemlich hektisch und mir wurde auch klar, dass es länger dauern würde, als ich Zeit hatte. Fühlen Sie sich also frei, weiterzumachen. Ich würde einen Blick auf die statsmodel-Implementierung werfen, da sie die meisten Funktionen haben, die Sie meiner Meinung nach hier wünschen würden.

@raghavrv Hast du angefangen, daran zu arbeiten? Möglicherweise kann ich auch dazu beitragen, dass wir zumindest eine Poisson-Regression in Sklearn haben.

@btabibian @raghavrv Wie ist der Stand davon? Ich benötige eine Poisson-Regressionsimplementierung für ein Projekt und wäre bereit, einen Beitrag zu leisten.

Bitte mach weiter :) Ich hatte keine Zeit dafür tut mir leid...

Ich hatte keine Zeit. Außerdem habe ich mit der API und deren Vorgehensweise gekämpft
Offsets integrieren. Ich könnte die Mathematik oder ein Codebeispiel in Statsmodels zeigen.
Aber TLDR benötigen Sie Offsets, wenn Sie die Poisson-Regression verwenden möchten
Ungleiche Belichtungen (Fläche oder Zeit) dann braucht man Offsets. Das Modell nicht
Geben Sie die richtige Gewichtung, wenn Sie Ihre Zählungen einfach durch Belichtungen teilen.

Am 1. April 2017 14:49, "(Venkat) Raghav (Rajagopalan)" <
[email protected]> schrieb:

Bitte mach weiter :) Ich hatte keine Zeit dafür tut mir leid...


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/5975#issuecomment-290939521 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AOeuWjVGf3-VmeasNHMLQAB1dnd4zuUQks5rrpw4gaJpZM4Gwd6-
.

Ich werde dann anfangen, mich damit zu beschäftigen. @thenomemac danke für den Tipp! Ich werde mir die Implementierung von Statsmodels ansehen, um zu sehen, wie sie mit der Exposition umgehen.

Hallo, gibt es Neuigkeiten? Wäre es auch möglich, eine negative Binomialwahrscheinlichkeit hinzuzufügen? Für Poisson sollte das keinen großen Unterschied machen. Sonst könnte ich mir das anschauen..

Am besten,
Simon

Hallo @dirmeier , leider nicht. Ich habe zu einem hierarchischen Bayes'schen Modell gewechselt und bin nie dazu gekommen, die Poisson-Regression zu implementieren.

@dirmeier , @jakobworldpeace gibt es einige laufende Arbeiten, auf die Sie uns hinweisen können? Kann ich mir das auch mal anschauen?

Hallo @NickHoernle ,
Ich verwende derzeit R für NB-Regression, weil ich keine Zeit habe. Ich würde mich freuen, wenn du das umsetzen möchtest :)

@NickHoernle Es gibt kein WIP, aber die Implementierung der Poisson-Regression von Statsmodels sollte Ihnen den Einstieg erleichtern.

Exzellent. Ich fange an, einen Blick darauf zu werfen und zu sehen, wo wir hinkommen.

Ich habe hier an GLMs gearbeitet: https://github.com/madrury/py-glm.

Ich beabsichtige nicht, dass dies in sklearn zusammengeführt wird, es ist wirklich für meine Schüler, um es im Unterricht zu verwenden, aber ich möchte auf die Arbeit hinweisen, falls sie für jeden nützlich ist, der an diesem Thema arbeitet.

Ihr Löser in einer Newton-Methode, die es schwer haben wird, hoch zu skalieren
Abmessungen. Es unterstützt auch keine Strafen vom Typ L1. Überprüfen Sie auch Ihre API
Konsistenz mit sklearn. Fit sollte nur X, y und sample_weights annehmen

Um die Skalierbarkeitsprobleme zu beheben, müssen Sie zunächst l-bfgs verwenden. Sehen
unser logistischer Regressionscode

HTH

Wie gesagt, mein Ziel ist nicht die vollständige Konsistenz mit sklearn, sondern nur eine einfache Implementierung, die MuCullagh und Nelder folgt und einige der Inferenzwerkzeuge bereitstellt (was meiner Meinung nach für sklearn nicht in Frage kommt). Es ist für den Einsatz in einer Unterrichtsumgebung mit mittelgroßen Datensätzen vorgesehen. Ich wollte nur den Code hier verlinken, falls irgendwelche Ideen für jeden nützlich sind, der an dieser Funktion für sklearn arbeitet (und um ein wenig Aufmerksamkeit zu bekommen, schadet nie).

Ich denke nicht an L1-Strafen wie im Geltungsbereich, dafür würde ich einfach glmnet verwenden. L2 ist einfach genug, um es in das klassische GLM-Framework zu integrieren, das ich vorangetrieben und hinzugefügt habe.

Was die fit -Methode betrifft, wage ich hier einen kleinen Kommentar, ich hoffe, er ist nicht fehl am Platz. Das Fehlen von offset , wie vorgesehen, um zu passen, war ein großer Teil dessen, warum sklearn sich bei meinem letzten Job nicht durchgesetzt hat. Sie brauchen das wirklich, um eine angemessene Versicherungsmodellierung durchzuführen. Die Regulierungsbehörden erwarten, dass die Poisson- und Tweedie-Modelle auf diese Weise geeignet sind, und können in ihren Erwartungen ziemlich starr sein.

Danke für die Klarstellung der Vision.

Was den Offset betrifft, ist er spezifisch für Poisson- und Tweedie-Modelle?
Wenn es sich um einen probenspezifischen Wert handelt, kann es sich bei der Anpassung um eine sample_prop handeln
Parameter.
Nur max_iter oder tol, die nicht datenabhängig sind, sollten enthalten sein
die Initialisierung

Muss mit #9405 verglichen werden?

@agramfort Sie haben Recht mit max_iter und tol, ich werde diese in die __init__ verschieben.

Haben Sie eine Referenz für das, was Sie mit sample_prop meinen?

siehe https://github.com/scikit-learn/enhancement_proposals/pull/6

Es wird noch diskutiert, wie man das am besten macht...

Eine kurze Anmerkung zu Offsets: AFAIK, Stichprobengewichte reichen aus, um mit der Exposition umzugehen, dh das Anpassen von y=values/exposure mit sample_weight=exposure sollte die Arbeit erledigen und lässt sich gut auf andere Distributionen und Links außer Poisson mit log-link verallgemeinern.

@madrury Danke fürs Teilen. Ich werde mir Ihre Implementierung ansehen und mit meiner vergleichen.

Interessieren sich die Leute noch dafür? Ich würde mich über einen Beitrag freuen.

Ich bin immer noch an der Funktion interessiert, sollte jemand sie sklearn hinzufügen.

Am Donnerstag, 21. Dezember 2017 um 18:04 Uhr, Jared Samet [email protected]
schrieb:

Interessieren sich die Leute noch dafür? Ich würde mich über einen Beitrag freuen.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/5975#issuecomment-353479618 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AOeuWtvi4Um_o_ERuVe1ob86201G-ASdks5tCuP4gaJpZM4Gwd6-
.

@oracleofnj @thenomemac

Ich habe eine validierte, allgemeine glm-Implementierung in meiner py-glm-Bibliothek, habe aber keine Pläne, sie in sklearn zusammenzuführen (ich habe einige Designentscheidungen getroffen, die sie mit sklearns inkompatibel machen). Es ist so eingerichtet, dass es sehr einfach sein sollte, andere Exponentialfamilien hinzuzufügen.

Ich habe auch eine vollständige, reine Python-Glmnet-Implementierung, die dieselben Exponentialfamilien in derselben Bibliothek unterstützt, aber ich bin an einem Fehler hängen geblieben und habe ihn abgelegt. Ich würde mich über etwas Hilfe freuen, um den Fehler zu erklären, brauche nur etwas Motivation, um ihn wieder aufzuheben.

@madrury Freut mich , versuchen zu können, dir bei diesem Fehler zu helfen.

Hallo, wurde irgendetwas für diese Distributionen gebaut? Neugierig auf alle Updates. Danke.

Ich persönlich wäre damit einverstanden, dieses Thema zu schließen, um den Mitwirkenden zu helfen
Fokus. Gründe dafür:

  • Die Python-Landschaft hat sich verändert

  • statsmodels ist mittlerweile deutlich ausgereifter und schließt diese Distributionen mit ein
    richtige Belichtungsgewichtung

  • Jit-basierte Implementierungen über Pytorch oder Tensorflow machen es einfacher
    Implementieren Sie jeden esoterischen Verlust ohne Leistungseinbußen oder Pakete
    Neukompilierung

Gedanken?

Wir weisen derzeit Ressourcen zu, um zu helfen
https://github.com/scikit-learn/scikit-learn/pull/9405
und lassen Sie es (zumindest einige Teile) im Master landen. Es sollte in Angriff genommen werden
die nächsten Monate.

Tolle Arbeit !

Am Sa, 13. April 2019, 3:27 Uhr Alexandre Gramfort [email protected]
schrieb:

Wir weisen derzeit Ressourcen zu, um zu helfen
https://github.com/scikit-learn/scikit-learn/pull/9405
und lassen Sie es (zumindest einige Teile) im Master landen. Es sollte in Angriff genommen werden
die nächsten Monate.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/scikit-learn/scikit-learn/issues/5975#issuecomment-482784732 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AOeuWj8PD0nfltM7Acg12Pfhl4sG5n7Fks5vgYbogaJpZM4Gwd6-
.

Es wäre großartig, GLM in sciki-learn zu haben. Dadurch wird die Notwendigkeit reduziert, in andere Sprachen zu wechseln. Sich auf etwas freuen.

Einverstanden. Da ich aus der R-Welt komme, war ich überrascht, dass sklearn noch keine GLM-Funktionalität hatte. Ich hoffe es wird bald.

Ich werde eine weitere Stimme hinzufügen, um GLM In sklearn aufzunehmen. Es ist eine Kernklasse von Modellen, die in Statistikprogrammen für Studenten gelehrt wird. Auch die Tatsache, dass es im Benutzerhandbuch einen Abschnitt "Verallgemeinerte lineare Modelle" gibt, der keine Diskussion über Verknüpfungsfunktionen oder Fehlerverteilungen enthält, ist für mich überraschend.

@patrickspry Statsmodels hat eine gute Implementierung der meisten GLMs, die ein Student lernen würde.

@patrickspry Es gibt eine ziemlich vollständige PR in https://github.com/scikit-learn/scikit-learn/pull/9405 und es wird daran gearbeitet, diese Funktionalität zusammenzuführen.

Oh, fantastisch! Danke für die Warnung!

Gibt es einen geschätzten Zeitplan für die Zusammenführung der PR? Danke.

@Jiang-Li Siehe hier

Für lineare Modelle gibt es #14300. Dann gibt es die offene Ausgabe #15123. Ich persönlich würde wirklich gerne baumbasierte Modelle mit Tweedie-Loss-Funktionen sehen.

Für lineare Modelle wird #14300 jetzt zusammengeführt, obwohl zusätzliche Funktionen noch hinzugefügt werden könnten https://github.com/scikit-learn/scikit-learn/pull/9405#issuecomment -594553953

Ich persönlich würde wirklich gerne baumbasierte Modelle mit Tweedie-Loss-Funktionen sehen.

Das könnte tatsächlich der nächste Schritt sein (zB https://github.com/scikit-learn/scikit-learn/issues/15123#issuecomment-542090766)

Es ist beeindruckend, die großartige Arbeit in sklearn 0.23 zu sehen, zu der Poisson, Gamma und Tweedie gehören. Hoffe auf weitere Verbesserungen in der Zukunft.
Wenn Sie das Benutzerhandbuch lesen, liegt die logistische Regression außerhalb der verallgemeinerten linearen Regression. Vielleicht sollte es zumindest einige Worte geben, die im Abschnitt Verallgemeinerte lineare Regression angeben, dass die logistische Regression eine Art von GLM ist und mit derselben Abweichungsverlustfunktion gelöst werden kann.

Sieht so aus, als könnten wir das Problem jetzt schließen, da #14300 zusammengeführt wurde?

Wenn Sie das Benutzerhandbuch lesen, liegt die logistische Regression außerhalb der verallgemeinerten linearen Regression. Vielleicht sollte es zumindest einige Worte geben, die im Abschnitt Verallgemeinerte lineare Regression angeben, dass die logistische Regression eine Art von GLM ist und mit derselben Abweichungsverlustfunktion gelöst werden kann.

Danke für das Feedback @magicmathmandarin ! Ja absolut. Die ursprüngliche PR https://github.com/scikit-learn/scikit-learn/pull/9405 enthielt tatsächlich eine Abweichung von BinomialDistribution für die binäre logistische Regression. Der Grund, warum wir das nicht in die erste zusammengeführte PR aufgenommen haben, ist, dass, obwohl sie tatsächlich Teil desselben theoretischen Rahmens sind, die spezialisierte LogisticRegression -Implementierung derzeit immer noch empfohlen wird (besser von Benutzern getestet, behandelt mehr Optionen, zB mehrklassig), und wir wollten die Benutzer nicht verwirren. Jetzt, da es zusammengeführt ist, stimme ich zu, dass dieser Teil besser formuliert werden kann.

Sieht so aus, als könnten wir das Problem jetzt schließen, da #14300 zusammengeführt wurde?

Sicher. Es gibt einige Folgediskussionen in https://github.com/scikit-learn/scikit-learn/issues/16668 , https://github.com/scikit-learn/scikit-learn/pull/16692 und https: //github.com/scikit-learn/scikit-learn/issues/15123.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen