Moim zadaniem „uczenia maszynowego” jest oddzielanie łagodnego ruchu internetowego od ruchu złośliwego. W scenariuszu realnym większość (powiedzmy 90% lub więcej) ruchu internetowego jest łagodna. Dlatego czułem, że powinienem również wybrać podobną konfigurację danych do szkolenia moich modeli. Ale natknąłem się na jeden lub dwa artykuły badawcze (w mojej dziedzinie pracy), które wykorzystywały podejście „równoważenia klas” do szkolenia modeli, sugerując taką samą liczbę przypadków łagodnego i złośliwego ruchu.
Ogólnie, jeśli buduję modele uczenia maszynowego, powinienem wybrać zestaw danych, który jest reprezentatywny dla rzeczywistego problemu, lub jest zbalansowanym zestawem danych, który lepiej nadaje się do budowy modeli (ponieważ niektóre klasyfikatory nie zachowują się dobrze w przypadku nierównowagi klas lub z innych nieznanych mi powodów)?
Czy ktoś może rzucić więcej światła na zalety i wady obu wyborów i jak zdecydować, który wybrać?
Myślę, że zawsze zależy to od scenariusza. Korzystanie z reprezentatywnego zestawu danych nie zawsze jest rozwiązaniem. Załóżmy, że Twój zestaw treningowy zawiera 1000 negatywnych przykładów i 20 pozytywnych przykładów. Bez modyfikacji klasyfikatora algorytm będzie klasyfikował wszystkie nowe przykłady jako negatywne. W niektórych scenariuszach jest to w porządku, ale w wielu przypadkach koszty braku pozytywnych przykładów są wysokie, więc musisz znaleźć rozwiązanie.
W takich przypadkach można zastosować wrażliwy na koszty algorytm uczenia maszynowego. Na przykład w przypadku analizy danych diagnozy medycznej.
Podsumowując: Błędy klasyfikacji nie mają takiego samego kosztu!
źródło
Zawsze istnieje rozwiązanie, aby wypróbować oba podejścia i zachować takie, które maksymalizuje oczekiwane wyniki.
W twoim przypadku zakładam, że wolisz minimalizować fałszywe negatywy kosztem niektórych fałszywie dodatnich, więc chcesz uprzedzić klasyfikatora w stosunku do wcześniejszej silnej negatywnej i rozwiązać problem nierównowagi poprzez zmniejszenie liczby negatywnych przykładów w zestawie treningowym.
Następnie oblicz dokładność / przywołanie, czułość / swoistość lub cokolwiek kryterium, które Ci odpowiada na pełnym, niezrównoważonym zestawie danych, aby upewnić się, że nie zignorowałeś znaczącego wzorca występującego w rzeczywistych danych podczas budowania modelu na zredukowanych danych.
źródło
Oddziel scenariusze operacyjne i szkoleniowe.
Scenariusz operacyjny jest tym, w którym twój klasyfikator będzie mierzony. W tym miejscu powinieneś dobrze działać. Zastosowanie powinno mieć zestaw danych reprezentatywny dla tego scenariusza.
Scenariusz treningowy jest tym, co robisz, aby zbudować klasyfikator, który będzie dobrze działał w scenariuszu operacyjnym.
Wiele razy zestawy danych w obu scenariuszach mają ten sam charakter, więc nie trzeba ich rozróżniać. Na przykład masz sklep internetowy, więc używasz go do trenowania przeszłego użytkowania, aby dobrze sobie radzić z przyszłym użytkowaniem. Jednak podczas szkolenia można użyć innego zestawu danych niż ten, który reprezentuje scenariusz operacyjny. W rzeczywistości, jeśli śpisz, marzysz o klasyfikatorze, sprawdzasz go w swoim scenariuszu operacyjnym (ten krok należy zrobić po przebudzeniu), jesteś równie dobry, jak po przejściu zwykłej ścieżki uczenia maszynowego.
Rozróżnienie między scenariuszami operacyjnymi i szkoleniowymi staje się ważne, gdy zestaw danych jest niezrównoważony. Większość algorytmów nie działa dobrze na takim zestawie danych.
Nie wahaj się więc użyć dwóch zestawów danych - do szkolenia możesz użyć zbalansowanego zestawu danych. Po zakończeniu sprawdź poprawność klasyfikatora zestawu danych operacyjnych.
źródło
Myślę, że należy rozważyć dwie odrębne kwestie: czas szkolenia i dokładność prognoz.
Weź prosty przykład: załóż, że masz dwie klasy, które mają wielowymiarowy rozkład normalny. Zasadniczo musisz oszacować odpowiednie środki klasowe i kowariancje klasowe. Pierwszą rzeczą, na której Ci zależy, jest oszacowanie różnicy w klasie: ale twoje wyniki są ograniczone dokładnością najgorszego oszacowanego środka: nie jest dobre oszacowanie jednego środka do 100 miejsca po przecinku - jeśli drugi środek jest tylko oszacowano z dokładnością do 1 miejsca po przecinku. Wykorzystanie wszystkich danych to marnowanie zasobów obliczeniowych - zamiast tego można powtórzyć próbkowanie bardziej powszechnej klasy ORAZ odpowiednio zmienić jej klasę. (te zasoby obliczeniowe można następnie wykorzystać do eksploracji różnych zmiennych wejściowych itp.)
Teraz drugim problemem jest dokładność predykcyjna: różne algorytmy używają różnych wskaźników błędów, które mogą, ale nie muszą zgadzać się z twoimi celami. Na przykład regresja logistyczna będzie karać za ogólny błąd prawdopodobieństwa, więc jeśli większość danych pochodzi z jednej klasy, wówczas będzie dążyć do poprawienia dokładnych szacunków prawdopodobieństwa (np. 90 do 95% prawdopodobieństwa) dla tej jednej klasy, zamiast próbować zidentyfikować rzadka klasa. W takim przypadku zdecydowanie powinieneś spróbować przeważyć, aby podkreślić rzadką klasę (a następnie skorygować oszacowanie [dostosowując warunek polaryzacji], aby wyrównać oszacowania prawdopodobieństwa)
źródło