Bagajlama ve artırma gibi, gradyan artırma da bir makine öğrenimi algoritması kullanıyor. Gayri resmî olarak, gradyan artırma iki tür model vardır:
- "zayıf" modelidir ve bu model genelde bir karar ağacıdır.
- "güçlü" birçok zayıf değer içeren makine öğrenimi modeli modeller.
Gradyan güçlendirmede, her adımda yeni bir zayıf model eğitilerek "hata" (buna sözde yanıt denir). "Hata" konusunu ayrıntılı olarak ele alacağız daha sonra. Şimdilik "hata" olduğunu varsayın iki hedef arasındaki tahmin ve regresif etiket içerir. Zayıf model (yani "hata"), sonra negatif bir işaretle güçlü modele eklenir. Böylece, güçlü bir modeldir.
Gradyan artırma yinelemeli bir işlemdir. Her yineleme aşağıdaki formülü çağırır:
\[ F_{i+1} = F_i - f_i \]
Bu örnekte:
- $F_i$, $i$. adımdaki güçlü modeldir.
- $f_i$, $i$. adımdaki zayıf modeldir.
Bu işlem, maksimum değer gibi bir durdurma ölçütü karşılanıncaya kadar tekrar eder iterasyon yani yineleme sayısını ya da (güçlü) modelin temel düzeyde ayrı doğrulama veri kümesi ekleyin.
Aşağıdaki gibi basit bir regresyon veri kümesinde gradyan artırmasını gösterelim:
- Hedef, $x$ değerinden $y$ tahminini yapmaktır.
- Güçlü model sıfır sabiti olacak şekilde başlatılır: $F_0(x) = 0$.
# Simplified example of regressive gradient boosting.
y = ... # the labels
x = ... # the features
strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.
for i in range(num_iters):
# Error of the strong model
error = strong_predictions - y
# The weak model is a decision tree (see CART chapter)
# without pruning and a maximum depth of 3.
weak_model = tfdf.keras.CartModel(
task=tfdf.keras.Task.REGRESSION,
validation_ratio=0.0,
max_depth=3)
weak_model.fit(x=x, y=error)
strong_model.append(weak_model)
weak_predictions = weak_model.predict(x)[:,0]
strong_predictions -= weak_predictions
Bu kodu aşağıdaki veri kümesine uygulayalım:
Şekil 25. Bir sayısal özelliğe sahip sentetik regresif veri kümesi. ziyaret edin.
Gradyan güçlendirmenin ilk iterasyonundan sonraki üç grafiği burada görebilirsiniz algoritma:
Şekil 26. İlk iterasyondan sonra üç grafik. ziyaret edin.
Şekil 26'daki grafikler hakkında aşağıdakilere dikkat edin:
- İlk şemada, şu anda test edilmiş olan güçlü modelin her zaman 0 değerini alır.
- İkinci grafikte, zayıf modelin etiketi olan hata gösterilmektedir.
- Üçüncü grafikte zayıf model gösteriliyor.
İlk zayıf model, etiketin kaba bir temsilini öğrenmektir ve özellik alanının sol kısmına (en fazla varyasyon, Bu nedenle, sürekli yanlış model için en büyük hata).
Aşağıda, algoritmanın başka bir iterasyonu için aynı grafikler verilmiştir:
Şekil 27. İkinci iterasyondan sonra üç grafik. ziyaret edin.
Şekil 27'deki grafikler hakkında aşağıdakilere dikkat edin:
- Güçlü model artık tablodaki zayıf modelin son iterasyondur.
- Güçlü modelin yeni hatası biraz daha azdır.
- Zayıf modele yönelik yeni tahmin, artık sürecin sağ tarafına odaklanıyor. kullanabilirsiniz.
Algoritmayı 8 yineleme için daha çalıştırırız:
Şekil 28. Üçüncü iterasyon ve onuncu iterasyondan sonra üç grafik. ziyaret edin.
Şekil 28'de, güçlü modelin tahmininin benzer şekilde görünmeye başladığını ve veri kümesinin grafiğini çizin.
Bu şekillerde, karar ağaçlarını ya da zayıf öğrenciler. Bu kombinasyona gradyan destekli (karar) ağaçlar denir.
Önceki grafikler, gradyan artırmanın özünü göstermektedir. Ancak bu örneğinde olduğu gibi, gerçek dünyaya ait aşağıdaki iki işleme sahip değildir:
- Daralma
- Newton yönteminin bir adımıyla yaprak değerlerinin optimizasyonu
Çekme
Zayıf model $f_i$, küçük bir $\nu$ değeriyle çarpılır (örneğin, $\nu = 0,1$) önce ekleyebilirsiniz. Bu küçük değere düşüş. Başka bir deyişle her yineleme yerine formül:
\[ F_{i+1} = F_i - f_i \]
Her iterasyonda aşağıdaki formül kullanılır:
\[ F_{i+1} = F_i - \nu f_i \]
Gradyan artırmadaki küçülme, nöral ağlardaki öğrenme hızına benzer. Daralma, güçlü modelin ne kadar hızlı öğrendiğini kontrol eder. Bu da uyum sağlamasıdır. Yani 0,0'a yakın bir küçülme değeri, fazla uyum sağlamayı yaklaşık 1,0'a yakın bir düşüş değerinden
Yukarıdaki kodumuzda, daraltma aşağıdaki gibi uygulanır:
shrinkage = 0.1 # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions