Önsel inanç

Python ile Bayesçi Veri Analizi

Michal Oleszak

Machine Learning Engineer

Önsel dağılım

  • Önsel dağılım, veri görmeden önce parametre hakkında bildiklerimizi yansıtır:
    • hiçbir şey   →   uniform dağılım (tüm değerler eşit olası)
    • eski art sel   →   yeni verilerle güncellenebilir

 

  • Modele dış bilgiyi katmak için herhangi bir olasılık dağılımı önsel olarak seçilebilir:
    • uzman görüşü
    • genel kanı
    • önceki araştırmalar
    • öznel inanç
Python ile Bayesçi Veri Analizi

Önselin etkisi

Üst üste iki yoğunluk grafiği: biri önsel dağılım, diğeri art sel. Önsel uniform, art sel zil biçimli, biraz daha yüksek.

Üst üste iki yoğunluk grafiği: biri önsel dağılım, diğeri art sel. Önsel uniform, art sel zil biçimli, biraz daha yüksek ve sağa çarpık.

Üst üste iki yoğunluk grafiği: biri önsel dağılım, diğeri art sel. Önsel uniform, art sel zil biçimli, çok daha yüksek.

Üst üste iki yoğunluk grafiği: biri önsel dağılım, diğeri art sel. Önsel uniform, art sel zil biçimli, çok daha daha yüksek.

Python ile Bayesçi Veri Analizi

Önsel dağılım

  • Önsel dağılım veriyi görmeden önce seçilir.
  • Önsel seçimi, art seli etkileyebilir (özellikle az veriyle).
  • Seçme yanlılığını önlemek için önseller:
    • açıkça belirtilmeli,
    • açıklanabilir olmalı: önceki araştırmalar, makul varsayımlar, uzman görüşü vb. temelli.
Python ile Bayesçi Veri Analizi

Doğru önseli seçmek

Önsel inancımız: tura daha az olası

Zil biçimli, sola çarpık bir yoğunluk grafiği; tepe noktası yaklaşık 0,25.

Bazı seçimler diğerlerinden daha iyidir!

 

Zil biçimli, sola çarpık bir yoğunluk grafiği; tepe noktası yaklaşık 0,25; önceki grafikten biraz daha dar.

Python ile Bayesçi Veri Analizi

Eşlenik önseller

  • Bazı önseller, belirli olabilirliklerle çarpıldığında bilinen art seller verir.
  • Bunlara eşlenik önseller denir.
  • Yazı-tura örneğinde:
    • önseli Beta(a, b) seçersek,
    • art sel Beta(#yazı + a, #atma - #yazı + b) olur
  • Art selden numpy ile örnekleyebiliriz.
    1. Bölümdeki get_heads_prob():
      def get_heads_prob(tosses):
      num_heads = np.sum(tosses)
      # prior: Beta(1,1)
      return np.random.beta(num_heads + 1, len(tosses) - num_heads + 1, 1000)
      
Python ile Bayesçi Veri Analizi

Art seli elde etmenin iki yolu

Simülasyon

  • Art sel biliniyorsa, numpy ile örnekleyebiliriz:
    draws = np.random.beta(2, 4, 1000)
    
  • Çıktı: 1000 art sel çekilişinden oluşan bir dizi:
    array([0.05941031, ..., 0.70015975])
    
  • Şöyle çizilebilir:
    sns.kdeplot(draws)
    

Hesaplama

  • Art sel bilinmiyorsa, ızgara yaklaşımı ile hesaplanabilir.
  • Çıktı: her ızgara elemanı için art sel olasılığı:
           head_prob  posterior_prob
    0           0.00        0.009901
    1           0.01        0.003624
               ...           ...
    10199       0.99        0.003624
    10200       1.00        0.009901
    
  • Şöyle çizilebilir:
    sns.lineplot(df["head_prob"], df["posterior_prob"])
    
Python ile Bayesçi Veri Analizi

Önsellerle çalışmaya başlayalım!

Python ile Bayesçi Veri Analizi

Preparing Video For Download...