Gradient boosted trees: modelleme
Gradient boosting, diğer modellerin performansını iyileştirmek için kullanılan bir tekniktir. Fikir şu: Zayıf ama hesaplaması kolay bir model çalıştırırsın. Sonra yanıt değerlerini bu modelin artık değerleriyle (residual) değiştirir ve başka bir model kurarsın. Orijinal yanıt tahmin modeli ile yeni artık değer tahmin modelini "ekleyerek" daha isabetli bir model elde edersin. Bu süreci tekrar tekrar uygulayabilir, önceki modellerin artıklarını tahmin eden yeni modeller çalıştırabilir ve sonuçları ekleyebilirsin. Her yinelemede model giderek güçlenir.
Daha somut bir örnek vermek gerekirse, sparklyr gradient boosted trees kullanır; yani zayıf-ama-hesaplaması-kolay model olarak karar ağaçlarıyla gradient boosting yapar. Bunlar hem sınıflandırma problemlerinde (yanıt değişkeni kategorik olduğunda) hem de regresyon problemlerinde (yanıt değişkeni sürekli olduğunda) kullanılabilir. Burada kullanacağın regresyon durumunda, bir noktanın ne kadar kötü uydurulduğunun ölçüsü artık değerdir.
Karar ağaçları hakkında daha ayrıntılı bilgi için Supervised Learning in R: Classification ve Supervised Learning in R: Regression kurslarına bakabilirsin. İkincisi ayrıca gradient boosting konusunu da kapsar.
sparklyr içinde bir gradient boosted trees modeli çalıştırmak için ml_gradient_boosted_trees() fonksiyonunu çağır. Bu fonksiyonun kullanımı bu bölümün ilk egzersizinde tartışılmıştı.
Bu egzersiz, kursun bir parçasıdır
R ile sparklyr kullanarak Spark’a Giriş
Egzersiz talimatları
spark_conn olarak bir Spark bağlantısı senin için oluşturuldu. Spark'ta saklanan birleştirilmiş ve filtrelenmiş parça meta verisi/timbre verisine bağlı bir tibble track_data_to_model_tbl olarak önceden tanımlandı.
- Özellik olarak kullanmak üzere
"timbre"dizesini içeren sütunları al.track_data_to_model_tbl'nin sütun adlarını almak içincolnames()kullan.names()istediğin sonucu vermez, buna dikkat et.- Sütunları filtrelemek için
str_subset()kullan. - Bu fonksiyonun
patternargümanıfixed("timbre")olmalı. - Sonucu
feature_colnamesdeğişkenine ata.
- Model için
formulaoluşturmak üzerereformulate()kullan.termlabelsargümanı (formülün girdileri)feature_colnamesolmalı.responseargümanı (formülün çıktısı)"year"olmalı.- Sonucu
year_formuladeğişkenine ata. reformulate()'i bu şekilde kullanmak,feature_colnamesiçindeki tüm değişkenleri+işaretiyle birleştirerekformula'nın sağ tarafını oluşturur. Bu da modelde yer alacak değişkenler arasındaki ilişkiyi tanımlayanyear ~ timbre1 + timbre2 + ... + timbre12şeklinde bir formül verir.
- Gradient boosting modelini çalıştır.
ml_gradient_boosted_trees()fonksiyonunu, tek argüman olarak oluşturduğunyear_formulaile çağır.- Sonucu
gradient_boosted_trees_modeldeğişkenine ata.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl
feature_colnames <- track_data_to_model_tbl %>%
# Get the column names
___ %>%
# Limit to the timbre columns
___(___(___))
feature_colnames
# Create the formula for the model
year_formula <- ___
gradient_boosted_trees_model <- track_data_to_model_tbl %>%
# Run the gradient boosted trees model
___