SMOTE

W tym artykule opisano sposób używania składnika SMOTE w projektancie usługi Azure Machine Learning w celu zwiększenia liczby niedostatecznie reprezentowanych przypadków w zestawie danych używanym do uczenia maszynowego. SMOTE to lepszy sposób na zwiększenie liczby rzadkich przypadków niż po prostu zduplikowanie istniejących przypadków.

Składnik SMOTE jest połączony z zestawem danych, który jest nierównowagi. Istnieje wiele powodów, dla których zestaw danych może być nierównowagowany. Na przykład docelowa kategoria może być rzadka w populacji lub dane mogą być trudne do zebrania. Zazwyczaj używasz funkcji SMOTE, gdy klasa , którą chcesz analizować, jest niedostatecznie reprezentowana.

Składnik zwraca zestaw danych zawierający oryginalne próbki. Zwraca również liczbę próbek mniejszości syntetycznych, w zależności od określonej wartości procentowej.

Więcej informacji na temat programu SMOTE

Synthetic Minority Oversampling Technique (SMOTE) to technika statystyczna zwiększająca liczbę przypadków w zestawie danych w zrównoważony sposób. Składnik działa przez wygenerowanie nowych wystąpień z istniejących przypadków mniejszości, które są dostarczane jako dane wejściowe. Ta implementacja programu SMOTE nie zmienia liczby przypadków większościowych.

Nowe wystąpienia nie są tylko kopiami istniejących przypadków mniejszości. Zamiast tego algorytm pobiera próbki przestrzeni funkcji dla każdej klasy docelowej i najbliższych sąsiadów. Następnie algorytm generuje nowe przykłady, które łączą cechy przypadku docelowego z funkcjami jego sąsiadów. Takie podejście zwiększa dostępność funkcji dla każdej klasy i sprawia, że przykłady są bardziej ogólne.

Funkcja SMOTE przyjmuje cały zestaw danych jako dane wejściowe, ale zwiększa wartość procentową tylko przypadków mniejszości. Załóżmy na przykład, że masz niezrównoważony zestaw danych, w którym tylko 1 procent przypadków ma wartość docelową A (klasę mniejszości), a 99 procent przypadków ma wartość B. Aby zwiększyć procent przypadków mniejszości do dwukrotnie poprzedniej wartości procentowej, należy wprowadzić 200 dla procentu SMOTE we właściwościach składnika.

Przykłady

Zalecamy, aby spróbować użyć narzędzia SMOTE z małym zestawem danych, aby zobaczyć, jak to działa. W poniższym przykładzie użyto zestawu danych Krwiodawstwa dostępnego w projektancie usługi Azure Machine Learning.

Jeśli dodasz zestaw danych do potoku i wybierzesz pozycję Visualize (Wizualizacja ) w danych wyjściowych zestawu danych, zobaczysz, że z 748 wierszy lub przypadków w zestawie danych 570 przypadków (76 procent) należy do klasy 0, a 178 przypadków (24 procent) to klasa 1. Chociaż wynik ten nie jest strasznie nierównowagi, klasa 1 reprezentuje osoby, które przekazały krew, więc te wiersze zawierają przestrzeń funkcji , którą chcesz modelować.

Aby zwiększyć liczbę przypadków, można ustawić wartość procentu SMOTE, używając wielokrotności 100 w następujący sposób:

Klasa 0 Klasa 1 suma
Oryginalny zestaw danych

(odpowiednik procentu = SMOTE 0)
570

76%
178

24%
748
Procent = SMOTE 100 570

62%
356

38%
926
Procent = SMOTE 200 570

52%
534

48%
1,104
Procent = SMOTE 300 570

44%
712

56%
1,282

Ostrzeżenie

Zwiększenie liczby przypadków przy użyciu narzędzia SMOTE nie gwarantuje utworzenia bardziej dokładnych modeli. Spróbuj utworzyć potok z różnymi wartościami procentowymi, różnymi zestawami funkcji i różnymi liczbami najbliższych sąsiadów, aby zobaczyć, jak dodawanie przypadków wpływa na model.

