SMOTE

Bu makalede, makine öğrenmesi için kullanılan bir veri kümesindeki yetersiz temsil edilen servis talebi 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, çözümlemek 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ılabilir ö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 servis taleplerinin 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 ekleyip veri kümesinin çıkışında Görselleştir'i seçerseniz, veri kümesindeki 748 satır veya servis talebi arasından 570 örneğin (yüzde 76) Sınıf 0 ve 178 örneğinin (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üzde değerini aşağıdaki gibi ayarlayabilirsiniz:

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

(SMOTE yüzdesine = eşdeğerdir) 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üzde seçeneğine çıkış veri kümesindeki azınlık vakalarının hedef yüzdesini gösteren bir tamsayı girin. Örnek:

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

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

    • 200 girersiniz. Bileşen, özgün veri kümesine kıyasla azınlık vakalarının yüzdesini ikiye katlar. Bu, daha önce olduğu gibi iki kat azınlık davalarının olmasıyla sonuçlanmaz . 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 artırılır.

    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 çalıştırmalarında aynı sonuçların aynı verilerle olmasını istiyorsanız Rastgele tohum kutusuna bir değer girin. Aksi takdirde bileşen, işlem hattı dağıtıldığında işlemci saati değerlerine göre rastgele bir tohum oluşturur. Rastgele bir çekirdek oluşturulması, çalıştırmalar üzerinde 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 eklenen bir dizi 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 elde edebilirsiniz.

  • 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'yi uygulamanın etkilerini ve teorik geçerliliğini iyi bir özetlemiştir: Blagus ve Lusa: Yüksek boyutlu sınıf dengesizliği verileri için SMOTE.

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

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

Sonraki adımlar

Azure Machine Learning'in kullanabileceği bileşenler kümesine bakın.