Sana kafa karıştırıcı bulmak şey bu şüpheli: kayıp fonksiyonunun negatif eğimi hesaplar ve olumsuz degrade bir taban tahmincisi neresinde scikit-öğrenme görebilirsiniz. Adım boyutunu bulmaktan _update_terminal_region
yöntemi sorumludur, ancak belgede yazılan satır arama minimizasyonu sorununu çözebileceği herhangi bir yeri göremezsiniz. Bir satır arama oluyor bulamıyorum
nedeni sadece parçalı sabit fonksiyonlardır karar ağacı Regresör, özel durum için, optimal çözüm genellikle bilinir, olmasıdır. Örneğin, LeastAbsoluteError
kayıp işlevinin _update_terminal_region
yöntemine bakarsanız, ağacın yapraklarının y
arasındaki farkın ağırlıklı medyan değeri ve söz konusu yaprağın ilgili olduğu örneklerin tahmini değeri verildiğini görürsünüz. . Bu medyan bilinen en uygun çözümdür.
aşağıdaki adımlar gerçekleştirilir yineleme her degrade iniş için, neler olup bittiğine Özetlemek gerekirse:
hesaplayın akım tahmini de kayıp fonksiyonunun negatif gradyan.
- negatif bir gradyan ile bir
DecisionTreeRegressor
monte edin. Bu bağlantı, kaybı azaltmak için iyi bölünmelere sahip bir ağaç üretir.
- kaybını en aza indirmek değerlerle
DecisionTreeRegressor
yapraklarına değerlerini değiştirin. Bunlar genellikle karar ağacının sadece parçalı bir sabit işlev olduğu gerçeğinden yararlanan bazı basit bilinen formüllerden hesaplanır.
Bu yöntem, en az dokümanlardaki gibi iyi olmalı, ancak bazı durumlarda bununla aynı olmayabilir.
Sorunuz, Degrade Artırma algoritmasının kendisi veya sklearn uygulaması hakkında mı? Algoritma hakkında daha fazla bilgi için wekipedia girişinden (https://en.wikipedia.org/wiki/Gradient_boosting) yararlanabilirsiniz. – hsc
@hsc [Line Search'te wikipedia makalesi] (https://en.wikipedia.org/wiki/Line_search) 'a başvurduysanız daha kullanışlı olurdu. Her iki makaleyi birden çok kez okudum. (Bu noktada, gradyanda, beni bulamayan tek parça olmakla birlikte, gradyanı oldukça iyi kavradım.) – Ben
Belki de http://stats.stackexchange.com bu soru için daha uygun – Sentry