Ana içeriğe atla

Markov Zincir Monte Carlo (MCMC): Karmaşık Olasılık Dağılımlarından Örnekleme

Markov Zincir Monte Carlo’ya bir rehber — nasıl çalıştığı, neden kullanıldığı, en yaygın algoritmalar ve Bayesçi çıkarım için Python’da nasıl uygulanacağı.
Güncel 10 Haz 2026  · 15 dk. oku

Bazı olasılık dağılımları doğrudan üzerinde çalışmanız için fazlasıyla karmaşıktır.

Gerçek dünya verilerini modellerken, çoğu zaman işe yarar bir yere varmadan matematik bozulur. Kağıt üzerinde yönetilebilir görünen integraller, birkaç örtük değişken eklediğiniz anda çözülemez hâle gelir. Bu durum özellikle Bayesçi çıkarımda yaygındır; burada art dağılımı, önsel inançlarınızı gözlenen verilerle birleştirir — ve ortaya çıkan şeyi basit bir formülle özetleyemezsiniz.

Markov Zincir Monte Carlo’nun (MCMC) temel fikri, matematiği doğrudan çözmek yerine, dağılımı benzetimle keşfetmektir. Dağılımın tamamını hesaplamaya hiç ihtiyaç duymadan şeklini yansıtan örnekler çeker.

Bu yazıda MCMC’nin ardındaki temel kavramları ele alacak, en yaygın algoritmaları inceleyecek ve Python’da nasıl kullanacağınızı göstereceğim.

Python matematiğine bir tazeleme mi gerekiyor? Derin Öğrenme için Matematiksel Kavramları Anlamak blog yazılarımızı okuyarak Numpy’da uygulanan matematiği görebilirsiniz.

Markov Zincir Monte Carlo Nedir?

Markov Zincir Monte Carlo (MCMC), olasılık dağılımlarından örnekler üreten — bu dağılımlar doğrudan üzerinde çalışmak için fazla karmaşık olsa bile — bir algoritmalar ailesidir.

Ad iki parçaya ayrılır. Markov zinciri, algoritmanın olası durumlar arasında nasıl hareket ettiğini kontrol eder. Her adım yalnızca şu anda bulunduğunuz yere bağlıdır; oraya nasıl geldiğinizin tüm geçmişine değil. Monte Carlo kısmı ise ilgi duyulan nicelikleri tahmin etmek için rastgele örnekleme kullandığınız anlamına gelir.

Birlikte ele alındığında MCMC, zamanla hedef dağılımınızın şeklini yansıtan bir rastgele örnekler zinciri kurar. Öncelikle bir örnekleme tekniğidir. Matematiği tam olarak çözmüyor, benzetim yoluyla yaklaştırıyorsunuz.

Markov Zincir Monte Carlo Neden Gerekli

Gerçek dünyadaki veri dağılımlarının sorunu, ders kitabındaki kadar pürüzsüz olmamalarıdır.

Bayesçi çıkarımda, çoğu zaman bir art dağılım — veriyi gördükten sonra model parametrelerinizin güncellenmiş olasılığı — hesaplamaya çalışırsınız. Formül kağıt üzerinde kolay görünür: önsel ile olabilirliği çarpın, sonra marjinal olabilirliğe bölün. Son terim, her olası parametre değeri üzerinde tümleşk (integral) almayı gerektirir. Yüksek boyutlarda bu integral pratikte hesaplanamaz.

Modeliniz büyüdükçe durum daha da kötüleşir. Daha fazla parametre veya daha fazla örtük değişken eklediğinizde, tam hesaplama çıkmaza girer. Bunu yaygın senaryoların birçoğunda yaşarsınız:

  • Bayesçi hiyerarşik modeller: Parametrelerin diğer parametrelere bağlı olduğu, temiz bir şekilde tümleşemeyen iç içe dağılımlar oluşturduğu durumlar
  • Yüksek boyutlu art dağılımlar: Parametre sayısının, ızgara tabanlı yaklaştırmaları hesaplama açısından yapılabilir olmaktan çıkardığı durumlar
  • Uygunluklu olmayan önseller (non-conjugate priors): Önsel ve olabilirliğin tanıdık bir dağılıma birleşmediği durumlar

MCMC bu senaryolarda iyi bir dolambaçlı yoldur. Dağılımı hesaplamak yerine ondan örnekler çeker. Bu örnekler, integrali hiç çözmeden ihtiyacınız olan her şeyi içerir.

MCMC’nin Ardındaki İki Fikir

MCMC, tek başına yeterince basit ama birleştirildiğinde güçlü olan iki fikri bir araya getirir. Gelin birlikte üzerinden geçelim.

Markov zincirleri

Bir Markov zinciri, her adımın yalnızca şu an bulunduğunuz duruma bağlı olduğu durumlar dizisidir.

Daha önce nerede olduğunuz önemli değildir. Sıradaki gideceğiniz yeri yalnızca mevcut durum belirler. Bu “hafızasız” özellik — resmî adıyla Markov özelliği — matematiği yönetilebilir, algoritmayı uygulanabilir kılar.

Zincir durumlar arasında birer adım hareket eder ve doğru kurulumla sonunda durağan bir dağılıma yerleşir — herhangi bir durumda bulunma olasılığının değişmeyi bıraktığı kararlı bir desen. MCMC tam da bu kararlı dağılımla çalışacak şekilde tasarlanmıştır.

Monte Carlo yöntemleri

Monte Carlo yöntemleri, doğrudan hesaplanması zor nicelikleri tahmin etmek için rastgele örnekleme kullanır.

Fikir, bir dağılımdan yeterince rastgele örnek çekmek ve ardından yalnızca bu örneklere bakarak ortalama, varyans veya başka herhangi bir özelliği tahmin etmektir. Ne kadar çok örnek çekerseniz, tahminleriniz gerçek değerlere o kadar yaklaşır.

Tek başına ele alındığında Monte Carlo yöntemleri, dağılımdan doğrudan örnek çekmenizi gerektirir — ki bu tam da çözmeye çalıştığımız problemdir. Bu kısmı Markov zincirleri halleder.

Markov Zincir Monte Carlo Nasıl Çalışır

MCMC, her adımda basit bir kararla ilerleyen bir döngüdür.

  1. Başlangıç durumuyla başlayın: Parametre uzayınızda, kaba bir tahmin bile olsa bir başlangıç noktası seçin
  2. Yeni bir durum önerin: Sırada nereye hareket edeceğinizi önermek için bir teklif mekanizması kullanın
  3. Kabul edip etmeyeceğinize karar verin: Önerilen durumu mevcut olanla karşılaştırın ve hedef dağılım altında her birinin ne kadar olası olduğuna göre kabul edin veya reddedin
  4. Tekrarlayın: Bu döngüyü binlerce kez çalıştırın ve bu sırada örnekleri toplayın
  5. Örnekleri kullanın: Toplanan örneklerden ortalamalar, güvenilirlik aralıkları veya diğer ilgi çekici nicelikleri tahmin edin

Kabul/ret adımı “sihir”in gerçekleştiği yerdir.

Daha iyi durumları daha sık kabul ederek zincir, dağılımın tamamını hiç hesaplamadan yüksek olasılıklı bölgelere doğru çekilir.

Erken örnekler başladığınız yere bağlıdır, bu yüzden bunlar atılır. Yeterli yinelemeden sonra zincir başlangıç noktasını unutur ve kalan örnekler hedef dağılımınızın gerçek şeklini yansıtır.

Hedef Dağılım ve Durağan Dağılım

MCMC, doğrudan örnekleyemediğiniz bir hedef dağılımdan örnekler üretme hedefi etrafında inşa edilmiştir.

