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 duplikowanie istniejących przypadków.
Składnik SMOTE łączy się z zestawem danych, który jest niezrównoważony. Istnieje wiele powodów, dla których zestaw danych może być niezrównoważony. 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 przykłady. Zwraca również liczbę próbek mniejszości syntetycznych, w zależności od określonej wartości procentowej.
Więcej informacji o smOTE
Syntetyczna technika oversampling 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 smOTE nie zmienia liczby przypadków większości.
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ą funkcje przypadku docelowego z funkcjami jego sąsiadów. Takie podejście zwiększa dostępność funkcji dla każdej klasy i sprawia, że próbki są bardziej ogólne.
Funkcja SMOTE przyjmuje cały zestaw danych jako dane wejściowe, ale zwiększa procent 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ściowych do dwukrotnego poprzedniego procentu, należy wprowadzić 200 dla procentu SMOTE we właściwościach składnika.
Przykłady
Zalecamy wypróbowanie użycia narzędzia SMOTE z małym zestawem danych, aby zobaczyć, jak 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ę Wizualizuj na danych wyjściowych zestawu danych, zobaczysz, że z 748 wierszy lub przypadków w zestawie danych, 570 przypadków (76 procent) to klasy 0, a 178 przypadków (24 procent) to klasy 1. Mimo że ten wynik nie jest strasznie niezrównoważony, 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 | total | |
---|---|---|---|
Oryginalny zestaw danych (odpowiednik Procent = SMOTE 0) |
570 76% |
178 24% |
748 |
Procent = SMOTE 100 | 570 62% |
356 38% |
926 |
Procent = SMOTE 200 | 570 52% |
534 48% |
1104 |
Procent = SMOTE 300 | 570 44% |
712 56% |
1,282 |
Ostrzeżenie
Zwiększenie liczby przypadków przy użyciu narzędzia SMOTE nie gwarantuje uzyskania 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
Dodaj składnik SMOTE do potoku. Składnik można znaleźć w obszarze Składniki przekształcania danych w kategorii Manipulowanie.
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 odizolować 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 kolumn funkcji jest liczbowa.
Upewnij się, że wybrano kolumnę zawierającą etykietę lub klasę docelową. Funkcja SMOTE akceptuje tylko etykiety binarne.
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.
W opcji procentowej SMOTE wprowadź liczbę całkowitą, która wskazuje docelowy procent przypadków mniejszościowych w wyjściowym zestawie danych. Na 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 on 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 żądanej wartości procentowej.
Uwaga
Użyj tylko wielokrotności 100 dla wartości procentowej SMOTE.
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.
Wprowadź wartość w polu Inicjator losowy, jeśli chcesz mieć pewność, że te same wyniki nad przebiegami tego samego potoku będą zawierać te same dane. 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.
Prześlij potok.
Dane wyjściowe składnika to zestaw danych zawierający oryginalne wiersze oraz wiele dodanych wierszy z przypadkami mniejszości.
Uwagi techniczne
Podczas publikowania modelu korzystającego ze składnika SMOTE usuń element SMOTE z potoku predykcyjnego, zanim zostanie opublikowany jako usługa internetowa. Przyczyną jest to, że smOTE jest przeznaczony do poprawy 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 naukowcy zbadali, czy smOTE jest skuteczny w przypadku danych o wysokim 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 funkcja SMOTE nie jest skuteczna w zestawie danych, inne podejścia, które można wziąć pod uwagę, obejmują:
- Metody oversampling przypadków mniejszościowych lub niedoprzykładowe przypadki większości.
- Techniki zespołu, które pomagają uczniom bezpośrednio przy użyciu klastrowania, baggingu lub adaptacyjnego zwiększania.
Następne kroki
Zobacz zestaw składników dostępnych dla usługi Azure Machine Learning.