Elma ağaçları harika meyvelerle ve kötü kötülüklerle dolu bir karışım üretir. Ancak lüks marketlerdeki elmalar% 100 mükemmel meyveler sergiler. Meyve bahçesi ile market arasındaki dönemde birisi çürük elmaları yok etmek veya kurtarılabilir elmalara biraz bal mumu atmak için çok zaman harcıyor. Makine öğrenimi mühendisi olarak kötü örnekleri atıp kurtarılabilir örnekleri temizlemek için çok zaman harcarsınız. Birkaç "bozuk elma" bile büyük bir veri kümesini bozabilir.
Özellik değerlerini ölçeklendirme
Ölçeklendirme, kayan nokta özellik değerlerinin doğal aralığındaki (örneğin, 100-900) standart bir aralığa (örneğin, 0-1 veya -1-+1) dönüştürülmesi anlamına gelir. Bir özellik grubu yalnızca tek bir özellikten oluşuyorsa ölçeklendirmenin pratik faydası çok az olur veya hiç olmaz. Öte yandan bir özellik grubu birden fazla özellikten oluşuyorsa özellik ölçeklendirme, şu avantajları sağlar:
- Gradyan inişin daha hızlı yakınlaşmasına yardımcı olur.
- Modeldeki bir sayının NaN haline geldiği (ör. bir değer, eğitim sırasında kayan nokta hassasiyet sınırını aştığında) ve matematik işlemleri nedeniyle modeldeki diğer her sayının da nihayetinde NaN haline geldiği "NaN tuzağı"nın önlenmesine yardımcı olur.
- Modelin her özellik için uygun ağırlıkları öğrenmesine yardımcı olur. Özellik ölçeklendirmesi olmadığında model, daha geniş bir yelpazeye sahip özelliklere çok fazla ilgi gösterir.
Her kayan nokta özelliğine tam olarak aynı ölçek sağlamanız gerekmez. A Özelliği -1'den +1'e ölçeklendirilirken B Özelliği -3'ten +3'e ölçeklendirilirse kötü bir şey olmaz. Ancak B Özelliği 5000'den 100.000'e ölçeklendirilirse modeliniz kötü tepki verir.
Aşırı aykırı değerleri ele alma
Aşağıdaki grafikte Kaliforniya Konut veri kümesinden roomsPerPerson
adlı bir özellik gösterilmektedir.
roomsPerPerson
değeri, bir alandaki toplam oda sayısının ilgili alanın nüfusuna bölünmesiyle hesaplandı. Senaryoda, Kaliforniya'daki bu çok büyük bölgede kişi başına bir veya iki odaya sahip olduğu gösterilmektedir. Ama x eksenine bakın.
4. Şekil. Vırrrry lonnnnnnng kuyruk.
Bu aşırı aykırılıkların etkisini nasıl en aza indirebiliriz? Her değerin günlüğünü almak olabilir:
5. Şekil. Logaritmik ölçeklendirmenin ardında hâlâ bir kuyruk var.
Logaritmik ölçeklendirme biraz daha iyi performans gösterse de aykırı değerlerde hâlâ önemli bir kuyruk vardır. Başka bir yaklaşım seçelim. roomsPerPerson
için maksimum değeri rastgele bir değerde (örneğin 4, 0) "başlar" veya "klip" yaparsak ne olur?
6. Şekil. 4.0'da kırpma özelliği değerleri
Özellik değerini 4.0 olarak kırpmak, 4.0'dan büyük tüm değerleri yok saydığımız anlamına gelmez. Aksine, 4,0'dan büyük olan tüm değerler artık 4,0 olur. 4.0'daki komik tepenin açıklaması budur. Bu tepe olmasına rağmen, ölçeklendirilmiş özellik kümesi artık orijinal verilerden daha yararlı oluyor.
Kutulama
Aşağıdaki grafikte, Kaliforniya'da farklı enlemlerdeki evlerin göreceli yaygınlığı gösterilmektedir. Kümelemeye dikkat edin: Los Angeles'ın enlemi 34, San Francisco'nun ise yaklaşık 38. enlemi.
7. Şekil. Enlem başına ev sayısı.
Veri kümesinde, latitude
bir kayan nokta değeridir. Ancak, modelimizde latitude
özelliğini kayan nokta özelliği olarak sunmak anlamlı değildir.
Bunun nedeni, enlem ve konut değerleri arasında doğrusal bir ilişkinin olmamasıdır. Örneğin, 35 enlemindeki evler \(\frac{35}{34}\) 34. enlemdeki evlerden daha pahalı (veya
daha ucuz) değildir. Yine de bağımsız enlemler, muhtemelen ev
değerlerini belirlemede çok iyi bir göstergedir.
Enlemi yararlı bir kestirici yapmak için, enlemleri aşağıdaki şekilde önerildiği gibi "binler"e bölelim:
Şekil 8. Değerleri bağlama.
Artık, tek bir kayan nokta özelliği yerine 11 farklı boole özelliğimiz vardır (LatitudeBin1
, LatitudeBin2
, ..., LatitudeBin11
).
11 ayrı özelliğe sahip olmak biraz adsızdır. Bu yüzden, bunları 11 öğeli tek bir vektörte birleştirelim. Bu şekilde 37.4 enlemini aşağıdaki şekilde temsil edebiliriz:
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
Bağlama sayesinde modelimiz artık her enlem için tamamen farklı ağırlıklar öğrenebilir.
İleri geri oynatma
Şimdiye kadar eğitim ve test için kullanılan tüm verilerin güvenilir olduğunu varsayıyorduk. Gerçek hayatta, aşağıdakilerden biri veya birkaçı nedeniyle veri kümelerindeki birçok örnek güvenilir değildir:
- Atlanan değerler. Örneğin, bir kişi bir evin yaşı için bir değer girmeyi unutmuş olabilir.
- Yinelenen örnekler. Örneğin, bir sunucu aynı günlükleri yanlışlıkla iki kez yüklemiş olabilir.
- Hatalı etiketler. Örneğin, bir kişi bir meşe ağacının resmini yanlışlıkla akçaağaç olarak etiketlemiş olabilir.
- Hatalı özellik değerleri. Örneğin, birisi fazladan bir rakam yazmış veya bir termometre güneşin altında kalmıştır.
Algılandıktan sonra, genellikle kötü örnekleri veri kümesinden kaldırarak "düzeltirsiniz". Atlanan değerleri veya yinelenen örnekleri tespit etmek için basit bir program yazabilirsiniz. Kötü özellik değerlerini veya etiketleri tespit etmek çok daha zor olabilir.
Kötü bireysel örnekleri tespit etmenin yanı sıra toplu veride kötü verileri de tespit etmeniz gerekir. Histogramlar, verileri bir arada görselleştirmek için ideal bir mekanizmadır. Ayrıca, aşağıdaki gibi istatistikler almak da yardımcı olabilir:
- Maksimum ve minimum
- Ortalama ve ortanca değer
- Standart sapma
Ayrık özellikler için en yaygın değerlerin listelerini oluşturmayı düşünün.
Örneğin, country:uk
içeren örnek sayısının beklediğiniz sayıyla eşleştiğinden emin olun. language:jp
gerçekten veri kümenizde en yaygın olarak kullanılan dil mi olmalı?
Verilerinize hakim olun
Aşağıdaki kurallara uyun:
- Verilerinizin nasıl görünmesi gerektiğini göz önünde bulundurun.
- Verilerin bu beklentileri karşıladığını (veya neden karşılamadığını açıklayabileceğinizi) doğrulayın.
- Eğitim verilerinin diğer kaynaklarla (örneğin, kontrol panelleriyle) eşleşip eşleşmediğini bir kez daha kontrol edin.
Verilerinize, görev açısından kritik öneme sahip kodlarınızda gösterdiğiniz özeni gösterin. İyi bir makine öğreniminin iyi olması için verilerin iyi olması gerekir.
Ek Bilgi
Makine Öğrenimi Kuralları, ML Aşaması II: Özellik Mühendisliği