Hedef dağılım, genellikle Bayesçi çıkarımda bir art dağılım olmak üzere, hakkında bir şeyler öğrenmeye çalıştığınız dağılımdır. Normalleştirme sabitine kadar şeklini bilirsiniz, ama bu sabiti doğrudan hesaplayamazsınız. MCMC’ye bunun gerekmez.

Her MCMC algoritması, Markov zincirinin durağan dağılımının hedefle eşleşecek şekilde tasarlanmıştır. Durağan dağılım, zincirin yeterince adım sonrası yerleştiği dağılımdır.

Zinciri çalıştırmaya devam edin; hedef dağılımınızdan çekimlere benzeyen örnekler üretmeye başlayacaktır. İntegral böylece baypas edilir.

Popüler Markov Zincir Monte Carlo Algoritmaları

Pratikte karşınıza çıkacak birkaç MCMC algoritması vardır. Hepsi aynı çekirdek döngüyü izler, ancak yeni durumları nasıl önerdikleri ve hedef dağılım hakkındaki bilgiyi nasıl kullandıkları bakımından farklılaşırlar.

Metropolis algoritması

Metropolis algoritması, en basit MCMC algoritmasıdır ve her şey onunla başladı.

Her adımda, mevcut duruma rastgele gürültü ekleyerek yeni bir durum önerir. Önerilen durum hedef dağılım altında daha yüksek olasılığa sahipse, her zaman kabul edilir. Daha düşükse, iki olasılığın oranına orantılı bir olasılıkla kabul edilir — aksi halde zincir yerinde kalır.

Bu kabul/ret mekanizması, dağılımın tamamını hiç hesaplamadan zincirin yüksek olasılıklı bölgelerde daha fazla zaman geçirmesini sağlar.

Metropolis algoritması simetrik bir teklif dağılımı kullanır; yani herhangi bir yönde adım önermesi eşit olasılıklıdır. Modeller büyüdükçe bu yaklaşım tökezlemeye meyillidir.

Metropolis-Hastings algoritması

Metropolis-Hastings (MH) algoritması, asimetrik teklif dağılımlarına izin vererek Metropolis’i genelleştirir.

MH, bazı tekliflerin diğerlerinden daha olası olmasını kabul edecek şekilde kabul olasılığını ayarlar. Teklifi hedefinizin şekline uyarlayabilirsiniz; bu da daha iyi keşif ve daha hızlı yakınsamaya yol açar.

Modern MCMC yöntemlerinin çoğu MH’nin uzantılarıdır ya da aynı ilkeler üzerine kuruludur. Dolayısıyla Metropolis-Hastings’i anlarsanız, alanın temelini anlarsınız.

Gibbs örneklemesi

Gibbs örneklemesi, tüm parametreler için bir anda yeni bir durum önermek yerine, değişkenleri teker teker günceller.

Her adımda, her değişkeni koşullu dağılımından — diğerlerinin mevcut değerleri verildiğinde o değişkenin dağılımı — örnekler. Tüm değişkenleri bir kez dolaştığınızda, bir tam yinelemeyi tamamlamış olursunuz.

Bu yaklaşım, her koşullu çekim her zaman kabul edildiği için kabul/ret adımını tamamen ortadan kaldırır. Tam ortak dağılımdan örneklemenin zor ama koşulluların yapılabilir olduğu durumlarda — ki bu Bayesçi hiyerarşik modellerde yaygındır — kullanışlıdır.

Hamiltonyen Monte Carlo

Hamiltonyen Monte Carlo (HMC), modern Bayesçi çıkarımı ölçekli olarak pratik kılan ilk algoritmadır.

Rastgele yeni durumlar önermek yerine HMC, hedef dağılımdan türev (gradyan) bilgisini kullanarak, mevcut konumdan uzak ama kabul edilme olasılığı yüksek durumlar önerir. Parametre uzayında rastgele yürüyüş yöntemlerinden çok daha iyi hareket eder. Daha az reddedilen teklif ve yüksek boyutlu dağılımların daha iyi keşfi sağlar.

