Ich habe eine binäre Klassifikation ( überwachtes Lernen) Problem, in dem alle meine Funktionen boolean sind mit folgenden Wendung: Ich mag einen Klassifikator lernen , dass ist monoton . Mit anderen Worten, wenn Sie eine Teilmenge von Merkmalen von 0 auf 1 ändern, sollte die Ausgabe des Klassifikators niemals von 1 auf 0 geändert werden.
Wie kann ich einen monotonen Klassifikator lernen ? Kann ich Standardklassifizierungsmethoden irgendwie anpassen, um die Monotonieeinschränkung durchzusetzen?
Ich kann sehen, wie die logistische Regression so angepasst werden kann, dass ein monotones Modell erlernt wird: Wir können verlangen, dass der Koeffizient jedes Merkmals nicht negativ ist, und dann einen eingeschränkten Optimierungsalgorithmus anwenden, um auf die Koeffizienten des Modells zu schließen. Gibt es eine vernünftige Möglichkeit, andere überwachte Lernschemata anzupassen (z. B. zufällige Wälder, Gradientenverstärkung, neuronale Netze)? Oder gibt es spezielle Algorithmen, die für diese Situation geeignet sind?
Leider ist es nicht garantiert, dass nur ein Standardklassifikator für zufällige Wälder einen monotonen Klassifikator ergibt, selbst wenn der Trainingssatz monoton ist (er stammt aus einer monotonen Einstellung und weist kein Rauschen oder Verstöße gegen die Monotonie auf). Unter https://cs.stackexchange.com/q/69220/755 finden Sie ein explizites Beispiel, dh ein Beispiel für einen monotonen Trainingssatz, bei dem zufällige Gesamtstrukturen möglicherweise einen nicht monotonen Klassifikator lernen - obwohl ein monotoner Klassifikator vorhanden ist das ist genauso gut. Dies deutet darauf hin, dass wir möglicherweise eine ausgefeiltere Technik benötigen, wenn wir einen monotonen Klassifikator lernen möchten.
Antworten:
Obwohl es eine alte Frage ist, habe ich gerade festgestellt, dass Bäume mit Gradientenverstärkung solche Funktionen unterstützen und bereits bei XGBoost implementiert sind. Überprüfen Sie hier für weitere Details
quelle