Beyan: Verileri Temizleme

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.

Neredeyse tüm değerlerin 0 ile 4 arasında kümelendiği, ancak kişi başına 55 odaya kadar uzanan bir kuyruğun bulunduğu RoomPerPerson grafiği.

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:

Değerlerin% 99'unun yaklaşık olarak 0,4 ile 1,8 arasında kümelendiği ancak hâlâ 4,2 ya da 4,2'ye kadar uzayan uzun bir kuyruğun bulunduğu bir log(roomsPerPerson) grafiği.

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?

Tüm değerlerin -0,3 ile 4,0 arasında olduğu RoomPerPerson grafiği. Arazi çan biçimindedir, ancak 4.0'da anormal bir tepe vardır.

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.

Enlem başına evlerin grafiği. Parça son derece düzensizdir, 36. enlem etrafında doldrumlar ve 34 ile 38. enlemler civarındaki büyük artışlar vardır.

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:

Enlem başına evlerin grafiği. Parçalar şu bölümlere ayrılır:

Ş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