Metropolis gibi rastgele yürüyüş yöntemleri, parametre sayısı arttıkça ölçeklenmez. HMC aynı ölçüde bu soruna sahip değildir.

HMC, en yaygın kullanılan olasılıksal programlama platformlarından biri olan Stan’in motorudur. PyMC’de kullanılan ve HMC’nin uyarlamalı bir uzantısı olan No-U-Turn Sampler (NUTS), adım boyutu ve adım sayısını elle ayarlama ihtiyacını ortadan kaldırır.

Bayesçi İstatistikte Markov Zincir Monte Carlo

MCMC’nin en büyük etki yarattığı alan tek bir yer olacaksa, o da Bayesçi çıkarımdır.

Bayesçi istatistik, veriyi gördükten sonra model parametrelerinizin güncellenmiş olasılığı olan art dağılım etrafında döner. Bunu hesaplamak, önsel ile olabilirliği çarpıp normalleştirmek demektir. Normalleştirme adımı ise nadiren yapılabilir bir integrali gerektirir.

MCMC bu adımı tamamen ortadan kaldırır. Herhangi bir noktada normalleştirilmemiş art değeri değerlendirir, gerisini zincire bırakırsınız.

Basit bir örnek: Bir paranın yanlılığını (yazı/tura olasılığı) tahmin ettiğinizi düşünün. Paranın muhtemelen adil olduğuna dair bir önsel inançla başlar, ardından bir dizi atış gözlemlersiniz. Basit bir para modeli için art dağılım kapalı formdadır. Yüz parayı aynı anda tahmin edeceğiniz hiyerarşik bir yapı eklerseniz, hesaplanamaz hâle gelir.

MCMC ile zinciri çalıştırır, art dağılımdan örnekler toplar ve ihtiyaç duyduklarınızı bu örneklerle hesaplarsınız.

Burn-In, Yakınsama ve Karışmayı Anlamak

Bu üç kavram, MCMC’ye yeni başlayan veri bilimcilerini sıklıkla şaşırtır. Yanlış anlarsanız sonuçları elde edersiniz ama neden güvenilmez olduklarını bilemezsiniz.

Burn-in

Bir Markov zinciri başladığında, hedef dağılımınızın yüksek olasılıklı bölgelerinin nerede olduğunu bilmez.

O erken örnekler, hedef dağılımdan ziyade başlangıç noktanızdan etkilenir. Burn-in, bunları atma uygulamasıdır. Zinciri önce belirli sayıda yineleme çalıştırır, bu örnekleri atar ve yalnızca zincirin iyi bir başlangıç noktası bulmasına yetecek zaman geçtikten sonra gelenleri saklarsınız.

Burn-in süresi için evrensel bir kural yoktur. Modele, başlangıç noktasına ve zincirin ne kadar iyi karıştığına bağlıdır. Pratikte, sabit bir sayı seçmek yerine iz (trace) grafikleriyle görsel olarak teşhis edilir.

Yakınsama

Yakınsama, zincirin artık başlangıç noktasından etkilenmeyi bırakıp hedef dağılımı yansıtan örnekler çekmesi demektir.

Yakınsamamış bir zincir önyargılı örnekler üretir. Bu örneklerden hesapladığınız ortalama, gerçek art ortalamasıyla uyuşmaz. Bunun yerine, zincirin takılı kaldığı yeri yansıtır.

Yakınsamayı, teşhislerle sonradan değerlendirirsiniz. Farklı başlangıç noktalarından birden çok zincir çalıştırmak ve uyuşup uyuşmadıklarını kontrol etmek, yakınsama hatalarını yakalamanın en güvenilir yollarındandır.

Karışma (Mixing)

Yakınsayan ama kötü karışan bir zincir hâlâ problemlidir.

