Ana içeriğe atla

Box-Cox Dönüşümü: Varyansı Tahmin Etmeden Dengeleyin

Box-Cox dönüşümünün nasıl çalıştığını, lambda parametresinin nasıl seçileceğini ve varyansı dengelemek, çarpıklığı azaltmak ve istatistiksel modelleri iyileştirmek için ne zaman kullanılacağını öğrenin.
Güncel 15 Eki 2026  · 9 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Konut fiyatları üzerinde bir doğrusal regresyon modeli kuruyorsunuz. Artık grafiği bir megafon gibi görünüyor (solda dar, sağa doğru açılıyor). Model teknik olarak çalışıyor. Sonuçlar ise güvenilir değil. Bu desen heteroskedastisite örneğidir ve açık bir hata vermeden sessizce çıkarımlarınızı geçersiz kılan ihlallerden biridir.

Bir seçenek, yanıt değişkenini dönüştürmektir. Ve log, karekök ya da ters alma denemelerinden hangisini seçeceğinizi tahmin etmek yerine, verilerin doğru olanı önermesine izin verebilirsiniz. Box-Cox dönüşümünün arkasındaki fikir budur ve burada ele alacağımız konu da bu: formül, lambda nasıl seçilir ve Python ile R'de nasıl uygulanır.

Box-Cox Dönüşümü Nedir?

Box-Cox dönüşümü, yalnızca pozitif veriler için güç dönüşümleri ailesidir. Kendi başınıza belirli bir dönüşümü seçmek yerine, lambda (λ) adı verilen bir parametreyle indekslenen geniş bir aralıkta arama yapmanın bir yolunu sunar.

Lambda 0 olduğunda log dönüşümü elde edersiniz. 0,5 olduğunda karekök dönüşümüne yakın bir şey; -1 olduğunda ise ters alma işlemine yakın bir şey elde edersiniz. Bunların hepsi aynı formülün özel durumlarıdır; bu da aralarından önceden seçim yapmanız gerekmediği anlamına gelir. Hangisinin en iyi uyduğunu verilerden tahmin edersiniz.

En baştan net olmak gereken bir nokta: Box-Cox verileri sadece "normal yapmaz". Modelleme probleminize bağlı olarak varyansı dengelemeye, kestiriciler ile yanıt arasındaki doğrusallığı iyileştirmeye veya model varsayımlarınızı daha iyi karşılamaya yardımcı olabilir. Ayrıca girdilerin kesinlikle pozitif olmasını gerektirir. Sıfırlar ve negatifler kapsam dışıdır. Bununla ilgili daha fazlası kısıtlar bölümünde.

Box-Cox Dönüşümü Nasıl Çalışır

Formüle geçmeden önce biraz sezgi geliştirmek gerekir. Haftalık satış geliri gibi sağa çarpık bir değişkeniniz olduğunu düşünün: sağda uzun bir kuyruk, ortalamayla birlikte artan varyans. Soru şu: Bu değişkenin hangi kuvveti daha düzgün davranan bir yanıt gibi hareket eder?

Farklı lambda değerleri, zaten bildiğiniz dönüşümlere karşılık gelir:

  • lambda = 1: x üzerinde doğrusal kaydırma (dağılım şeklini korur)
  • lambda = 0: logaritmik dönüşüm
  • lambda = 0,5: karekök dönüşümüyle ilişkili
  • lambda = -1: ters alma dönüşümüyle ilişkili

Standart Box-Cox formülasyonu ölçekleme ve öteleme geleneklerini içerir; bu nedenle bunlar birebir aynı formüller değil, tanıdık eşdeğerler olarak anlaşılmalıdır. Log durumu (lambda = 0) bir limit olarak ele alınır. Formül, süreklilik argümanı nedeniyle burada log(x) ifadesine döner; bu keyfi bir istisna değildir.

Box-Cox Dönüşüm Formülü

Standart parçalı formül şöyledir:

