Ich versuche zu verstehen, wie XGBoost funktioniert. Ich verstehe bereits, wie gradientenverstärkte Bäume auf Python Sklearn funktionieren. Was mir nicht klar ist, ist, ob XGBoost auf die gleiche Weise funktioniert, aber schneller, oder ob es grundlegende Unterschiede zwischen ihm und der Python-Implementierung gibt.
Wenn ich diese Zeitung lese
http://learningsys.org/papers/LearningSys_2015_paper_32.pdf
Für mich sieht es so aus, als ob das Endergebnis von XGboost dasselbe ist wie in der Python-Implementierung. Der Hauptunterschied besteht jedoch darin, wie XGboost die beste Aufteilung für jeden Regressionsbaum findet.
Grundsätzlich liefert XGBoost das gleiche Ergebnis, ist jedoch schneller.
Ist das richtig oder fehlt mir noch etwas?
quelle
n_jobs
Schnittstellenparameter. Eine parallele Verarbeitung ist intern mit der Implementierung des Algorithmus durch sklearn nicht möglich.Im Gegensatz zur Steigungserhöhung des Sklearn führt Xgboost auch eine Regularisierung des Baums durch, um eine Überanpassung zu vermeiden, und verarbeitet die fehlenden Werte auch effizient. Der folgende Link kann hilfreich sein, um xgboost genau zu lernen: https://www.youtube.com/watch?v=Vly8xGnNiWs
quelle
XGboost ist eine Implementierung von GBDT mit Randmization (verwendet Coloumn Sampling und Row Sampling). Die Reihenabtastung ist möglich, indem nicht alle Trainingsdaten für jedes Basismodell des GBDT verwendet werden. Anstatt alle Trainingsdaten für jedes Basismodell zu verwenden, nehmen wir eine Teilmenge von Zeilen und verwenden nur diese Datenzeilen, um jedes der Basismodelle zu erstellen. Dies stellt sicher, dass die Wahrscheinlichkeit einer Überanpassung geringer ist. Dies ist ein Hauptproblem bei einfachen GBDTs, die XGBoost mithilfe dieser Randomisierung zu beheben versucht.
quelle