Karışma, zincirin hedef dağılımı ne kadar iyi keşfettiğini anlatır. İyi karışan bir zincir serbestçe hareket eder; yüksek ve düşük olasılıklı bölgeleri ziyaret eder ve kabaca birbirinden bağımsız örnekler üretir. Kötü karışan bir zincir ise hareket etmeden önce birçok yineleme boyunca tek bir bölgede kalır ve tüm dağılımı temsil etmeyen, yüksek derecede ilişkili örnekler üretir.

Kötü karışma, çoğunlukla gürültülü yatay bir bant yerine yavaş, dolambaçlı bir nehir gibi görünen iz grafiği olarak ortaya çıkar. Bunu gördüğünüzde, örnekleyicinizin ayara ihtiyacı vardır — daha iyi bir teklif dağılımı ya da tamamen farklı bir algoritma.

Karışma karşılaştırma grafiği

Karışma karşılaştırma grafiği

MCMC Sonuçları Nasıl Değerlendirilir

Şimdi MCMC’yi değerlendirmenin dört yolunu gösterecek ve her birini ne zaman kullanacağınızı açıklayacağım.

İz (trace) grafikleri

Bir iz grafiği, bir parametrenin her yinelemedeki örneklenen değerini gösterir. MCMC’yi çalıştırdıktan sonra bakmanız gereken ilk şeydir.

Sağlıklı bir iz grafiği, kararlı bir ortalama etrafında beyaz gürültü gibidir. Eğilimler, uzun düz bölümler veya yavaş sürüklenme görmemelisiniz. Zincirin gezinip durduğunu ya da birçok yineleme boyunca tek bir bölgede takıldığını görürseniz, bu bir karışma sorunudur ve örnekleriniz güvenilir değildir.

İz grafiklerinin görselleştirilmesi

İz grafiklerinin görselleştirilmesi

Otoregresyon/otokorelasyon

MCMC örnekleri asla tamamen bağımsız değildir. Her örnek, kendisinden önceki örnekten etkilenir. Otokorelasyon, örneklerin yinelemeler boyunca ne kadar güçlü ilişkilendiğini ölçer.

Yüksek otokorelasyon, örneklerinizin sayılarının öne sürdüğünden daha az bilgi taşıdığı anlamına gelir. İki bin ilişkili örnek, iki yüz bağımsız örneğe denk bilgi verebilir. Çoğu MCMC kütüphanesi, örnekler arası mesafe arttıkça korelasyonun ne kadar hızlı düştüğünü görebilmeniz için otokorelasyon grafikleri içerir.

Otokorelasyon grafiklerinin görselleştirilmesi

Otokorelasyon grafiklerinin görselleştirilmesi

Etkin örneklem büyüklüğü

Etkin örneklem büyüklüğü (ESS), bu otokorelasyonu pratik bir sayıya çevirir: zincirinizin kaç bağımsız örneğe eşdeğer olduğu.

5.000 örnek çektiyseniz ama ESS 200 ise, 200 bağımsız çekimin istatistiksel gücüyle çalışıyorsunuz. Düşük ESS, zinciri daha uzun çalıştırmanız, örnekleyiciyi ayarlamanız veya her ikisini birden yapmanız gerektiği anlamına gelir. Çoğu uygulayıcı, tahminlerine güvenmeden önce parametre başına en az birkaç yüz ESS hedefler.

Yakınsama teşhisleri

Birden çok zincir çalıştırdığınızda, aynı dağılıma yakınsayip yakınsamadıklarını resmî olarak test edebilirsiniz. Gelman-Rubin teşhisi, R-hat olarak raporlanır ve zincir içi varyansı zincirler arası varyansla karşılaştırır.

1,0’a yakın bir R-hat, zincirlerin uyuştuğu anlamına gelir ve bu iyi bir işarettir. 1,01 veya 1,05’in üzerindeki değerler (kütüphanenizin kullandığı eşiğe bağlı olarak) zincirlerin yakınsamadığını ve daha fazla yinelemeye ihtiyaç duyduğunuzu gösterir. PyMC gibi modern kütüphanelerin çoğu R-hat’i otomatik hesaplar ve çok yüksek olduğunda uyarı verir.

Python’da Markov Zincir Monte Carlo

Python’da farklı felsefelere sahip birkaç MCMC kütüphanesi vardır.

  • PyMC: Çoğu veri bilimci için en erişilebilir seçenek. Modelinizi Python sözdizimiyle tanımlarsınız ve PyMC perde arkasında NUTS’u (HMC’nin uyarlamalı bir sürümü) kullanarak örneklemeyi yürütür. Python’da Bayesçi modelleme için başvurulacak araçtır.
  • CmdStanPy / PyStan: Stan’e — özel bir olasılıksal programlama diline — Python arayüzleri. Stan, modeli çalıştırmadan önce C++’a derler; bu da onu hızlı ve karmaşık hiyerarşik modeller için uygun kılar. Bedeli daha dik bir öğrenme eğrisidir.
  • NumPy: Özel bir MCMC kütüphanesi yoktur, ancak Metropolis-Hastings gibi algoritmaları sıfırdan uygulayabilirsiniz. Daha üst düzey araçlara geçmeden önce perde arkasında neler olduğunu anlamak için yararlıdır.

Çoğu pratik çalışma için başlangıç noktası PyMC olur. Ben de bunu kullanacağım; siz de takip edecekseniz, önce kütüphaneyi kurduğunuzdan emin olun:

pip install pymc

İşleri basit tutmak için, bir dizi atıştan paranın yanlılığını tahmin etmek gibi kolay bir örneğe bağlı kalacağım.

Adım 1: Modeli tanımlayın

import pymc as pm
import numpy as np

# 1 = heads, 0 = tails
observed_flips = np.array([1, 0, 1, 1, 0, 1, 1, 1, 0, 1])

with pm.Model() as coin_model:
    # Prior: we believe the coin is probably fair
    bias = pm.Beta("bias", alpha=2, beta=2)

    # Likelihood: observed flips given the bias
    flips = pm.Bernoulli("flips", p=bias, observed=observed_flips)

pm.Beta önseli, paranın adil olduğuna dair zayıf bir inancı kodlar. pm.Bernoulli olabilirliği, modeli gözlenen veriye bağlar.

Adım 2: Örnekleyiciyi çalıştırın

with coin_model:
    trace = pm.sample(2000, tune=1000, return_inferencedata=True)

Örnekleyiciyi çalıştırmanın çıktısı

Örnekleyiciyi çalıştırmanın çıktısı

tune, burn-in adımlarının sayısını ayarlar — bu örnekler atılır. sample, ayarlamadan sonra zincir başına 2000 art örneği çeker.

Adım 3: Art dağılımı inceleyin

import arviz as az

az.plot_trace(trace, var_names=["bias"])
az.summary(trace, var_names=["bias"])

Model iz grafiği ve özet sonuçlar

Model iz grafiği ve özet sonuçlar

az.summary(), her parametre için art ortalamasını, standart sapmayı ve R-hat’i verir. R-hat 1,0’a yakınsa zincirler yakınsamıştır. az.plot_trace(), her parametre için izi ve art dağılımı yan yana çizer.

Bu veri kümesi için — 10 atışta 7 tura — art ortalaması 0,642 ve standart sapması 0,124’tür. Bu, adil para önseline yakın kalırken verideki kanıtı yansıtır. R-hat 1,00 ve ESS 2000’in oldukça üzerindedir; dolayısıyla zincirler yakınsamış ve örnekler güvenilirdir.

MCMC ile Yapılan Yaygın Hatalar