Jak skonfigurować protokół SMOTE

  1. Dodaj składnik SMOTE do potoku. Składnik można znaleźć w obszarze Składniki przekształcania danych w kategorii Manipulowanie .

  2. Połącz zestaw danych, który chcesz zwiększyć. Jeśli chcesz określić przestrzeń funkcji do tworzenia nowych przypadków, używając tylko określonych kolumn lub z wyłączeniem niektórych, użyj składnika Select Columns in Dataset (Wybieranie kolumn w zestawie danych ). Następnie można wyizolować kolumny, których chcesz użyć przed użyciem funkcji SMOTE.

    W przeciwnym razie tworzenie nowych przypadków za pomocą funkcji SMOTE jest oparte na wszystkich kolumnach, które podajesz jako dane wejściowe. Co najmniej jedna kolumna funkcji jest numeryczna.

  3. Upewnij się, że wybrano kolumnę zawierającą etykietę lub klasę docelową. Protokół SMOTE akceptuje tylko etykiety binarne.

  4. Składnik SMOTE automatycznie identyfikuje klasę mniejszości w kolumnie etykiety, a następnie pobiera wszystkie przykłady dla klasy mniejszości. Wszystkie kolumny nie mogą mieć wartości NaN.

  5. W opcji procentu SMOTE wprowadź liczbę całkowitą, która wskazuje docelowy procent przypadków mniejszościowych w wyjściowym zestawie danych. Przykład:

    • Wprowadź wartość 0. Składnik SMOTE zwraca dokładnie ten sam zestaw danych, który został podany jako dane wejściowe. Nie dodaje żadnych nowych przypadków mniejszości. W tym zestawie danych proporcja klasy nie uległa zmianie.

    • Wprowadź wartość 100. Składnik SMOTE generuje nowe przypadki mniejszości. Dodaje tę samą liczbę przypadków mniejszości, które znajdowały się w oryginalnym zestawie danych. Ponieważ smOTE nie zwiększa liczby przypadków większości, proporcja przypadków każdej klasy uległa zmianie.

    • Wprowadź wartość 200. Składnik podwaja procent przypadków mniejszości w porównaniu z oryginalnym zestawem danych. Nie powoduje to dwukrotnie większej liczby przypadków mniejszości, jak poprzednio. Zamiast tego rozmiar zestawu danych jest zwiększany w taki sposób, że liczba przypadków większości pozostaje taka sama. Liczba przypadków mniejszości jest zwiększana do momentu dopasowania do żądanej wartości procentowej.

    Uwaga

    Użyj tylko wielokrotności 100 dla procentu SMOTE.

  6. Użyj opcji Liczba najbliższych sąsiadów , aby określić rozmiar przestrzeni funkcji używanej przez algorytm SMOTE w tworzeniu nowych przypadków. Najbliższy sąsiad to wiersz danych (przypadek), który jest podobny do przypadku docelowego. Odległość między dwoma przypadkami jest mierzona przez połączenie ważonych wektorów wszystkich cech.

    • Zwiększając liczbę najbliższych sąsiadów, uzyskujesz funkcje z większej liczby przypadków.
    • Zachowując niską liczbę najbliższych sąsiadów, należy użyć funkcji, które są bardziej podobne do tych w oryginalnej próbce.
  7. Wprowadź wartość w polu Inicjator losowy , jeśli chcesz zapewnić te same wyniki dla przebiegów tego samego potoku z tymi samymi danymi. W przeciwnym razie składnik generuje losowe inicjatora na podstawie wartości zegara procesora podczas wdrażania potoku. Generowanie losowego inicjatora może spowodować nieco inne wyniki w przypadku przebiegów.

  8. Prześlij potok.

    Dane wyjściowe składnika to zestaw danych zawierający oryginalne wiersze oraz wiele dodanych wierszy z przypadkami mniejszościowymi.

Uwagi techniczne

  • Podczas publikowania modelu, który używa składnika SMOTE , usuń metodę SMOTE z potoku predykcyjnego, zanim zostanie on opublikowany jako usługa internetowa. Przyczyną jest to, że smOTE jest przeznaczony do ulepszania modelu podczas trenowania, a nie do oceniania. Jeśli opublikowany potok predykcyjny zawiera składnik SMOTE, może wystąpić błąd.

  • Często można uzyskać lepsze wyniki, jeśli wyczyścisz brakujące wartości lub zastosujesz inne przekształcenia, aby naprawić dane przed zastosowaniem funkcji SMOTE.

  • Niektórzy badacze zbadali, czy protokół SMOTE jest skuteczny w przypadku danych o wysokiej wymiarach lub rozrzedzonych, takich jak dane używane w klasyfikacji tekstu lub zestawach danych genomiki. Ten dokument zawiera dobre podsumowanie skutków i teoretycznej ważności stosowania SMOTE w takich przypadkach: Blagus i Lusa: SMOTE dla danych o wysokiej dysproporcji klas.

  • Jeśli rozwiązanie SMOTE nie jest skuteczne w zestawie danych, inne podejścia, które można wziąć pod uwagę, obejmują:

    • Metody nadmiernego próbkowania przypadków mniejszości lub niedostatecznego próbkowania przypadków większości.
    • Zespołowe techniki, które pomagają uczniowi bezpośrednio przy użyciu klastrowania, baggowania lub adaptacyjnego zwiększania.

Następne kroki

Zobacz zestaw składników dostępnych dla usługi Azure Machine Learning.