Burada x dönüştürülen pozitif değeri, lambda ise dönüşüm parametresini ifade eder. (xλ - 1) / λ biçimi ilk bakışta alışılmadık görünebilir. Bu, lambda sıfıra yaklaşırken dönüşümü sürekli tutan ölçekleme geleneğidir. Bu olmadan, lambda = 0 noktasında atlamalı süreksizlik olur ve log durumu geri kalan aileden tamamen kopuk kalırdı. Bununla birlikte formül, lambda → 0 iken düzgün bir şekilde ln(x)'e geçiş yapar.

Şimdilik türetme kısmını dert etmeyin. Operasyonel olarak: lambdayı seçin ya da tahmin edin, pozitif değerlerinizi yerine koyun ve dönüştürülmüş çıktı ile çalışın.

Box-Cox Dönüşümü İçin Lambda Nasıl Seçilir

Lambda, sezgiye dayalı olarak el yordamıyla belirleyeceğiniz bir şey değildir. Veriden tahmin edilir. Box-Cox'u, "log deneyin" diye tahmin etmekten ayıran şey budur. Altında ilkeli bir istatistiksel prosedür vardır.

Maksimum olabilirlik tahmini

Amaç, verilerinizin varsayılan modele en iyi uymasını sağlayan lambdayı bulmaktır. Regresyon bağlamında bu, dönüştürülmüş yanıtın modelin varsayımlarını, tipik olarak artıkların normalliği ve sabit varyansı, en iyi karşıladığı lambdayı bulmak demektir. Burada seçtiğiniz şey, yanıtın marjinal dağılımını tek başına en normal gösteren lambda değildir. Modelleme bağlamında en iyi çalışan lambdayı seçersiniz. Bu ayrım önemlidir; hatalar bölümünde buna geri döneceğiz.

Box-Cox profil olabilirliği

Buradaki en faydalı tanı araçlarından biri profil olabilirlik grafiğidir: x ekseninde lambda değerleri, y ekseninde log-olabilirlik. Tepe noktası, tahmin edilen en uygun lambdayı verir. En az bunun kadar faydalı olan, genellikle maksimumun altında bir eşikte yatay bir çizgiyle gösterilen tepe çevresindeki güven aralığıdır. Bu aralık içindeki herhangi bir lambda, istatistiksel olarak optimumdan ayırt edilemez.

Yorumlanabilir bir lambda seçmek

İnsanların yeterince önemsemediği pratik bir husus: En uygun lambda 0,43 gibi bir şeyse ve 0,5 güven aralığı içinde kalıyorsa, 0,5'i tercih edin. Karekök dönüşümü açıklaması daha kolaydır, geri dönüşümü daha basittir ve performanstan neredeyse hiçbir şey kaybettirmez. Aynı mantık 0 (log) ve 1 (dönüşüm yok) için de geçerlidir. Yorumlanabilirlik önemlidir; özellikle de modelinizi lambda = 0,43'ün ne anlama geldiğini bilmeyen birine anlatırken.

Box-Cox Dönüşümünü Python ve R'de Nasıl Kullanırsınız

Artık lambdanın ne olduğunu ve nasıl seçildiğini bildiğimize göre, bunu pratiğe dökelim. Önce Python, sonra R.

Python'da Box-Cox dönüşümü

SciPy'nin stats modülü bunu doğrudan ele alır. boxcox() işlevi, tek çağrıda hem lambdayı tahmin eder hem de dönüştürülmüş değerleri döndürür. İşte simüle edilmiş sağa çarpık verilerle minimal bir örnek:

import numpy as np
from scipy import stats

# Simulate right-skewed data (e.g., weekly sales revenue in thousands)
rng = np.random.default_rng(42)
revenue = rng.exponential(scale=50, size=300)

# Confirm all values are positive before transforming
assert (revenue > 0).all(), "Box-Cox requires strictly positive values"

# Estimate lambda and transform
transformed, estimated_lambda = stats.boxcox(revenue)

print(f"Estimated lambda: {estimated_lambda:.4f}")
print(f"Original mean: {revenue.mean():.2f}, std: {revenue.std():.2f}")
print(f"Transformed mean: {transformed.mean():.2f}, std: {transformed.std():.2f}")

