Aracılığıyla paylaş


SMOTE

Bu makalede, makine öğrenmesi için kullanılan bir veri kümesindeki yetersiz temsili durumların sayısını artırmak için Azure Machine Learning tasarımcısında SMOTE bileşeninin nasıl kullanılacağı açıklanmaktadır. SMOTE, nadir vaka sayısını artırmanın, mevcut vakaları çoğaltmaktan daha iyi bir yoludur.

SMOTE bileşenini dengesiz bir veri kümesine bağlarsınız. Bir veri kümesinin dengesiz olmasının birçok nedeni vardır. Örneğin, hedeflediğiniz kategori popülasyonda nadir olabilir veya verilerin toplanması zor olabilir. Genellikle analiz etmek istediğiniz sınıf az temsil edildiğinde SMOTE kullanırsınız.

Bileşen, özgün örnekleri içeren bir veri kümesi döndürür. Ayrıca, belirttiğiniz yüzdeye bağlı olarak bir dizi sentetik azınlık örneği döndürür.

SMOTE hakkında daha fazla bilgi

Yapay Azınlık Fazla Örnekleme Tekniği (SMOTE), veri kümenizdeki vaka sayısını dengeli bir şekilde artırmaya yönelik istatistiksel bir tekniktir. Bileşen, giriş olarak sağladığınız mevcut azınlık olaylarından yeni örnekler oluşturarak çalışır. SMOTE'nin bu uygulaması, çoğunluk durumlarının sayısını değiştirmez.

Yeni örnekler yalnızca mevcut azınlık davalarının kopyaları değildir. Bunun yerine algoritma, her hedef sınıf ve en yakın komşuları için özellik alanının örneklerini alır. Ardından algoritma, hedef servis talebinin özelliklerini komşularının özellikleriyle birleştiren yeni örnekler oluşturur. Bu yaklaşım, her sınıf için kullanılabilen özellikleri artırır ve örnekleri daha genel hale getirir.

SMOTE veri kümesinin tamamını giriş olarak alır, ancak yalnızca azınlık vakalarının yüzdesini artırır. Örneğin, servis taleplerinin yalnızca yüzde 1'inin A (azınlık sınıfı) hedef değerine ve vakaların yüzde 99'unun B değerine sahip olduğu dengesiz bir veri kümeniz olduğunu varsayalım. Azınlık vakalarının yüzdesini önceki yüzdenin iki katına yükseltmek için bileşenin özelliklerine SMOTE yüzdesi için 200 girebilirsiniz.

Örnekler

Nasıl çalıştığını görmek için SMOTE'yi küçük bir veri kümesiyle kullanmayı denemenizi öneririz. Aşağıdaki örnekte Azure Machine Learning tasarımcısında bulunan Kan Bağışı veri kümesi kullanılmaktadır.

Veri kümesini bir işlem hattına ekler ve veri kümesinin çıkışında Görselleştir'i seçerseniz, veri kümesindeki 748 satır veya servis talebi arasından 570 vakanın (yüzde 76) Sınıf 0 olduğunu ve 178 vakanın (yüzde 24) Sınıf 1 olduğunu görebilirsiniz. Bu sonuç çok dengesiz olmasa da, Sınıf 1 kan bağışında bulunan kişileri temsil eder, bu nedenle bu satırlar modellemek istediğiniz özellik alanını içerir.

Servis talebi sayısını artırmak için, 100'ün katlarını kullanarak SMOTE yüzdesi değerini aşağıdaki gibi ayarlayabilirsiniz:

Sınıf 0 Sınıf 1 total
Özgün veri kümesi

(eşdeğer SMOTE yüzdesi = 0)
570

76%
178

%24
748
SMOTE yüzdesi = 100 570

62%
356

%38
926
SMOTE yüzdesi = 200 570

%52
534

48%
1.104
SMOTE yüzdesi = 300 570

%44
712

56%
1,282

Uyarı

SMOTE kullanarak vaka sayısını artırmanın daha doğru modeller üretmesi garanti değildir. Örnek eklemenin modelinizi nasıl etkilediğini görmek için farklı yüzdelerle, farklı özellik kümeleriyle ve farklı sayıda en yakın komşuyla kanal oluşturmayı deneyin.

