Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Wykrywanie wartości odstających jest ważnym zadaniem w dziedzinie uczenia maszynowego. Służy do identyfikowania nietypowych obserwacji lub punktów danych, które odbiegają od ogólnego trendu zbioru danych. Jednym ze skutecznych algorytmów wykrywania wartości odstających jest algorytm lasu izolacyjnego

W dzisiejszym blogu omówimy podstawy algorytmu Isolation Forest i zademonstrujemy, jak go używać do wykrywania wartości odstających w zbiorze danych za pomocą języka Python . Możesz obejrzeć pełny film tego samouczka na dole tego bloga .

Spis treści

Algorytm lasu izolacyjnego a metoda wykresu pudełkowego 

Poniżej przedstawiono dwie wizualizacje wykrywania wartości odstających. Zwróć uwagę na znaczące różnice w reprezentacji wizualnej podczas korzystania z w porównaniu z modelem Isolation Forest ML do wykrywania wartości odstających. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

W modelu Isolation Forest ML odsetek wartości odstających wykrytych przez algorytm wykrywania anomalii IS wynosi 32,56%. Korzystając z tego samego algorytmu, pozostałe 67,44% danych mieści się w normalnym zakresie, który jest dość wrażliwy. Naszym celem jest dopracowanie tej czułości za pomocą Pythona

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Tradycyjna metoda wykrywania wartości odstających

Tradycyjnym sposobem znajdowania wartości odstających jest użycie metody wykresu pudełkowego . W tej metodzie używamy IQR, aby znaleźć to, co wykracza poza oczekiwany zakres danych. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

W tym przykładzie ten pojedynczy punkt nad wąsem jest naszą wartością odstającą.

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Jeśli przełożymy ten wykres wizualny na wykres kołowy, otrzymamy tę jedną szczególną wartość odstającą, która odpowiada 2,33% wszystkich danych. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Na tym blogu nauczymy się, jak korzystać z metody Isolation Forest ML, dostosowywać ją do metody tradycyjnej oraz zwiększać lub zmniejszać jej czułość.

Zbiór danych dla algorytmu lasu izolacji

Otwórz nasz zestaw danych w usłudze LuckyTemplates. Następnie kliknij Przekształć dane. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Zostanie wyświetlony nasz zestaw danych dla tego samouczka. Zawiera datę , liczbę użytkowników , indeks i wartość odstającą lasu izolacji z wyjściem 1 dla normalnego zakresu i -1 dla wartości odstających  .

Mamy też kolumnę Tradycyjna wartość odstająca i kolumnę warunkową zatytułowaną Wykrywanie anomalii IS odzwierciedlającą wartość odstającą lasu izolacyjnego. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Nasze drugie zapytanie pokazuje naszą ramkę danych, z której nauczymy się, jak złożyć wszystko razem. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Kody Pythona

W okienku Właściwości możemy zobaczyć nasze dwa uruchomione skrypty Pythona . Tworzymy wyjście Isolation Forest za pomocą jednego z tych skryptów Pythona i generujemy tradycyjną wartość odstającą za pomocą drugiego. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Kod Pythona algorytmu lasu izolacyjnego

Kliknij opcję Uruchom skrypt Pythona , aby wyświetlić kod. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

W tym kodzie Pythona importujemy pandy jako pd i używamy czegoś, co nazywa się Isolation Forest. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Las izolacyjny to model oparty na drzewie, który podejmuje decyzje na podstawie struktury drzewa, a następnie decyduje, czy jest to wartość odstająca, czy nie. Nazywamy to modelem zespołowym , ponieważ wykorzystuje on dwie różne metody znajdowania określonej wartości odstającej. 

Zamieniamy również zmienną zestawu danych , która domyślnie przechowuje nasz zestaw danych, na df

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Biorąc pod uwagę nasz zestaw danych, nie będziemy potrzebować dwóch linii kodów wyróżnionych poniżej, więc możemy po prostu usunąć te linie. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