Buradaki estimated_lambda, normallik varsayımı altında log-olabilirliği maksimize eden değerdir. Daha sonra tahmin için yeni verileri dönüştürürken de aynı değeri kullanırsınız.

Bunun, lambdayı yanıtın marjinal dağılımından tahmin ettiğine dikkat edin; bir regresyon modeli içinde değil. Bir modelleme iş akışında, lambdayı model bağlamında değerlendirirsiniz. Aşağıdaki R örneği, MASS'in boxcox() işlevini kullanarak bunun nasıl yapıldığını gösterir.

R'de Box-Cox dönüşümü

R'de MASS paketindeki boxcox() işlevi, regresyon iş akışları için tasarlanmıştır. Uydurulmuş bir model nesnesi alır ve profil olabilirliğini doğrudan çizer; bu da tek başına bir vektör yerine model bağlamında lambdayı değerlendirirken daha doğal bir yaklaşımdır.

library(MASS)

# Simulate right-skewed response (e.g., weekly revenue)
set.seed(42)
revenue <- rexp(300, rate = 1/50)
predictor <- rnorm(300)

# Fit initial model
initial_model <- lm(revenue ~ predictor)

# Estimate lambda via profile likelihood
bc_result <- boxcox(initial_model, lambda = seq(-2, 2, by = 0.1))

# Extract the lambda with highest log-likelihood
best_lambda <- bc_result$x[which.max(bc_result$y)]
cat("Best lambda:", round(best_lambda, 3), "\n")

# Refit with transformed response
revenue_transformed <- (revenue^best_lambda - 1) / best_lambda
final_model <- lm(revenue_transformed ~ predictor)

R'nin boxcox() işlevi profil olabilirliğini otomatik olarak çizer; böylece güven aralığı görselleştirmesini de doğrudan elde edersiniz. Bu da lambdayı daha basit bir değere yuvarlayıp yuvarlamamaya karar vermeyi kolaylaştırır.

Box-Cox Dönüşümünü Yorumlamak ve Geriye Döndürmek

Yanıtı dönüştürüp bir model uyumladıktan sonra, tahminleriniz dönüştürülmüş ölçekte olur; orijinal ölçekte değil. 3,2'lik bir tahmin, 3,2 birim (xλ - 1) / λ anlamına gelir; 3,2 birim gelir anlamına değil.

Katsayıları dikkatle yorumlamak

Dönüşümden sonra katsayıların yorumu değişir. Dönüştürülmüş ölçekte, bir kestiricideki bir birimlik artış, orijinal y'de değil, y(λ)'da belirli bir değişime karşılık gelir. Lambda 0'a yakınsa (log'a yakın), orijinal ölçekteki yüzde değişimleri yaklaşık olarak yorumlayabilirsiniz. Diğer lambda değerlerinde ilişki daha karmaşıktır ve x'in mevcut düzeyine bağlıdır.

Ters dönüşüm

Tahminleri orijinal ölçeğe geri çevirmek için tersini uygulayın:

Lambda = 0 için ln(x)'in tersi basitçe exp(y)'dir.

Yeniden dönüşüm yanlılığı hakkında bir not

Dönüştürülmüş ölçekteki tahmini ortalamayı geri dönüştürmek, orijinal ölçekteki ortalamanın yanlı olmayan bir tahminini vermez. Bu, Jensen eşitsizliğinin bilinen bir sonucudur ve özellikle log-lineer modellerde ortalama değerlerin tahmin edildiği durumlarda önemlidir. Yanlılık düzeltmesine derinlemesine girmek kapsamımızın dışında. Daha geniş bağlam isteyenler için Python ile Regresyona Giriş kursumuz, regresyon modellerinde tahmin ve yorumu daha geniş kapsamda ele alır.

Box-Cox Diğer Dönüşümlere Karşı

Box-Cox'u, halihazırda kullanıyor olabileceğiniz alternatiflere karşı ne zaman tercih etmelisiniz?

Box-Cox vs log dönüşümü