SMOTE'yi yapılandırma

  1. SMOTE bileşenini işlem hattınıza ekleyin. Bileşeni Veri Dönüştürme bileşenleri altında, Düzenleme kategorisinde bulabilirsiniz.

  2. Artırmak istediğiniz veri kümesini bağlayın. Yeni servis taleplerini oluşturmak için yalnızca belirli sütunları kullanarak veya bazılarını dışlayarak özellik alanını belirtmek istiyorsanız, Veri Kümesindeki Sütunları Seç bileşenini kullanın. Daha sonra SMOTE kullanmadan önce kullanmak istediğiniz sütunları yalıtabilirsiniz.

    Aksi takdirde, SMOTE aracılığıyla yeni servis taleplerinin oluşturulması, giriş olarak sağladığınız tüm sütunları temel alır. Özellik sütunlarının en az bir sütunu sayısaldır.

  3. Etiketi veya hedef sınıfı içeren sütunun seçili olduğundan emin olun. SMOTE yalnızca ikili etiketleri kabul eder.

  4. SMOTE bileşeni etiket sütunundaki azınlık sınıfını otomatik olarak tanımlar ve ardından azınlık sınıfı için tüm örnekleri alır. Tüm sütunlarda NaN değerleri olamaz.

  5. SMOTE yüzdesi seçeneğine çıkış veri kümesindeki azınlık vakalarının hedef yüzdesini gösteren bir tamsayı girin. Örneğin:

    • 0 girersiniz. SMOTE bileşeni, giriş olarak sağladığınız veri kümesinin tam olarak aynısını döndürür. Yeni azınlık davaları eklemez. Bu veri kümesinde sınıf oranı değişmedi.

    • 100 girersiniz. SMOTE bileşeni yeni azınlık vakaları oluşturur. Özgün veri kümesinde bulunan azınlık olaylarının sayısını ekler. SMOTE, çoğunluğun vaka sayısını artırmadığından, her sınıfın vakalarının oranı değişti.

    • 200 girin. Bileşen, özgün veri kümesine kıyasla azınlık vakalarının yüzdesini ikiye katlar. Bu , öncekinin iki katı azınlık vakasına neden olmaz . Bunun yerine, veri kümesinin boyutu, çoğunluk durumlarının sayısı aynı kalacak şekilde artırılır. Azınlık vakalarının sayısı istenen yüzde değeriyle eşleşene kadar artar.

    Not

    SMOTE yüzdesi için yalnızca 100'ün katlarını kullanın.

  6. SMOTE algoritmasının yeni durumlar oluştururken kullandığı özellik alanının boyutunu belirlemek için En yakın komşu sayısı seçeneğini kullanın. En yakın komşu, hedef büyük/küçük harfe benzer bir veri satırıdır (servis talebi). İki durum arasındaki mesafe, tüm özelliklerin ağırlıklı vektörleri birleştirilerek ölçülür.

    • En yakın komşu sayısını artırarak daha fazla durumdan özellik elde edersiniz.
    • En yakın komşu sayısını düşük tutarak, özgün örnektekine daha çok benzeyen özellikleri kullanırsınız.
  7. Aynı işlem hattının aynı verilerle çalıştırıldığında aynı sonuçları elde etmek istiyorsanız, Rastgele tohum kutusuna bir değer girin. Aksi takdirde bileşen, işlem hattı dağıtıldığında işlemci saat değerlerine göre rastgele bir tohum oluşturur. Rastgele bir çekirdek oluşturulması, çalıştırmalarda biraz farklı sonuçlara neden olabilir.

  8. İşlem hattını gönderin.

    Bileşenin çıktısı, özgün satırların yanı sıra azınlık durumlarıyla birlikte bir dizi eklenen satırı içeren bir veri kümesidir.

Teknik notlar

  • SMOTE bileşenini kullanan bir model yayımlarken, web hizmeti olarak yayımlanmadan önce tahmine dayalı işlem hattından SMOTE'yi kaldırın. Bunun nedeni, SMOTE'nin puanlama için değil eğitim sırasında bir modeli geliştirmeye yönelik olmasıdır. Yayımlanan tahmine dayalı işlem hattı SMOTE bileşenini içeriyorsa hata alabilirsiniz.

  • SMOTE uygulamadan önce eksik değerleri temizlerseniz veya verileri düzeltmek için başka dönüştürmeler uygularsanız genellikle daha iyi sonuçlar alabilirsiniz.

  • Bazı araştırmacılar, SMOTE'nin metin sınıflandırmasında veya genomiks veri kümelerinde kullanılan veriler gibi yüksek boyutlu veya seyrek veriler üzerinde etkili olup olmadığını araştırdı. Bu makale, bu gibi durumlarda SMOTE uygulamanın etkilerini ve teorik geçerliliğini iyi bir özetlemiştir: Blagus ve Lusa: Yüksek boyutlu sınıf dengesiz verileri için SMOTE.

  • SMOTE veri kümenizde etkili değilse, dikkate almanız gereken diğer yaklaşımlar şunlardır:

    • Azınlık davalarını fazla örnekleme veya çoğunluk davalarını küçük örnekleme yöntemleri.
    • Kümeleme, etiketleme veya uyarlamalı yükseltme kullanarak öğrenciye doğrudan yardımcı olan topluluk teknikleri.

Sonraki adımlar

Bkz. Azure Machine Learning için kullanılabilen bileşenler kümesi.