MCMC’yi çalıştırmak kolaydır, ancak yanlış kullanmak da bir o kadar kolaydır. En sık görülen hatalar şunlardır:

  • Yakınsamayı çok erken varsaymak: Örnekleyici hatasız çalıştı diye yakınsadığı anlamına gelmez. Sonuçlara güvenmeden önce her zaman R-hat ve iz grafiklerini kontrol edin. Zincir stabil görünüp yine de parametre uzayının tek bir bölgesine sıkışmış olabilir.
  • Burn-in’i yok saymak: Erken örnekler, hedef dağılımınızdan ziyade başlangıç noktanıza önyargılıdır. Bunları atın. Çoğu kütüphane bunu tune parametresiyle otomatik olarak halleder, ancak bu örnekleri yanlışlıkla analizinizde kullanmadığınızdan emin olun.
  • Kötü karışma: Çok yavaş hareket eden bir zincir, sayılarının öne sürdüğünden daha az bilgi taşıyan, yüksek derecede ilişkili örnekler üretir. İz grafiğiniz gürültülü bir yatay bant yerine yavaş bir sürüklenme gibi görünüyorsa, teklif dağılımınızın ayara ihtiyacı vardır veya daha iyi bir algoritmaya ihtiyaç duyarsınız. Metropolis’ten NUTS’a geçmek çoğu zaman bunu doğrudan düzeltir.
  • Çok az örnek: Düşük etkin örneklem büyüklüğü (ESS), zincir teknik olarak yakınsamış olsa bile tahminlerinizin güvenilmez olduğu anlamına gelir. ESS’niz toplam çekimlerin küçük bir kısmına denkse, zinciri daha uzun çalıştırın veya karışmayı iyileştirin.

MCMC ve Diğer Örnekleme Yöntemleri

Bir dağılımı yaklaştırmanın tek yolu MCMC değildir. Alternatiflerle karşılaştırması şöyledir.

  • Reddetme örneklemesi, daha basit bir dağılımdan teklifler çeker ve hedefe ne kadar uyduklarına göre kabul eder. Çalıştığında tamdır, ancak yüksek boyutlarda kabul oranları çöker.
  • Önem örneklemesi (importance sampling), bir teklif dağılımından alınan örnekleri hedef altındaki beklentileri yaklaştırmak için ağırlıklandırır. Düşük boyutlarda hızlı ve iyi çalışır, fakat boyut arttıkça ağırlıkların varyansı patlar. Pratikte birkaç örnek neredeyse tüm ağırlığı taşır ve tahminleri güvenilmez kılar.
  • Varyasyonel çıkarım (VI), bir ayrışım ölçütünü en aza indirerek hedefi yaklaştırmak için daha basit bir dağılım uydurur. VI, MCMC’den çok daha hızlıdır ve büyük veri kümelerine ölçeklenir; ancak MCMC’nin kaçındığı bir yaklaştırma hatası getirir. Uydurulan dağılım, MCMC’nin yakalayacağı art yapısını gözden kaçırabilir.

Kısa versiyon şöyle:

MCMC ve alternatifler

MCMC ve alternatifler

Hızdan daha çok doğruluğun önemli olduğu durumlarda MCMC doğru seçimdir. Büyük veri kümelerine ölçeklenmeniz veya gerçek zamanlı çıkarım yapmanız gerekiyorsa, doğrulukta ödün vermeye değer olduğu için varyasyonel çıkarım tercih edilebilir.

Sonuç

MCMC, dışarıdan göz korkutucu görünen ama aslında ne yaptığını — doğrudan hesaplayamadığınız bir dağılımın şeklini kademeli olarak yansıtan bir örnekler zinciri kurmak — anladığınızda çok mantıklı gelen araçlardandır.

Ayrıca Markov zincirleri ve Monte Carlo yöntemlerine ayırdığınızda anlaması çok daha kolaydır.

Bayesçi istatistikteki rolü abartılamaz. Aksi halde erişilemez olan art dağılımlar, güvenilir bir örnekleyiciye sahip olduğunuz anda çözülebilir hâle gelir. Bu yüzden MCMC, PyMC ve Stan gibi olasılıksal programlama kütüphanelerinin merkezindedir.

Ancak uygulamaya geçmeden önce sezgiyi doğru oturtmalısınız. Zincirin neden burn-in’e ihtiyaç duyduğunu, karışmanın gerçekte ne anlama geldiğini ve bir iz grafiğinin nasıl okunacağını anlayın. Kodun kendisi işin kolay kısmıdır; zira Python kütüphaneleri tüm soyutlamaları basit fonksiyon çağrılarının arkasına gizler.