To, co robimy, to tworzenie instancji modelu.

Zapisz model jako IsolationForest i pozwól modelowi uczyć się danych z użytkownikami. Następnie utwórz nową kolumnę o nazwie Wykrywanie anomalii , która będzie przeglądać wszystkie dane, których się uczy, i przewidywać, które z nich powinny być odstające, a które nie. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

W przypadku tej funkcji wartość domyślna zanieczyszczenia jest ustawiona na 0,5 . Dlatego w tej chwili jest bardzo czuły i będzie szukał wielu wartości odstających. Dlatego na naszym wcześniejszym wykresie kołowym mamy bardzo wysoki zakres wartości odstających na poziomie 32,56%. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Aby uczynić go mniej czułym, możemy dodać zanieczyszczenie = .1 w funkcji IsolationForest .

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Na koniec zresetuj indeks i kliknij OK.

Wynik pokaże tabelę podsumowującą. Przejdź do okienka Zastosowane kroki i kliknij df.

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

W danych wyjściowych możemy znaleźć wartości odstające w kolumnie Wykrywanie anomalii

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Chcemy również zobaczyć, jak radzi sobie w porównaniu z tradycyjnymi wartościami odstającymi. 

Tradycyjny kod Pythona z wartościami odstającymi

Uruchomimy inny skrypt Pythona, którym w tym przykładzie jest skrypt Run Python1.

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Ten kod dodaje funkcję odstającą przy użyciu pierwszego i trzeciego kwartyla. Gdy odejmiemy q1 od q3 , otrzymamy rozstęp międzykwartylowy (IQR)

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Następne dwa wiersze określają warunki dla wartości odstających. Pierwsza linia mówi, że wszystko poniżej 1,5 * iqr jest uważane za ujemne lub niższe wartości odstające. W ten sposób również w tradycyjny sposób znajdujemy wartości odstające.

Wiemy również, że mamy jedną wartość odstającą jako najwyższy punkt w naszych danych. Aby to wyjaśnić, w drugim wierszu stwierdza się, że punkty danych, które są wyższe niż q3 + 1,5 * iqr, są również uważane za wartości odstające. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Zwróć ten zestaw danych i użyj funkcji outliers(df, 'Users') . Następnie kliknij OK.

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Pojawi się tabela podsumowująca podobna do tej, którą widzieliśmy wcześniej. 

Jeśli przejdziemy do okienka Zastosowane kroki i klikniemy Zmieniony typ1 , otrzymamy obok siebie kolumny Tradycyjne wartości odstające i Wykrywanie anomalii , przy czym ta ostatnia używa 1 i -1 do oznaczania wartości odstających, a nie.

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Jednak kiedy używamy dat w Pythonie, mogą wyglądać na pomieszane. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

To, co możemy zrobić, to utworzyć dodatkową kolumnę za pomocą indeksu z Dodaj kolumnę .

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Następnie dodaj Index do poprzedniej kolumny za pomocą Merge , abyśmy mogli zachować wszystkie informacje w tej oryginalnej kolumnie/zestawie danych. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Kiedy już wszystko mamy razem, możemy uruchomić nasz kod i zaktualizować nasze wizualizacje. Pamiętaj, że zmieniliśmy zanieczyszczenie wartości odstającej z 0,5 na 0,1, więc powinniśmy zobaczyć, jak ta część wykresu nieco się skurczyła. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Wróć do wizualizacji i kliknij Zastosuj zmiany. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Zwróć uwagę, jak wykrywanie anomalii wzrosło z 32,56% do 11,63% naszych danych. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Jak widzimy w naszych wynikach, jest to dobry sposób na optymalizację wykrywania wartości odstających. 

Pamiętaj również, że kiedy ludzie używają tradycyjnej metody, mogą używać wartości niższych niż 1,5, ale mimo to 1,5 x IQR jest tradycyjną metodą. 

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie

Algorytm lasu izolacji do wykrywania wartości odstających w Pythonie


Wykrywanie i prezentowanie wyników odstających w usłudze LuckyTemplates
Tworzenie dynamicznych punktów wyzwalających wartości odstające w usłudze
LuckyTemplates Funkcja wykrywania anomalii w usłudze LuckyTemplates: jak to działa

Wniosek

Korzystając z algorytmu Isolation Forest, możemy łatwo identyfikować i wykluczać wszelkie nietypowe obserwacje z naszego zbioru danych, poprawiając w ten sposób dokładność naszej analizy. Ten samouczek zawiera przewodnik krok po kroku dotyczący korzystania z algorytmu Isolation Forest do wykrywania wartości odstających przy użyciu języka Python, który powinien pomóc w rozpoczęciu wdrażania go we własnych projektach.

To, co zrobiliśmy, było bardzo łatwym sposobem wykorzystania naszego kodu Pythona do znalezienia anomalii. Możesz dalej optymalizować ten algorytm, modyfikując zanieczyszczenie i wiele innych zmiennych, których możesz się nauczyć ze strony kodowej Pythona

Wszystkiego najlepszego,

Leave a Comment

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

Dodawaj, usuwaj i zmieniaj nazwy kolumn w R za pomocą Dplyr

W tym samouczku omówimy pakiet dplyr, który umożliwia sortowanie, filtrowanie, dodawanie i zmianę nazw kolumn w języku R.

Funkcje zbierania w Microsoft Power Automate

Funkcje zbierania w Microsoft Power Automate

Odkryj różnorodne funkcje zbierania, które można wykorzystać w Power Automate. Zdobądź praktyczne informacje o funkcjach tablicowych i ich zastosowaniu.

Oceń wydajność kodu DAX w DAX Studio

Oceń wydajność kodu DAX w DAX Studio

Z tego samouczka dowiesz się, jak ocenić wydajność kodów DAX przy użyciu opcji Uruchom test porównawczy w DAX Studio.

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Czym jest self w Pythonie: przykłady z życia wzięte

Jak zapisać i załadować plik RDS w R

Jak zapisać i załadować plik RDS w R

Dowiesz się, jak zapisywać i ładować obiekty z pliku .rds w R. Ten blog będzie również omawiał sposób importowania obiektów z R do LuckyTemplates.

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Powrót do pierwszych N dni roboczych — rozwiązanie języka kodowania DAX

Z tego samouczka języka kodowania DAX dowiesz się, jak używać funkcji GENERUJ i jak dynamicznie zmieniać tytuł miary.

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

Zaprezentuj spostrzeżenia przy użyciu wielowątkowej techniki dynamicznych wizualizacji w usłudze LuckyTemplates

W tym samouczku omówiono sposób korzystania z techniki wielowątkowych wizualizacji dynamicznych w celu tworzenia szczegółowych informacji na podstawie dynamicznych wizualizacji danych w raportach.

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

Wprowadzenie do filtrowania kontekstu w usłudze LuckyTemplates

W tym artykule omówię kontekst filtra. Kontekst filtrowania to jeden z głównych tematów, z którym każdy użytkownik usługi LuckyTemplates powinien zapoznać się na początku.

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Najlepsze wskazówki dotyczące korzystania z aplikacji w usłudze online LuckyTemplates

Chcę pokazać, jak usługa online LuckyTemplates Apps może pomóc w zarządzaniu różnymi raportami i spostrzeżeniami generowanymi z różnych źródeł.

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Analizuj zmiany marży zysku w godzinach nadliczbowych — Analizuj za pomocą LuckyTemplates i DAX

Dowiedz się, jak obliczyć zmiany marży zysku przy użyciu technik, takich jak rozgałęzianie miar i łączenie formuł języka DAX w usłudze LuckyTemplates.