Makine öğrenmesi modellerindeki hataların iki ana nedeni vardır:
Önyargı (bias), hedef fonksiyonun yaklaşımını kolaylaştırmak için basitleştirilmiş varsayımlar yapan bir modeli ifade eder; örneğin bir model, dünyadaki her 5'9 erkek bedeninin medium üst giydiğini “öğrenebilir” – bu açıkça önyargıdır.
Varyans (variance), model tahminindeki değişkenliği açıklar; modeli eğitmek için kullandığımız verileri değiştirdiğimizde modelin tahmininin ne kadar değiştiği.
Daha doğru bir çözüme ulaşmak için modelimizdeki önyargı ve varyansı azaltmaya çalışırız. Bu, basit bir görev değildir. Önyargı ve varyans birbiriyle çekişme halindedir – birini azaltmak, önyargı-varyans dengesi olarak bilinen kavram nedeniyle diğerini artıracaktır.
Bu yazıda şunları öğreneceksiniz:
Bir modelin yüksek önyargı mı yoksa yüksek varyans mı gösterdiğini nasıl tespit edeceğiniz
Bu iki semptomdan biriyle sorun yaşayan bir modeli nasıl teşhis edeceğiniz
Nasıl iyi uyum sağlayan (good-fit) bir model kuracağınız
Hata belirtilerini tespit etmeye geçmeden önce, önyargı-varyans dengesini biraz daha derinlemesine ele alalım.
Önyargı-varyans dengesine bir bakış
Tüm gözetimli öğrenme algoritmaları aynı hedefe ulaşmaya çalışır: bazı girdi verileri (X) verildiğinde hedef değişken (y) için eşleme fonksiyonunu (f_hat) tahmin etmek. Bir makine öğrenmesi modelinin yaklaştırmaya çalıştığı fonksiyona hedef fonksiyon deriz.
Hedef değişkeni yaklaştırmak için kullanılan girdi verilerini değiştirmek, muhtemelen farklı bir hedef fonksiyonla sonuçlanacaktır; bu da modelin tahmin ettiği çıktıları etkileyebilir. Eğitim verileri değiştikçe hedef fonksiyonumuzun ne kadar değiştiğine varyans denir. Modelimizin yüksek varyansa sahip olmasını istemeyiz; çünkü algoritmamız eğitim sırasında kusursuz performans gösterse bile, görülmemiş örneklere genelleme yapamaz.
Yukarıdaki görselde, yaklaştırılan hedef fonksiyon yeşil çizgi, en iyi uyum hattı ise siyah çizgidir. Modelin yeşil çizgiyle eğitim verilerini ne kadar iyi öğrendiğine dikkat edin. Tüm kırmızı ve mavi gözlemlerin ayrılmasını sağlamaya çalışır. Bu modeli yeni gözlemlerle eğitsek, tamamen yeni bir hedef fonksiyon öğrenir ve aynı davranışı sergilemeye çalışırdı.
Hedef fonksiyonu yaklaştırmak için doğrusal regresyon gibi doğrusal bir yöntem kullandığımız bir senaryoyu düşünün. Doğrusal regresyonla ilgili ilk dikkat edilmesi gereken nokta, girdi verileriyle tahmin etmeye çalıştığımız hedef arasında doğrusal bir ilişki varsaymasıdır. Gerçek dünyadaki olaylar çok daha karmaşıktır. Bir miktar esneklikten ödün verme pahasına bu basit varsayım, hedef fonksiyonun çok daha hızlı öğrenilmesini ve anlaşılmasını sağlar. Bu yaklaşımı Önyargı (Bias) olarak adlandırırız.
Yukarıdaki görselde kırmızı çizgi öğrenilen hedef fonksiyonu temsil eder. Gözlemlerin çoğu, modelin tahmin ettiği değerlerden oldukça uzakta kalmaktadır.
Bir modeli daha esnek hale getirerek önyargıyı azaltabiliriz, ancak bu varyansı artırır. Tersine, bir modeli basitleştirerek varyansı azaltabiliriz, fakat bu da önyargı ekler. Bu ilişkiden kaçış yoktur. En iyi alternatif, önyargı ile varyans arasındaki dengede makul bir nokta yakalayacak şekilde modeli seçmek ve yapılandırmaktır.
Hedef fonksiyonu etkileyen bilinmeyen faktörler nedeniyle, modelde her zaman bir miktar hata bulunacaktır; buna azaltılamaz hata denir. Bunu, yukarıdaki görselde Toplam Hata eğrisinin en düşük noktasının altında kalan hata miktarına bakarak gözlemleyebiliriz. İdeal modeli kurmak için, toplam hatayı en aza indirecek şekilde önyargı ile varyans arasında bir denge bulmalıyız. Bu, En Uygun Model Karmaşıklığı olarak adlandırılan kesikli çizgiyle gösterilmiştir.
Önyargı ve varyansı, öğrenme eğrilerini kullanarak açalım.
Öğrenme eğrisinin anatomisi
Öğrenme eğrileri, eğitim kümesi boyutu arttıkça bir modelin performansını gösteren grafiklerdir. Bir diğer kullanım şekli de modelin belirli bir zaman aralığındaki performansını göstermektir. Genellikle veriden artımlı olarak öğrenen algoritmaları teşhis etmek için kullanılırlar. Eğitim ve doğrulama veri kümelerinde bir model değerlendirilir ve ölçülen performanslar çizilir.
Örneğin, bazı girdiler ile çıktılar arasındaki ilişkiyi bir makine öğrenmesi algoritmasıyla modellediğimizi varsayalım. Modele bir örnek üzerinde eğitim verip, yüz örnek üzerinde doğrulamayla başlıyoruz. Ne olacağını düşünüyorsunuz? “Model eğitim verisini kusursuz öğrenecek” dediyseniz haklısınız – hiç hata olmayacaktır.
Bir girdinin bir çıktıyla olan ilişkisini modellemek zor değildir; yapmanız gereken tek şey o ilişkiyi “hatırlamaktır”. Zor olan kısım, yeni ve görülmemiş örneklerle karşılaşıldığında doğru tahminler yapmaktır. Modelimiz eğitim verisini çok iyi öğrendiği için, daha önce görmediği verilere genelleme yapmakta zorlanacaktır. Bunun sonucunda doğrulama verisinde zayıf performans gösterecektir. Bu da modelimizin eğitim verisi ile doğrulama verisindeki performansı arasında büyük bir fark olacağı anlamına gelir. Bu farka genelleme hatası diyoruz.
Algoritmamızın doğrulama veri kümesinde daha iyi tahminlerde bulunma şansı olması için daha fazla veri eklememiz gerekir. Eğitim verisine yeni örnekler eklemek, kaçınılmaz olarak modelimizin hedef fonksiyonunu değiştirecektir. Eğitim veri kümesini büyüttükçe modelin performansı izlenip çizilerek eğitim ve doğrulama hata puanlarının nasıl evrildiği ortaya konabilir.
Bu, grafikte iki farklı sonucun gösterileceği anlamına gelir:
Eğitim eğrisi: Eğitim verilerinden hesaplanan eğri; bir modelin ne kadar iyi öğrendiğini gösterir.
Doğrulama eğrisi: Doğrulama verilerinden hesaplanan eğri; modelin görülmemiş örneklere ne kadar iyi genelleme yaptığını gösterir.
Bu eğriler, veri büyüdükçe modelin ne kadar iyi performans gösterdiğini ortaya koyar; bu nedenle adı öğrenme eğrileridir.
Not: Aynı süreç, modelimizin zaman içinde nasıl öğrendiğini görmek için de kullanılabilir. Modelin veri büyüdükçe nasıl performans gösterdiğini izlemek yerine, zaman içinde ne kadar iyi öğrendiğini izleriz. Örneğin, yeni bir dil öğrenmeye karar verebilirsiniz. O dile hâkimiyetiniz 52 hafta boyunca nasıl ilerlediğinizi göstermek üzere sayısal bir puanla değerlendirilebilir.
Artık bir öğrenme eğrisinin anatomisini öğrendiniz; size görsel bir anlayış kazandırmak için bunu gerçek bir veri kümesiyle uygulamaya koyalım.
Kullanım durumu: Gayrimenkul değerlemelerini tahmin etme
Görevimiz, aşağıdaki özellikler verildiğinde gayrimenkul değerlemesini tahmin etmektir:
X1= işlem tarihi (örneğin, 2013.250=2013 Mart, 2013.500=2013 Haziran vb.)
X2= evin yaşı (birim: yıl)
X3= en yakın MRT istasyonuna uzaklık (birim: metre)
X4= yürüme mesafesindeki yaşam çevresindeki market (convenience store) sayısı (tamsayı)
X5= coğrafi koordinat, enlem (birim: derece)
X6= coğrafi koordinat, boylam (birim: derece)
Hedef değişken şu şekilde tanımlanır:
Y= birim alan başına konut fiyatı (10000 Yeni Tayvan Doları/Ping; Ping yerel bir birimdir, 1 Ping = 3,3 metrekare)
Tahmin etmeye çalıştığımız hedef süreklidir; dolayısıyla sorun regresyon teknikleri gerektirecektir.
Veriye göz atarak başlayalım:
import pandas as pd
data = pd.read_excel("/content/gdrive/MyDrive/real_estate_valuation_data.xlsx")print(data.info())
data.head()>>>><class'pandas.core.frame.DataFrame'>
RangeIndex:414 entries,0 to 413
Data columns (total 8 columns):# Column Non-Null Count Dtype ----------------------------0 No 414 non-null int64
1 X1 transaction date 414 non-null float64
2 X2 house age 414 non-null float64
3 X3 distance to the nearest MRT station 414 non-null float64
4 X4 number of convenience stores 414 non-null int64
5 X5 latitude 414 non-null float64
6 X6 longitude 414 non-null float64
7 Y house price of unit area 414 non-null float64
dtypes: float64(6), int64(2)
memory usage:26.0 KB
None
No X1 transaction date X2 house age X3 distance to the nearest MRT station X4 number of convenience stores X5 latitude X6 longitude Y house price of unit area
012012.91666732.084.878821024.98298121.5402437.9122012.91666719.5306.59470924.98034121.5395142.2232013.58333313.3561.98450524.98746121.5439147.3342013.50000013.3561.98450524.98746121.5439154.8452012.8333335.0390.56840524.97937121.5424543.1Altyapı:
Belgelerde (documentation) bahsi geçmeyen No adlı fazladan bir özellik var. Bunun bir indeks olduğunu ima ediyor olabilir, ancak basitlik adına bunu kaldıracağız. Ayrıca özellik adları belgelerde verilenlerle örtüşmüyor; bunu da temizleyeceğiz.
# sütunları yeniden adlandır
renamed_columns =[col.split()[0]for col in data.columns]
renamed_columns_map ={data.columns[i]:renamed_columns[i]for i inrange(len(data.columns))}
data.rename(renamed_columns_map, axis=1, inplace=True)# No sütununu kaldır
data.drop("No", axis=1, inplace=True)print(data.head())# özellikler ve hedef verisini ayır
features, target = data.columns[:-1], data.columns[-1]
X = data[features]
y = data[target]Altyapı:
Özellikleri ve hedefi ayırmadan önceki son veri kümesi şöyle görünüyor:
X1 X2 X3 X4 X5 X6 Y
02012.91666732.084.878821024.98298121.5402437.912012.91666719.5306.59470924.98034121.5395142.222013.58333313.3561.98450524.98746121.5439147.332013.50000013.3561.98450524.98746121.5439154.842012.8333335.0390.56840524.97937121.5424543.1Altyapı:
Önyargı, varyans ve iyi uyum çözümlerini göstermek için üç model kuracağız: bir karar ağacı regresörü, regresyon için bir destek vektör makinesi ve bir rastgele orman regresörü. Modeli kurduktan sonra her biri için öğrenme eğrilerini çizecek ve bazı teşhis tekniklerini paylaşacağız.
Öğrenme eğrilerini teşhis etme
Öğrenme eğrileri, şekilleri değerlendirilerek yorumlanır. Şekil ve dinamikler yorumlandıktan sonra, bir makine öğrenmesi modelinin davranışındaki sorunları teşhis etmek için kullanılabilirler.
Scikit-learn'deki learning_curve() işlevi, bir öğrenme eğrisi çizmek için gereken eğitim ve doğrulama puanlarını izlemeyi kolaylaştırır.
estimator: hedef fonksiyonu yaklaştırmak için kullanılan model
X: girdi verisi
y: hedef
cv: çapraz doğrulama bölme stratejisi
scoring: modelin performansını değerlendirmede kullanılan metrik
train_sizes: öğrenme eğrisini oluşturmak için kullanılacak eğitim örneklerinin mutlak sayıları; kullandığımız değerler tamamen rastgeledir.
Model 1: Karar ağacı regresörü
Yüksek varyansa sahip bir model aşırı uyumlu (overfit) olarak adlandırılır. Eğitim verisini ve rastgele gürültüyü son derece iyi öğrenir; bu da eğitim verisinde başarılı ancak görülmemiş örneklerde genelleme yapamayan bir modele yol açar. Bu davranış, kullanılan algoritma çözülen problem için fazla esnek olduğunda veya model çok uzun süre eğitildiğinde ortaya çıkar.
Örneğin, karar ağacı regresörü doğrusal olmayan bir makine öğrenmesi algoritmasıdır. Doğrusal olmayan algoritmalar tipik olarak düşük önyargı ve yüksek varyansa sahiptir. Bu, veri kümesine yapılan değişikliklerin hedef fonksiyonda büyük oynamalara neden olacağını ima eder.
Karar ağacı regresörümüzle yüksek varyansı gösterelim:
Model, eğitim sırasında gördüğü örnekleri tahmin etmesi istendiğinde çok az hata yapar, ancak daha önce maruz kalmadığı yeni örneklerde kötü performans gösterir. Bu davranışı, eğitim eğrisi ile doğrulama eğrisi arasındaki genelleme hatasının ne kadar büyük olduğuna bakarak gözlemleyebilirsiniz. Bu davranışı iyileştirmek için bir çözüm, eğitim veri setimize daha fazla örnek eklemek olabilir; bu, önyargı ekler. Başka bir çözüm, modele düzenlileştirme (ör. ağacın tam derinliğine kadar büyümesini engelleme) eklemek olabilir.
Model 2: Destek Vektör Makinesi
Yüksek önyargıya sahip bir model yetersiz uyumlu (underfit) olarak adlandırılır. Eğitim verisi hakkında basitleştirici varsayımlar yapar; bu da alttaki kalıpları öğrenmesini zorlaştırır. Sonuç olarak model, eğitim ve doğrulama veri kümelerinde yüksek hataya sahip olur. Bu davranışı, kullanılan model çözülen problem için fazla basit olduğunda veya model yeterince uzun süre eğitilmediğinde gözlemleriz.
Örneğin, destek vektör makinesi doğrusal bir makine öğrenmesi algoritmasıdır. Doğrusal algoritmalar genellikle yüksek önyargı ve düşük varyansa sahiptir. Bu da hedef fonksiyonun biçimi hakkında daha fazla varsayım yapıldığı anlamına gelir. Modelimize daha fazla önyargı eklemek için modeldeki C parametresini ayarlayarak düzenlileştirme ekledik.
Destek vektör makinemizle yüksek önyargıyı gösterelim:
Eğitim veri kümesi boyutu arttıkça eğitim ve doğrulama eğrileri arasındaki genelleme farkı son derece küçülür. Bu, modele daha fazla örnek eklemenin performansını artırmayacağını gösterir. Bu soruna bir çözüm, daha fazla özellik oluşturmak veya yapılan varsayımların sayısını azaltmak için modeli daha esnek hale getirmek olabilir.
Model 3: Rastgele Orman Regresörü
İyi uyum sağlayan bir model, yetersiz ve aşırı uyumlu modellerin arasında kalan gri alanda bulunur. Model, aşırı uyumlu durumda olduğu kadar eğitim verilerinde iyi olmayabilir; ancak görülmemiş örneklerle karşılaştığında çok daha az hata yapar. Bu davranış, eğitim hatası yükselirken yalnızca denge noktasına kadar yükselmesi, doğrulama hatasının ise denge noktasına kadar düşmesiyle gözlemlenebilir.
Bunu göstermek için karar ağaçlarından oluşan bir topluluk (ensemble) olan rastgele ormanı kullanacağız. Bu, modelin de doğrusal olmadığını gösterir; ancak çeşitli modeller yaratıp tahminlerini birleştirerek modele önyargı eklenir.
Ayrıca her ağacın maksimum derinliğini kontrol eden max_depth’i üç olarak ayarlayarak daha fazla düzenlileştirme ekledik.
Artık doğrulama verisindeki hatayı azalttığımızı görebilirsiniz. Bu, eğitim verisindeki performansın zayıflaması pahasına geldi; ancak genel olarak daha iyi bir model.
Genelleme hatası çok daha küçük ve yapılan hata sayısı az. Ayrıca her iki eğri de 250 eğitim kümesi boyutunun ötesinde stabildir; bu da daha fazla örnek eklemenin bu modeli çok daha fazla iyileştirmeyebileceğini ima eder.
Özetle, bir modelin davranışı öğrenme eğrileri kullanılarak gözlemlenebilir. Makine öğrenmesi modelleri kurarken ideal senaryo, hatayı mümkün olduğunca düşük tutmaktır. Yüksek hataya yol açan iki faktör önyargı ve varyanstır; her ikisi arasında denge kurabilmek, daha iyi performans gösteren bir modelle sonuçlanacaktır.
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.
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!
Makine öğrenmesi modellerindeki hataların iki ana nedeni vardır:
Daha doğru bir çözüme ulaşmak için modelimizdeki önyargı ve varyansı azaltmaya çalışırız. Bu, basit bir görev değildir. Önyargı ve varyans birbiriyle çekişme halindedir – birini azaltmak, önyargı-varyans dengesi olarak bilinen kavram nedeniyle diğerini artıracaktır.
Bu yazıda şunları öğreneceksiniz:
Hata belirtilerini tespit etmeye geçmeden önce, önyargı-varyans dengesini biraz daha derinlemesine ele alalım.
Önyargı-varyans dengesine bir bakış
Tüm gözetimli öğrenme algoritmaları aynı hedefe ulaşmaya çalışır: bazı girdi verileri (X) verildiğinde hedef değişken (y) için eşleme fonksiyonunu (f_hat) tahmin etmek. Bir makine öğrenmesi modelinin yaklaştırmaya çalıştığı fonksiyona hedef fonksiyon deriz.
Hedef değişkeni yaklaştırmak için kullanılan girdi verilerini değiştirmek, muhtemelen farklı bir hedef fonksiyonla sonuçlanacaktır; bu da modelin tahmin ettiği çıktıları etkileyebilir. Eğitim verileri değiştikçe hedef fonksiyonumuzun ne kadar değiştiğine varyans denir. Modelimizin yüksek varyansa sahip olmasını istemeyiz; çünkü algoritmamız eğitim sırasında kusursuz performans gösterse bile, görülmemiş örneklere genelleme yapamaz.
Yukarıdaki görselde, yaklaştırılan hedef fonksiyon yeşil çizgi, en iyi uyum hattı ise siyah çizgidir. Modelin yeşil çizgiyle eğitim verilerini ne kadar iyi öğrendiğine dikkat edin. Tüm kırmızı ve mavi gözlemlerin ayrılmasını sağlamaya çalışır. Bu modeli yeni gözlemlerle eğitsek, tamamen yeni bir hedef fonksiyon öğrenir ve aynı davranışı sergilemeye çalışırdı.
Hedef fonksiyonu yaklaştırmak için doğrusal regresyon gibi doğrusal bir yöntem kullandığımız bir senaryoyu düşünün. Doğrusal regresyonla ilgili ilk dikkat edilmesi gereken nokta, girdi verileriyle tahmin etmeye çalıştığımız hedef arasında doğrusal bir ilişki varsaymasıdır. Gerçek dünyadaki olaylar çok daha karmaşıktır. Bir miktar esneklikten ödün verme pahasına bu basit varsayım, hedef fonksiyonun çok daha hızlı öğrenilmesini ve anlaşılmasını sağlar. Bu yaklaşımı Önyargı (Bias) olarak adlandırırız.
Yukarıdaki görselde kırmızı çizgi öğrenilen hedef fonksiyonu temsil eder. Gözlemlerin çoğu, modelin tahmin ettiği değerlerden oldukça uzakta kalmaktadır.
Bir modeli daha esnek hale getirerek önyargıyı azaltabiliriz, ancak bu varyansı artırır. Tersine, bir modeli basitleştirerek varyansı azaltabiliriz, fakat bu da önyargı ekler. Bu ilişkiden kaçış yoktur. En iyi alternatif, önyargı ile varyans arasındaki dengede makul bir nokta yakalayacak şekilde modeli seçmek ve yapılandırmaktır.
Hedef fonksiyonu etkileyen bilinmeyen faktörler nedeniyle, modelde her zaman bir miktar hata bulunacaktır; buna azaltılamaz hata denir. Bunu, yukarıdaki görselde Toplam Hata eğrisinin en düşük noktasının altında kalan hata miktarına bakarak gözlemleyebiliriz. İdeal modeli kurmak için, toplam hatayı en aza indirecek şekilde önyargı ile varyans arasında bir denge bulmalıyız. Bu, En Uygun Model Karmaşıklığı olarak adlandırılan kesikli çizgiyle gösterilmiştir.
Önyargı ve varyansı, öğrenme eğrilerini kullanarak açalım.
Öğrenme eğrisinin anatomisi
Öğrenme eğrileri, eğitim kümesi boyutu arttıkça bir modelin performansını gösteren grafiklerdir. Bir diğer kullanım şekli de modelin belirli bir zaman aralığındaki performansını göstermektir. Genellikle veriden artımlı olarak öğrenen algoritmaları teşhis etmek için kullanılırlar. Eğitim ve doğrulama veri kümelerinde bir model değerlendirilir ve ölçülen performanslar çizilir.
Örneğin, bazı girdiler ile çıktılar arasındaki ilişkiyi bir makine öğrenmesi algoritmasıyla modellediğimizi varsayalım. Modele bir örnek üzerinde eğitim verip, yüz örnek üzerinde doğrulamayla başlıyoruz. Ne olacağını düşünüyorsunuz? “Model eğitim verisini kusursuz öğrenecek” dediyseniz haklısınız – hiç hata olmayacaktır.
Bir girdinin bir çıktıyla olan ilişkisini modellemek zor değildir; yapmanız gereken tek şey o ilişkiyi “hatırlamaktır”. Zor olan kısım, yeni ve görülmemiş örneklerle karşılaşıldığında doğru tahminler yapmaktır. Modelimiz eğitim verisini çok iyi öğrendiği için, daha önce görmediği verilere genelleme yapmakta zorlanacaktır. Bunun sonucunda doğrulama verisinde zayıf performans gösterecektir. Bu da modelimizin eğitim verisi ile doğrulama verisindeki performansı arasında büyük bir fark olacağı anlamına gelir. Bu farka genelleme hatası diyoruz.
Algoritmamızın doğrulama veri kümesinde daha iyi tahminlerde bulunma şansı olması için daha fazla veri eklememiz gerekir. Eğitim verisine yeni örnekler eklemek, kaçınılmaz olarak modelimizin hedef fonksiyonunu değiştirecektir. Eğitim veri kümesini büyüttükçe modelin performansı izlenip çizilerek eğitim ve doğrulama hata puanlarının nasıl evrildiği ortaya konabilir.
Bu, grafikte iki farklı sonucun gösterileceği anlamına gelir:
Bu eğriler, veri büyüdükçe modelin ne kadar iyi performans gösterdiğini ortaya koyar; bu nedenle adı öğrenme eğrileridir.
Not: Aynı süreç, modelimizin zaman içinde nasıl öğrendiğini görmek için de kullanılabilir. Modelin veri büyüdükçe nasıl performans gösterdiğini izlemek yerine, zaman içinde ne kadar iyi öğrendiğini izleriz. Örneğin, yeni bir dil öğrenmeye karar verebilirsiniz. O dile hâkimiyetiniz 52 hafta boyunca nasıl ilerlediğinizi göstermek üzere sayısal bir puanla değerlendirilebilir.
Artık bir öğrenme eğrisinin anatomisini öğrendiniz; size görsel bir anlayış kazandırmak için bunu gerçek bir veri kümesiyle uygulamaya koyalım.
Kullanım durumu: Gayrimenkul değerlemelerini tahmin etme
Şu veri setini kullanacağız: gayrimenkul değerlemesine ilişkin piyasa tarihsel veri seti. Bu veriler, Yeni Taipei, Tayvan, Sindian Bölgesi'nden toplanmış piyasa tarihsel verilerinden oluşur.
Görevimiz, aşağıdaki özellikler verildiğinde gayrimenkul değerlemesini tahmin etmektir:
Hedef değişken şu şekilde tanımlanır:
Tahmin etmeye çalıştığımız hedef süreklidir; dolayısıyla sorun regresyon teknikleri gerektirecektir.
Veriye göz atarak başlayalım:
Belgelerde (documentation) bahsi geçmeyen No adlı fazladan bir özellik var. Bunun bir indeks olduğunu ima ediyor olabilir, ancak basitlik adına bunu kaldıracağız. Ayrıca özellik adları belgelerde verilenlerle örtüşmüyor; bunu da temizleyeceğiz.
Özellikleri ve hedefi ayırmadan önceki son veri kümesi şöyle görünüyor:
Önyargı, varyans ve iyi uyum çözümlerini göstermek için üç model kuracağız: bir karar ağacı regresörü, regresyon için bir destek vektör makinesi ve bir rastgele orman regresörü. Modeli kurduktan sonra her biri için öğrenme eğrilerini çizecek ve bazı teşhis tekniklerini paylaşacağız.
Öğrenme eğrilerini teşhis etme
Öğrenme eğrileri, şekilleri değerlendirilerek yorumlanır. Şekil ve dinamikler yorumlandıktan sonra, bir makine öğrenmesi modelinin davranışındaki sorunları teşhis etmek için kullanılabilirler.
Scikit-learn'deki learning_curve() işlevi, bir öğrenme eğrisi çizmek için gereken eğitim ve doğrulama puanlarını izlemeyi kolaylaştırır.
learning_curve() işlevine geçirdiğimiz parametreler şunlardır:
Model 1: Karar ağacı regresörü
Yüksek varyansa sahip bir model aşırı uyumlu (overfit) olarak adlandırılır. Eğitim verisini ve rastgele gürültüyü son derece iyi öğrenir; bu da eğitim verisinde başarılı ancak görülmemiş örneklerde genelleme yapamayan bir modele yol açar. Bu davranış, kullanılan algoritma çözülen problem için fazla esnek olduğunda veya model çok uzun süre eğitildiğinde ortaya çıkar.
Örneğin, karar ağacı regresörü doğrusal olmayan bir makine öğrenmesi algoritmasıdır. Doğrusal olmayan algoritmalar tipik olarak düşük önyargı ve yüksek varyansa sahiptir. Bu, veri kümesine yapılan değişikliklerin hedef fonksiyonda büyük oynamalara neden olacağını ima eder.
Karar ağacı regresörümüzle yüksek varyansı gösterelim:
Model, eğitim sırasında gördüğü örnekleri tahmin etmesi istendiğinde çok az hata yapar, ancak daha önce maruz kalmadığı yeni örneklerde kötü performans gösterir. Bu davranışı, eğitim eğrisi ile doğrulama eğrisi arasındaki genelleme hatasının ne kadar büyük olduğuna bakarak gözlemleyebilirsiniz. Bu davranışı iyileştirmek için bir çözüm, eğitim veri setimize daha fazla örnek eklemek olabilir; bu, önyargı ekler. Başka bir çözüm, modele düzenlileştirme (ör. ağacın tam derinliğine kadar büyümesini engelleme) eklemek olabilir.
Model 2: Destek Vektör Makinesi
Yüksek önyargıya sahip bir model yetersiz uyumlu (underfit) olarak adlandırılır. Eğitim verisi hakkında basitleştirici varsayımlar yapar; bu da alttaki kalıpları öğrenmesini zorlaştırır. Sonuç olarak model, eğitim ve doğrulama veri kümelerinde yüksek hataya sahip olur. Bu davranışı, kullanılan model çözülen problem için fazla basit olduğunda veya model yeterince uzun süre eğitilmediğinde gözlemleriz.
Örneğin, destek vektör makinesi doğrusal bir makine öğrenmesi algoritmasıdır. Doğrusal algoritmalar genellikle yüksek önyargı ve düşük varyansa sahiptir. Bu da hedef fonksiyonun biçimi hakkında daha fazla varsayım yapıldığı anlamına gelir. Modelimize daha fazla önyargı eklemek için modeldeki C parametresini ayarlayarak düzenlileştirme ekledik.
Destek vektör makinemizle yüksek önyargıyı gösterelim:
Eğitim veri kümesi boyutu arttıkça eğitim ve doğrulama eğrileri arasındaki genelleme farkı son derece küçülür. Bu, modele daha fazla örnek eklemenin performansını artırmayacağını gösterir. Bu soruna bir çözüm, daha fazla özellik oluşturmak veya yapılan varsayımların sayısını azaltmak için modeli daha esnek hale getirmek olabilir.
Model 3: Rastgele Orman Regresörü
İyi uyum sağlayan bir model, yetersiz ve aşırı uyumlu modellerin arasında kalan gri alanda bulunur. Model, aşırı uyumlu durumda olduğu kadar eğitim verilerinde iyi olmayabilir; ancak görülmemiş örneklerle karşılaştığında çok daha az hata yapar. Bu davranış, eğitim hatası yükselirken yalnızca denge noktasına kadar yükselmesi, doğrulama hatasının ise denge noktasına kadar düşmesiyle gözlemlenebilir.
Bunu göstermek için karar ağaçlarından oluşan bir topluluk (ensemble) olan rastgele ormanı kullanacağız. Bu, modelin de doğrusal olmadığını gösterir; ancak çeşitli modeller yaratıp tahminlerini birleştirerek modele önyargı eklenir.
Ayrıca her ağacın maksimum derinliğini kontrol eden max_depth’i üç olarak ayarlayarak daha fazla düzenlileştirme ekledik.
Kodda bunun nasıl göründüğüne bakalım:
Artık doğrulama verisindeki hatayı azalttığımızı görebilirsiniz. Bu, eğitim verisindeki performansın zayıflaması pahasına geldi; ancak genel olarak daha iyi bir model.
Genelleme hatası çok daha küçük ve yapılan hata sayısı az. Ayrıca her iki eğri de 250 eğitim kümesi boyutunun ötesinde stabildir; bu da daha fazla örnek eklemenin bu modeli çok daha fazla iyileştirmeyebileceğini ima eder.
Özetle, bir modelin davranışı öğrenme eğrileri kullanılarak gözlemlenebilir. Makine öğrenmesi modelleri kurarken ideal senaryo, hatayı mümkün olduğunca düşük tutmaktır. Yüksek hataya yol açan iki faktör önyargı ve varyanstır; her ikisi arasında denge kurabilmek, daha iyi performans gösteren bir modelle sonuçlanacaktır.