Makine öğreniminde yetkinleşmek istiyorsanız, Python ile Makine Öğrenimi Bilimcisi eğitim yolumuza kaydolun. 85 saatlik materyal, 2026’da işe hazır olmanıza yardımcı olacak.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.

MCMC SSS

Markov Zincir Monte Carlo ne için kullanılır?

MCMC, doğrudan üzerinde çalışmak için fazla karmaşık olan olasılık dağılımlarından örnekler çekmek için kullanılır. En yaygın olarak, kapalı form çözümler gerektirmeden art dağılımları tahmin ettiği Bayesçi istatistikte karşımıza çıkar. Fizik benzetimleri, hesaplamalı biyoloji ve kesin çıkarımın mümkün olmadığı her alanda da kullanılır.

MCMC, düzenli rastgele örneklemeden nasıl farklıdır?

Düzenli rastgele örnekleme, hedef dağılımınızdan doğrudan çekim yapabileceğinizi varsayar. MCMC, hedefe kademeli olarak yakınsayan bir örnekler zinciri kurarak bu durumu aşar. Tüm dağılımı bilmenize gerek yoktur; herhangi bir noktada onu değerlendirmeyi bilmeniz yeterlidir. Bedeli, MCMC örneklerinin birbiriyle ilişkili olmasıdır; bu da güvenilir tahminler için daha fazla örneğe ihtiyaç duyduğunuz anlamına gelir.

Bir MCMC örnekleyicisinin yakınsadığını nasıl anlarsınız?

En yaygın kontrol, R-hat olarak raporlanan Gelman-Rubin teşhisidir. 1,0’a yakın değerler, zincirlerin aynı dağılıma yakınsadığını gösterir. İz grafikleri ve etkin örneklem büyüklüğü (ESS) de yararlıdır. Sağlıklı bir iz grafiği, kararlı bir ortalama etrafında rastgele gürültü gibidir ve yüksek ESS, tahminlerinize güvenmek için örneklerinizin yeterli bilgi taşıdığı anlamına gelir.

Metropolis-Hastings ile Hamiltonyen Monte Carlo arasındaki fark nedir?

Metropolis-Hastings, hedef dağılımın karmaşık geometrisi olduğunda yavaş kalabilen şekilde, mevcut konuma rastgele gürültü ekleyerek yeni durumlar önerir. Hamiltonyen Monte Carlo ise mevcut konumdan uzak ama kabul edilmesi muhtemel durumları önermek için gradyan bilgisini kullanır; bu da yüksek boyutlarda çok daha iyi keşif sağlar. Çoğu modern Bayesçi iş akışında HMC — ve onun uyarlamalı sürümü NUTS — tercih edilir.

Varyasyonel çıkarımı MCMC yerine ne zaman kullanmalısınız?

Hız ve ölçeklenebilirliğin doğruluktan daha önemli olduğu zamanlarda. MCMC yüksek kaliteli örnekler üretir ancak büyük veri kümeleri ve yüksek boyutlu modeller için kötü ölçeklenir. Varyasyonel çıkarım, art dağılımı yaklaştırmak için daha basit bir dağılım uydurur; çok daha hızlıdır, ancak MCMC’nin kaçındığı yaklaştırma hatası getirir. Büyük ölçekte prototipleme yapıyor ya da gerçek zamanlı çıkarıma ihtiyaç duyuyorsanız, varyasyonel çıkarım bu ödünleşmeye değer.

Konular

DataCamp ile öğrenin

Program

Pekiştirmeli Öğrenme Python'da

12 sa
Karmaşık gerçek dünya ortamlarında gezinebilen ve LLM'leri eğitebilen modeller oluşturmak için pekiştirmeli öğrenmenin (RL) temellerinde ustalaşın.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow