Blog / Oyun Teorisi / Rehber: 'Soğuk Başlangıç' Sorununu Kapatın — Yeni Oyuncular İçin Basit Bayesian ELO ile Derecelendirmeyi 30 Dakikada İstikrara Kavuşturun
Rehber: 'Soğuk Başlangıç' Sorununu Kapatın — Yeni Oyuncular İçin Basit Bayesian ELO ile Derecelendirmeyi 30 Dakikada İstikrara Kavuşturun
Oyun Teorisi

Rehber: 'Soğuk Başlangıç' Sorununu Kapatın — Yeni Oyuncular İçin Basit Bayesian ELO ile Derecelendirmeyi 30 Dakikada İstikrara Kavuşturun

Giriş

Yeni oyuncuların sisteme katılmasıyla birlikte ortaya çıkan "soğuk başlangıç" (cold start) problemi, derecelendirme ve eşleştirme kalitesini doğrudan etkiler. Bu rehberde amacımız pratik, hesaplı ve uygulanabilir bir yöntemle —basit bir Bayesian ELO uyarlaması— yeni oyuncuların gerçek becerilerini yaklaşık 30 dakikalık oyun süresinde yeterince güvenilir hale getirerek istikrar sağlamak.

Soğuk Başlangıç Nedir, Neden Problem Yaratır?

Soğuk başlangıç; bir oyuncuya başlangıçta verilen belirsiz veya rastgele değerlendirme yüzünden sistemin onu yanlış seviyelere yerleştirmesidir. Sonuçları:

  • Düşük kaliteli eşleştirmeler (kötü deneyim),
  • Geciken doğru konumlandırma (oyun sayısı artana kadar yanlış MMR),
  • Analiz ve ödül/ceza mekanizmalarında çarpıtma.

Problemin özü belirsizliktir: yeni oyuncu hakkında çok az veri vardır. Bayesian yaklaşım belirsizliği nicelendirerek sistemin daha mantıklı davranmasını sağlar.

Bayesian ELO: Temel Fikir

ELO'nun klasik formülü beklenen skor E = 1 / (1 + 10^{(opponent - player)/400}) ile çalışır; güncelleme genelde R' = R + K * (S - E) şeklindedir. Bayesian ELO ise oyuncunun yetenek değerine bir ön bilgi (prior) atar: ortalama mu0 ve varyans sigma0^2 ile başlayarak her maç sonrası posterior (güncellenmiş) dağılım elde ederiz.

Pratikte tam Bayes hesabı maliyetli olabilir; bu yüzden basit ama etkili bir yaklaşım kullanacağız:

  • Oyuncu için başlangıç ön bilgisi: mu0 (ör: popülasyon ortalaması 1500) ve sigma0 (ör: 200).
  • Her maç bir veri noktası: kazanma = 1, kaybetme = 0, beraberlik = 0.5. Bu veri, logistic benzeri bir modelle mu üzerine etkide bulunur.
  • Güncelleme katsayısı K dynamiktir: K_t = sigma_prior^2 / (sigma_prior^2 + sigma_game^2). Burada sigma_game, tek bir maçtan kaynaklanan belirsizliği temsil eder (ör: 400/ln(10) bazlı veya deneysel olarak 400 civarı ölçeklenebilir).

Bu sayede belirsizliği yüksek (sigma büyük) oyuncu sonuçlarla hızlı değişir; belirlilik arttıkça güncellemeler küçülür. Böylece 30 dakikalık oyun boyunca sistem ihtiyatlı ama hızlı öğrenir.

30 Dakikada İstikrar: Adım Adım Uygulanabilir Plan

Aşağıda gerçek işletmeye uygun, kolay uygulanabilir bir plan var. Amaç: yeni oyuncunun MMR'ını 30 dakikalık aktif oyun süresi içinde yeterince doğru hâle getirmek.

1) Başlangıç Prioru ve Sigma

  • mu0 = popülasyon ortalaması (ör: 1500). Alternatif: oyuncunun girdi verilerine göre (yaş, geçmiş oyun türleri vb.) küçük bir offset.
  • sigma0 = 200 — 250 arası önerilir. Bu değer oyuncunun başlangıçta esnek ama kontrollü hareket etmesini sağlar.

2) Maç Modeli ve sigma_game

Her maç için sigma_game sabit alınabilir (ör: 400). Daha sofistike yaklaşımda rakibin sigma'sı da hesaba katılır: sigma_effective^2 = sigma_prior^2 + sigma_opponent^2 + sigma_game^2.

3) Güncelleme Kuralı (Basit Formül)

Her maç sonrası:

  • Beklenen skor E = 1 / (1 + 10^{(opponent_mu - mu_prior)/400}).
  • K = sigma_prior^2 / (sigma_prior^2 + sigma_effective^2).
  • mu_posterior = mu_prior + K * (S - E) * scale.

Burada scale faktörü logistic ve ELO arasındaki ölçek farkını dengelemek için kullanılabilir; çoğu pratik uygulamada scale = 400 / ln(10) gibi sabitler gerektirmez — deneyin ve ayarlayın. Basit tutmak için scale=1 kabul edilebilir ve sistem tutarlı çalışır.

4) Provisional Dönemi: Süre Bazlı, Maç Bazlı veya Karma

30 dakikada istikrar hedefliyorsanız provisional dönemi zamanı önemlidir. Öneriler:

  • Süre bazlı: İlk 30 dakika boyunca sigma_prior, başlangıç değeriyle korunur ve K geniş tutulur (hızlı öğrenme).
  • Maç bazlı: İlk 10 maça kadar K'yi biraz büyük tutun; daha sonra düşürün.
  • Karma: İlk 30 dakika veya ilk 10 maç hangisi önce bitiyorsa provisional sonlanır.

Somut Örnek (Sayısal)

Başlangıç: mu0 = 1500, sigma0 = 220. Rakip mu = 1520, rakip sigma = 200. sigma_game = 400.

1. Beklenen skor E = 1 / (1 + 10^{(1520-1500)/400}) ≈ 0.47

2. sigma_effective^2 = 220^2 + 200^2 + 400^2 = 48400 + 40000 + 160000 = 248400

3. K = 220^2 / 248400 ≈ 48400 / 248400 ≈ 0.195

4. Oyuncu kazanırsa S=1: mu_posterior = 1500 + 0.195*(1 - 0.47) ≈ 1500 + 0.195*0.53 ≈ 1500 + 0.103 ≈ 1500.103 ≈ 1500.10

Bu örnek K küçük gözükse de bir seri maç (ör. 10 zafer) mu'yu anlamlı şekilde yukarı taşır. Eğer sigma0 daha büyük olsaydı (daha belirsiz başlangıç), K artar ve güncellemeler daha güçlü olur.

Uygulama İpuçları ve İyileştirmeler

  • Rakip belirsizliğini hesaba katın: Yeni rakibe karşı oynarken hem sizin hem rakibin sigma'sını kullanın.
  • Batch güncellemeler: Çok kısa aralıklarla gelen maçlarda toplu güncelleme (ör. her 5 maçta bir) daha stabildir.
  • Maç ağırlığı: Turnuva ya da kısa gösteri maçlarını farklı ağırlıklarla değerlendirin.
  • Oyun içi telemetri: Sadece kazanç/kayıp yerine maç içi performans metriklerini (örn. kill/death, hata sayısı) kullanarak likelihood zenginleştirin.
  • Gözlemlerle validasyon: 30 dakikalık dönemde RMS hata, konverjans hızını izleyin. Gerçek yetenekle sapma düşükse ayarlar iyi demektir.

Basit Pseudocode

<pre> for each match: compute E = 1/(1+10^((opp_mu - mu)/400)) sigma_eff2 = sigma^2 + opp_sigma^2 + sigma_game^2 K = sigma^2 / sigma_eff2 mu = mu + K * (S - E) sigma = sqrt( (1 - K) * sigma^2 ) if provisional_period: keep sigma pinned or decay slowly end

Sonuç ve Özet

Soğuk başlangıç sorununu tamamen ortadan kaldırmak mümkün olmasa da, basit bir Bayesian ELO uyarlaması ile yeni oyuncuların gerçek konumlarını 30 dakikalık oyun süresi içinde büyük ölçüde tutarlı hâle getirebilirsiniz. Anahtarlar:

  • Başlangıç priorunu mantıklı seçin (mu0, sigma0),
  • Katsayıyı belirsizliklere göre dinamik hesaplayın,
  • Provisional dönemi süre/maç bazında ayarlayın,
  • Telemetri ve batch güncellemelerle doğruluğu artırın.

Bu yöntem pratik, hesaplı ve uygulaması kolaydır. İleri adımlar olarak Glicko veya TrueSkill benzeri daha zengin modelleri değerlendirebilir, fakat basit Bayesian ELO birçok oyun sisteminde hemen uygulanıp etkisini gösterir.

Uygulamaya başlamadan önce küçük bir simülasyon ve A/B testi ile parametrizasyonu doğrulayın — teorik öneriler her ortamda aynı performansı vermez.