Log dönüşümü, Box-Cox'un lambda = 0 durumudur. Nokta. Daha önce log dönüşümü kullandıysanız, lambda sabitlenmiş bir Box-Cox örneğini kullanmışsınızdır. Box-Cox'un avantajı, en baştan lambda = 0'a bağlanmamasıdır. Bununla birlikte, profil olabilirliğiniz doğrudan lambda = 0'da tepe yapıyorsa, log kullanın. Gereksiz karmaşıklığa gerek yok.

Box-Cox vs Yeo-Johnson dönüşümü

Yeo-Johnson dönüşümü, sıfır ve negatif değerleri ele almak için tasarlanmış Box-Cox'un doğrudan bir uzantısıdır. Verilerinizde sıfırlar (örneğin sayımlar) veya negatif değerler varsa başvurmanız gereken yöntem budur. Dönüşümler matematiksel olarak benzerdir. Yeo-Johnson yalnızca pozitiflik kısıtını gevşetir. Scikit-learn'de PowerTransformer her ikisini de destekler, method='box-cox' ve method='yeo-johnson'; bu da denemeyi kolaylaştırır.

Box-Cox vs standartlaştırma

Standartlaştırma (z-puanlama) verileri kaydırır ve ölçeklendirir: ortalamayı 0'a, standart sapmayı 1'e getirir. Box-Cox ise doğrusal olmayan bir dönüşümle dağılımın şeklini değiştirir. Farklı problemleri çözerler. Standartlaştırma çarpıklığı azaltmaz veya varyansı dengelemez. Box-Cox verilerinizi merkezileştirmez veya özellikleri büyüklükçe karşılaştırılabilir hale getirmez. Sırayla ikisini de yapabilirsiniz; önce dönüştürüp sonra standartlaştırabilirsiniz, ancak bunlar birbirinin alternatifi değildir.

Sınırlamalar ve Yaygın Hatalar

Bazıları sonradan bakınca bariz görünür. Bu yine de yapılmalarını engellemez ve bazıları o kadar incedir ki "bariz" ifadesi fazlasıyla iyimser kalır.

Box-Cox'u sıfır veya negatif değerlere uygulamak

Formül sıfırda veya altında bozulur. Pozitif lambda için 0λ sıfırdır, negatif lambda için tanımsızdır; log(0) ise eksi sonsuzdur. Verilerinizde sıfır veya negatif varsa, Box-Cox ya hata verir ya da sessizce saçma sonuçlar üretir. Bunun yerine Yeo-Johnson kullanın veya küçük bir pozitif sabitle veriyi kaydırın. İkincisi, şüpheyle yaklaşılması gereken bir yaklaşıklamadır.

Sadece normalliği zorlamak için verileri dönüştürmek

Box-Cox, belirli bir modelleme problemine yanıt olarak uygulanmalıdır: sabit olmayan varyans, zayıf doğrusallık, ihlal edilen artık varsayımları. Marjinal dağılımınızı herhangi bir model kurmadan önce "normal görünsün" diye otomatik bir ön işleme adımı olarak kullanmak ters mantıktır. Yanıtınızı tek başına en iyi normale yaklaştıran lambda, modelinizin artıklarını gerçekten iyileştiren lambda olmayabilir.

Model tanılarını göz ardı etmek

Lambdayı tahmin etmek işin yalnızca yarısıdır. Dönüştürüp yeniden uyumladıktan sonra artık grafiklerinizi yeniden kontrol edin. Box-Cox varsayımların karşılanacağını garanti etmez. Size bir şans verir. Artıklar hâlâ açılıyorsa ya da eğrilik varsa, başka bir şey söz konusudur.

Yorumun değiştiğini unutmak

Dönüşümden sonra katsayılar artık orijinal ölçekteki ilişkileri tanımlamaz. Bu, sonuçlar rapor edilirken veya tahmin yapılırken en çok kafa karıştıran noktadır. Her adımda hangi ölçekte çalıştığınızı takip edin.

Lambdayı modelleme bağlamı dışında değerlendirmek

