[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ml-engineer\u002Fcml-gradient-boosting-mechanics":4,"config":149},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":9,"spec_key":7,"spec_name":7,"locale":10,"cell_total":11,"field_total":12,"seniorities":13,"topics":17,"specs":58,"samples":63},"ml-engineer","ML Engineer","","cml-gradient-boosting-mechanics","Cml Gradient Boosting Mechanics","tr",75,1050,[14,15,16],"junior","mid","senior",[18,21,22,25,28,31,34,37,40,43,46,49,52,55],{"key":19,"name":20,"count":11},"cml-distance-clustering-dimreduction","Cml Distance Clustering Dimreduction",{"key":8,"name":9,"count":11},{"key":23,"name":24,"count":11},"cml-linear-logistic-internals","Cml Linear Logistic Internals",{"key":26,"name":27,"count":11},"cml-probabilistic-models-calibration","Cml Probabilistic Models Calibration",{"key":29,"name":30,"count":11},"cml-svm-kernels-margins","Cml Svm Kernels Margins",{"key":32,"name":33,"count":11},"cml-trees-randomforest-internals","Cml Trees Randomforest Internals",{"key":35,"name":36,"count":11},"ml-data-preparation","Ml Data Preparation",{"key":38,"name":39,"count":11},"ml-deployment-serving","Ml Deployment Serving",{"key":41,"name":42,"count":11},"ml-experimentation-reproducibility","Ml Experimentation Reproducibility",{"key":44,"name":45,"count":11},"ml-model-selection-tuning","Ml Model Selection Tuning",{"key":47,"name":48,"count":11},"ml-model-training-evaluation","Ml Model Training Evaluation",{"key":50,"name":51,"count":11},"ml-monitoring-drift","Ml Monitoring Drift",{"key":53,"name":54,"count":11},"ml-problem-framing","Ml Problem Framing",{"key":56,"name":57,"count":11},"ml-scaling-performance","Ml Scaling Performance",[59],{"key":60,"name":61,"count":62},"classical-ml","Classical ML",450,[64,82,96,110,123,136],{"id":65,"topic":9,"difficulty":66,"body":67,"options":68,"correct_key":79,"explanation":81},"01a03e80-25a8-7054-9b88-256457fe84cd",1,"Gradient boosting'de yeni eklenen her ağaç neyi tahmin etmek üzere eğitilir?",[69,72,75,78],{"key":70,"text":71},"a","Yine orijinal hedefi; böylece topluluktaki her ağaç onun kendi başına bağımsız bir kestirimi olur.",{"key":73,"text":74},"b","Hedefin bootstrap ile yeniden örneklenmiş hâlini; dizideki her ağaç için ayrı çekilerek.",{"key":76,"text":77},"c","Daha önce eğitilmiş tüm ağaçların o aynı satır için ürettiği tahminlerin ortalamasını.",{"key":79,"text":80},"d","Mevcut topluluğun hâlâ yanlış bıraktığı sinyal parçasını; yani kaybın negatif gradyanını.","Boosting toplamsaldır: tahmin, bir başlangıç kestirimi artı sırayla her ağacın küçültülmüş çıktısıdır ve her ağaç, o anki tahminde kaybın negatif gradyanına fit edilir. Ham hedefi bağımsızca fit etmek ya da ağaç başına bootstrap almak, random forest gibi bagging tarzı toplulukları anlatır. Önceki tahminlerin ortalamasını almak ise hiç yeni bilgi eklemez.",{"id":83,"topic":9,"difficulty":84,"body":85,"options":86,"correct_key":73,"explanation":95},"01a03e80-25ab-702e-abb4-3730a8d9fc8d",2,"scikit-learn 1.6:\n\n```python\nimport numpy as np\nfrom sklearn.ensemble import GradientBoostingRegressor\n\nX = np.array([[1.], [2.], [3.], [4.]])\ny = np.array([2., 4., 6., 20.])\ng = GradientBoostingRegressor(n_estimators=1, learning_rate=0.1,\n                              max_depth=1, loss='squared_error').fit(X, y)\nprint(g.predict([[4.]]))\n```\n\nTek stump x=3 ile x=4 arasında bölünüyor. Ekrana ne yazılır?",[87,89,91,93],{"key":70,"text":88},"[8.0]",{"key":73,"text":90},"[9.2]",{"key":76,"text":92},"[20.0]",{"key":79,"text":94},"[6.8]","Başlangıç kestirimi y'nin ortalaması olan 8.0'dır, dolayısıyla artıklar [-6, -4, -2, 12] olur. Stump x=4'ü değeri 12 olan bir yaprağa yalnız bırakır ve learning rate bu adımı küçültür: 8.0 + 0.1 * 12 = 9.2. 8.0'da kalmak ağacın hiç katkı vermemesi, 20.0'a ulaşmak learning rate'in 1.0 olması, 6.8 ise yaprak değerini eklemek yerine çıkarmak anlamına gelirdi.",{"id":97,"topic":9,"difficulty":98,"body":99,"options":100,"correct_key":76,"explanation":109},"01a03e80-25ad-7660-911e-24bac40ac132",3,"Bir ekip scikit-learn 1.6'da uzun sağ kuyruklu bir hedefte `GradientBoostingRegressor(loss='quantile', alpha=0.9)` fit ediyor. `predict` neyi kestirir?",[101,103,105,107],{"key":70,"text":102},"Koşullu hedef dağılımının ortalamasını; `alpha` her ağacın katkısını ayrıca 0.9 katsayısıyla küçültür.",{"key":73,"text":104},"Koşullu hedef dağılımının ortalamasını; `alpha` ise ayrıca raporlanan bir tahmin aralığını genişletir.",{"key":76,"text":106},"Koşullu hedef dağılımının 90. yüzdeliğini; satırların yaklaşık onda dokuzu tahminin altında kalır.",{"key":79,"text":108},"Koşullu hedef dağılımının 10. yüzdeliğini; çünkü `alpha` kestirimin üstünde bıraktığı kuyruk kütlesini adlandırır.","Kuantil kaybı pozitif ve negatif hataları asimetrik ağırlıklandırır — eksik tahmin `alpha`, fazla tahmin `1 - alpha` ile cezalandırılır — dolayısıyla onu minimize eden sabit alpha-kuantilidir ve boosting fit'i o kuantili koşullu olarak izler. Eğitilmiş bir modelde eğitim satırlarının kabaca `alpha` kadarı tahminin altında kalır. Küçültmeyi `learning_rate` belirler; burada hiçbir şey ortalamayı kestirmez ya da kuyruğu ters çevirmez.",{"id":111,"topic":9,"difficulty":84,"body":112,"options":113,"correct_key":79,"explanation":122},"01a03e80-25af-7354-a91a-1e0b74cd7731","İkili bir `GradientBoostingClassifier`, etiketlerin %20'sinin pozitif olduğu bir veriye fit ediliyor. Hiçbir ağaç katkı vermeden önce model hangi ham skordan başlar?",[114,116,118,120],{"key":70,"text":115},"0.20; yani pozitif oranı doğrudan olasılık ölçeğinde kullanarak.",{"key":73,"text":117},"0.0; çünkü ham skor ölçeği başlangıçta daima merkezlenmiştir.",{"key":76,"text":119},"log(0.2), yaklaşık -1.609; yani pozitif oranın doğal logaritması.",{"key":79,"text":121},"log(0.2 \u002F 0.8), yaklaşık -1.386; yani eğitim önselinin log-odds'u.","Log loss için boosting ham logit ölçeğinde çalışır ve orada log loss'u minimize eden sabit, sınıf önselinin log-odds'u olan log(p \u002F (1 - p))'dir. p = 0.2 için bu yaklaşık -1.386'dır ve lojistik fonksiyonla 0.2 olasılığına geri döner. Oranın kendisini ya da düz logaritmasını kullanmak, olasılık ölçeğiyle ham skor ölçeğini birbirine karıştırır.",{"id":124,"topic":9,"difficulty":84,"body":125,"options":126,"correct_key":70,"explanation":135},"01a03e80-25b1-7ddf-8451-d32d3cb81f42","Bir ekip `GradientBoostingClassifier`'da `learning_rate`'i 0.1'den 0.01'e düşürüyor ve `n_estimators`'ı 100'de bırakıyor. Hem eğitim hem doğrulama kaybı belirgin biçimde kötüleşiyor. Ne oluyor?",[127,129,131,133],{"key":70,"text":128},"Artık her ağaç onda biri kadar katkı veriyor; 100 tur sinyali kapatmaya yetmiyor ve model underfit ediyor.",{"key":73,"text":130},"Daha küçük learning rate her ağacı derinleştirir ve bu derin ağaçlar eğitim setindeki gürültüyü ezberlemiştir.",{"key":76,"text":132},"0.05'in altında learning rate amacı mutlak hataya çevirir; bu da merkezlenmiş bir hedefi kötü fit eder.",{"key":79,"text":134},"Bu kadar küçük shrinkage başlangıç kestirimini devre dışı bırakır; topluluk sıfır ham skordan başlamak zorunda kalır.","Learning rate, her ağacın çıktısı eklenmeden önce onu çarpar; dolayısıyla n tur sonundaki toplam ilerleme kabaca oran çarpı n ile ölçeklenir. Tur sayısını artırmadan oranı on kat küçültmek topluluğu eski fit'inin çok gerisinde bırakır ve her iki bölümde de kaybın kötüleşmesi overfit değil underfit imzasıdır. Learning rate ağaç derinliğine, amaç fonksiyonuna veya başlangıç kestirimine dokunmaz.",{"id":137,"topic":9,"difficulty":66,"body":138,"options":139,"correct_key":70,"explanation":148},"01a03e80-25b4-7ce3-a88b-2e21cb6ef6f8","scikit-learn gradient boosting'in `learning_rate` parametresi (XGBoost'ta `eta`) hangi büyüklüğü çarpar?",[140,142,144,146],{"key":70,"text":141},"Her yeni ağacın çıktısını; bu çıktı yürüyen tahmine eklenmeden hemen önce.",{"key":73,"text":143},"Boosting turları ilerledikçe her ağaca tanınan derinlik bütçesini.",{"key":76,"text":145},"Aday bölmeleri puanlayan gradyanı; yaprak değerlerine dokunmadan.",{"key":79,"text":147},"Fit sırasında her boosting turu için çekilen eğitim satırlarının oranını.","Shrinkage her fit edilen ağacın katkısını ölçekler; böylece topluluk birkaç büyük adım yerine çok sayıda küçük adım atar. XGBoost `eta`'yı, boosting'i daha muhafazakâr yapmak üzere yeni ağırlıkları küçültmek diye tanımlar. Derinlik ayrı olarak `max_depth` veya `max_leaf_nodes` ile, satır örnekleme ise `subsample` ile belirlenir; shrinkage yalnızca bölme aramasına değil doğrudan yaprak değerlerine iner.",{"fields":150,"seniorities":370,"interview_shapes":371,"locales":376,"oauth":378,"question_count":381,"coach_enabled":382,"jd_match_enabled":382},[151,176,196,212,236,249,268,287,309,328,343,365],{"key":152,"name_tr":153,"name_en":153,"sort":66,"specializations":154},"backend","Backend",[155,158,161,164,167,170,173],{"key":156,"name":157,"field":152},"general","Genel",{"key":159,"name":160,"field":152},"go","Go",{"key":162,"name":163,"field":152},"python","Python",{"key":165,"name":166,"field":152},"java","Java",{"key":168,"name":169,"field":152},"csharp","C#\u002F.NET",{"key":171,"name":172,"field":152},"nodejs","Node.js",{"key":174,"name":175,"field":152},"php","PHP",{"key":177,"name_tr":178,"name_en":178,"sort":84,"specializations":179},"frontend","Frontend",[180,181,184,187,190,193],{"key":156,"name":157,"field":177},{"key":182,"name":183,"field":177},"javascript","JavaScript",{"key":185,"name":186,"field":177},"typescript","TypeScript",{"key":188,"name":189,"field":177},"react","React",{"key":191,"name":192,"field":177},"vue","Vue",{"key":194,"name":195,"field":177},"angular","Angular",{"key":197,"name_tr":198,"name_en":198,"sort":98,"specializations":199},"fullstack","Fullstack",[200,201,202,203,204,205,206,207,208,209,210,211],{"key":156,"name":157,"field":197},{"key":159,"name":160,"field":152},{"key":162,"name":163,"field":152},{"key":165,"name":166,"field":152},{"key":168,"name":169,"field":152},{"key":171,"name":172,"field":152},{"key":174,"name":175,"field":152},{"key":182,"name":183,"field":177},{"key":185,"name":186,"field":177},{"key":188,"name":189,"field":177},{"key":191,"name":192,"field":177},{"key":194,"name":195,"field":177},{"key":213,"name_tr":214,"name_en":214,"sort":215,"specializations":216},"devops-cloud","DevOps \u002F Cloud",4,[217,218,221,224,227,230,233],{"key":156,"name":157,"field":213},{"key":219,"name":220,"field":213},"aws","AWS",{"key":222,"name":223,"field":213},"gcp","GCP",{"key":225,"name":226,"field":213},"azure","Azure",{"key":228,"name":229,"field":213},"kubernetes","Kubernetes",{"key":231,"name":232,"field":213},"terraform","Terraform",{"key":234,"name":235,"field":213},"linux","Linux",{"key":237,"name_tr":238,"name_en":238,"sort":239,"specializations":240},"ai-engineer","AI Engineer",5,[241,242,243,246],{"key":156,"name":157,"field":237},{"key":162,"name":163,"field":237},{"key":244,"name":245,"field":237},"llm-rag","LLM\u002FRAG",{"key":247,"name":248,"field":237},"mlops","MLOps",{"key":250,"name_tr":251,"name_en":252,"sort":253,"specializations":254},"database","Veritabanı","Database",6,[255,256,259,262,265],{"key":156,"name":157,"field":250},{"key":257,"name":258,"field":250},"postgresql","PostgreSQL",{"key":260,"name":261,"field":250},"mysql","MySQL",{"key":263,"name":264,"field":250},"mongodb","MongoDB",{"key":266,"name":267,"field":250},"redis","Redis",{"key":269,"name_tr":270,"name_en":271,"sort":272,"specializations":273},"mobile","Mobil","Mobile",7,[274,275,278,281,284],{"key":156,"name":157,"field":269},{"key":276,"name":277,"field":269},"ios-swift","iOS (Swift)",{"key":279,"name":280,"field":269},"android-kotlin","Android (Kotlin)",{"key":282,"name":283,"field":269},"flutter","Flutter",{"key":285,"name":286,"field":269},"react-native","React Native",{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"security","Güvenlik","Security",8,[293,294,297,300,303,306],{"key":156,"name":157,"field":288},{"key":295,"name":296,"field":288},"appsec","AppSec",{"key":298,"name":299,"field":288},"offensive-pentest","Offensive \u002F Pentest",{"key":301,"name":302,"field":288},"cloud-security","Cloud Security",{"key":304,"name":305,"field":288},"devsecops","DevSecOps",{"key":307,"name":308,"field":288},"blue-team-incident","Blue Team \u002F Incident",{"key":310,"name_tr":311,"name_en":312,"sort":313,"specializations":314},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[315,316,319,322,325],{"key":156,"name":157,"field":310},{"key":317,"name":318,"field":310},"test-automation","Test Automation",{"key":320,"name":321,"field":310},"sdet","SDET",{"key":323,"name":324,"field":310},"performance-testing","Performance Testing",{"key":326,"name":327,"field":310},"mobile-qa","Mobile QA",{"key":329,"name_tr":330,"name_en":330,"sort":331,"specializations":332},"data-engineer","Data Engineer",10,[333,334,337,340],{"key":156,"name":157,"field":329},{"key":335,"name":336,"field":329},"pipelines-etl","Pipelines \u002F ETL",{"key":338,"name":339,"field":329},"streaming","Streaming",{"key":341,"name":342,"field":329},"warehousing","Warehousing",{"key":344,"name_tr":345,"name_en":346,"sort":347,"specializations":348},"game-dev","Oyun Geliştirme","Game Development",11,[349,350,353,356,359,362],{"key":156,"name":157,"field":344},{"key":351,"name":352,"field":344},"unity-csharp","Unity (C#)",{"key":354,"name":355,"field":344},"unreal-cpp","Unreal (C++)",{"key":357,"name":358,"field":344},"gameplay","Gameplay",{"key":360,"name":361,"field":344},"graphics-rendering","Graphics \u002F Rendering",{"key":363,"name":364,"field":344},"multiplayer-netcode","Multiplayer \u002F Netcode",{"key":5,"name_tr":6,"name_en":6,"sort":366,"specializations":367},12,[368,369],{"key":156,"name":157,"field":5},{"key":60,"name":61,"field":5},[14,15,16],{"junior":372,"mid":374,"senior":375},{"questions":373,"median_sec":3},20,{"questions":373,"median_sec":3},{"questions":373,"median_sec":3},[10,377],"en",[379,380],"google","github",27600,true]