Yalnızca yanıt değişkeninizin histogramına bakarak tek değişkenli dağılımdan tahmin edilen lambda, bir regresyon modeli içinde tahmin edilenden farklı olabilir. Doğru yaklaşım regresyon temellidir. Hedef, marjinal dağılımsal varsayımları değil, artık varsayımlarını sağlamaktır.

Tahmin yaparken dönüşümü uygulamayı unutmak

Dönüştürülmüş verilerle eğitilmiş bir modeli devreye aldığınızda, yeni girdileri aynı lambda ile aynı şekilde dönüştürmeniz ve tahminleri geri dönüştürmeniz gerekir. Bu adımlardan herhangi birini atlamak, yanlış ölçekte tahminler verir. Kulağa bariz gelse de düzenli olarak unutulur.

Sonuç

Box-Cox tek bir dönüşüm değil, bir dönüşüm ailesidir. Hangi aile üyesini elde edeceğinizi lambda belirler ve log dönüşümü sadece lambda = 0 özel durumudur. Analistlerin çoğu, üzerinde düşünmeden varsayılan olarak log kullanır. Box-Cox bu seçimi görünür kılar ve lambdanın farklı bir değerinin modele gerçekten daha iyi hizmet edip etmeyeceğini sormanın ilkesel bir yolunu sunar.

Bunu, belirli bir şeyi teşhis ederken kullanın: artıklerde heteroskedastisite, doğrusal olmama, açıkça karşılanmayan varsayımlar. Her yanıt değişkenine otomatik olarak uygulamak, vazgeçmeye değer bir alışkanlıktır. Ve verilerinizde sıfırlar veya negatifler varsa, bu Box-Cox alanı değildir. Bu Yeo-Johnson'dır.

Box-Cox'un genellikle desteklediği regresyon yöntemlerinde daha sağlam bir temel için, R ile Orta Düzey Regresyon kursumuz ve Python'da statsmodels ile Regresyona Giriş iyi birer sonraki adımdır.


Vinod Chugani's photo
Author
Vinod Chugani
LinkedIn

Vinod Chugani kariyerine Tokyo'da JPMorgan'ın en genç Hedge Fund Sales Desk Lideri olarak başladı ve daha sonra Lehman Brothers'ta bireysel satış rekoru kırdı, ardından 30 ülkede faaliyet gösteren bir elektronik dağıtım işi kurdu ve veriye yönelmeden önce geliri SG$100 milyonun üzerine taşıdı. Duke Ekonomimezunu ve NYC Data Science Academy alum, Maven'de Hugo Bowne-Anderson'ın Building AI Applications kursu için 100+ başvuru arasından seçilen üç bursiyerden biriydi. Bugün, istatistikten ajan temelli yapay zekâya uzanan konularda DataCamp, KDnuggets, Machine Learning Mastery ve Statology için yazıyor ve adında 1.000'i aşkın bire bir oturum bulunan NYC Data Science Academy'de veri profesyonellerine mentorluk yapıyor.

 

SSS

Box-Cox dönüşümü, normal dağılımlı girdi verileri gerektirir mi?

Hayır. Box-Cox, yalnızca değerlerin kesinlikle pozitif olması gerektiği dışında girdi dağılımına dair bir varsayımda bulunmaz. Amaç, aşağı akıştaki modelinizin sabit varyans ve artıkların yaklaşık normalliği gibi varsayımlarını daha iyi karşılayan dönüştürülmüş veriler üretmektir. Girişte normallik şart değildir.

Box-Cox'u kestirici değişkenlere de uygulayabilir miyim, yoksa yalnızca yanıta mı?

Teknik olarak evet, ancak pratikte en yaygın olarak regresyonda yanıt değişkenine uygulanır; burada amaç artık varsayımlarını sağlamaktır. Kestiricileri dönüştürmek ayrı bir problemdir ve genellikle farklı tekniklerle ele alınır. Box-Cox'u bir veri kümesindeki her sütuna uygulamak, tasarlandığı şey değildir.

Verilerimde sıfırlar varsa ne yapmalıyım?

Box-Cox sıfır veya negatif değerleri kaldıramaz; çünkü formül bu noktalarda tanımsızdır. İki seçeneğiniz var. Birincisi, pozitif olmayan değerlere de genişleyen Yeo-Johnson dönüşümünü kullanmak. İkincisi, dönüştürmeden önce veriyi küçük bir pozitif sabitle kaydırmak; ancak bu bir yaklaşıklamadır ve lambda tahminini etkileyebilir.

Bir modeli eğittikten sonra Box-Cox'u yeni verilere tutarlı şekilde nasıl uygularım?

Eğitim sırasında tahmin edilen lambdayı kaydedin. Yeni veriler geldiğinde, aynı formülü sabit o lambda ile uygulayın. Yeni gözlemler üzerinde lambdayı yeniden tahmin etmeyin. Scikit-learn'ün PowerTransformer sınıfında fit() çağrısı lambdayı saklar ve transform() bunu tutarlı şekilde uygular. Bir boru hattı içinde en güvenli yaklaşım budur.

Box-Cox formülü neden sadece x^λ yerine (x^λ - 1) / λ kullanıyor?

Bu ölçekleme geleneği, lambda sıfıra yaklaşırken dönüşümü sürekli tutar. (x^λ - 1) / λ biçimi olmadan formül, lambda = 0 noktasında log dönüşüme düzgünce yakınsamak yerine süreksiz bir sıçrama yapardı. Bu, log, karekök ve ters alma dâhil tüm özel durumların aynı bağlı ailenin üyesi olmasını sağlayan matematiksel bir kolaylıktır.

Eğitim verisinde tahmin ettiğim lambda, modelimin varsayımlarını kesin olarak düzeltir mi?

Hayır. Lambda tahmini, model varsayımlarınızın daha iyi karşılanma olasılığını artırır; ancak bu bir garanti değildir. Dönüştürüp yeniden uyumladıktan sonra artık grafiklerini yine incelemeniz gerekir. Sorunlar sürüyorsa, Box-Cox bu veri kümesi veya model için doğru araç olmayabilir.

SciPy'deki Box-Cox ile scikit-learn'ün `PowerTransformer`'ı arasındaki fark nedir?

SciPy'nin boxcox() işlevi doğrudan bir istatistiksel fonksiyondur. Lambda'yı tahmin eder ve dönüştürülmüş diziyi döndürür; bu da bağımsız analizler için uygundur. Scikit-learn'ün method='box-cox' ile PowerTransformer sınıfı ise aynı mantığı, boru hatlarına uyan, fit() ve transform() adımlarını ayıran ve Yeo-Johnson'ı da destekleyen bir dönüştürücü nesneye sarar. Makine öğrenimi iş akışlarında genellikle PowerTransformer daha kullanışlıdır.

En uygun tahmin biraz farklı olsa bile lambdayı yuvarlanmış bir değere çekmeli miyim?

Çoğu zaman evet. En uygun lambda 0,48 ise ancak profil olabilirliği grafiğinden gelen güven aralığı içinde 0,5 yer alıyorsa, karekök dönüşümü istatistiksel olarak savunulabilirdir ve açıklaması ile ters çevrilmesi çok daha kolaydır. Performans farkı ihmal edilebilir düzeydeyken yorumlanabilirlik kazanımı gerçektir. Aynı mantık, güven aralığı içinde lambda = 0 (log) veya lambda = 1 (şekli koruyan kaydırma) olduğunda da geçerlidir.

Konular
Veri Bilimi

DataCamp ile Öğrenin

{count, plural, one {Kurs} other {Kurs}}

Seaborn ile Veri Görselleştirmeye Giriş

{hours} sa
184.9K
Seaborn kütüphanesini kullanarak Python'da bilgilendirici ve çekici görselleştirmeler oluşturmayı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

{count, plural, one {blog} other {blog}}

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

{count, plural, one {blog} other {blog}}

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

{count, plural, one {Eğitim} other {Eğitim}}

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

{count, plural, one {Eğitim} other {Eğitim}}

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör