Chcę wyszkolić klasyfikatora, który będzie rozróżniał Type A
i Type B
przedmioty przy pomocy dość dużego zestawu szkoleniowego złożonego z około 10 000 obiektów, z których około połowa jest, Type A
a połowa z nich jest Type B
. Zestaw danych składa się ze 100 ciągłych elementów wyszczególniających właściwości fizyczne komórek (rozmiar, średni promień itp.). Wizualizacja danych na parach wykresów rozrzutu i wykresach gęstości mówi nam, że w wielu cechach zachodzi znaczące nakładanie się rozkładów komórek rakowych i normalnych.
Obecnie badam losowe lasy jako metodę klasyfikacji dla tego zestawu danych i zauważyłem kilka dobrych wyników. Za pomocą R losowe lasy są w stanie poprawnie sklasyfikować około 90% obiektów.
Jedną z rzeczy, które chcemy spróbować, jest stworzenie pewnego rodzaju „wskaźnika pewności”, który będzie określał, jak bardzo jesteśmy pewni klasyfikacji obiektów. Wiemy, że nasz klasyfikator nigdy nie będzie w 100% dokładny, a nawet jeśli zostanie osiągnięta wysoka dokładność prognoz, będziemy chcieli, aby przeszkoleni technicy zidentyfikowali, które obiekty są naprawdę Type A
i Type B
. Zamiast więc dostarczać bezkompromisowe prognozy dla Type A
lub Type B
, chcemy przedstawić ocenę dla każdego obiektu, która opisuje, jak A
lub B
obiekt jest. Na przykład, jeśli opracujemy wynik w zakresie od 0 do 10, wynik 0 może wskazywać, że obiekt jest bardzo podobny do Type A
obiektów, a wynik 10 wskazuje, że obiekt jest bardzo podobny Type B
.
Myślałem, że przy pomocy głosów w losowych lasach opracuję taki wynik. Ponieważ klasyfikacja w losowych lasach odbywa się poprzez głosowanie większością głosów w lesie wygenerowanych drzew, zakładam, że obiekty, na które głosowało 100% drzew, Type A
różniłyby się od obiektów, na które głosowało, powiedzmy, 51% drzew na być Type A
.
Obecnie próbowałem ustalić arbitralny próg dla proporcji głosów, które obiekt musi otrzymać, aby zostać zaklasyfikowany jako Type A
lub Type B
, a jeśli próg nie zostanie przekroczony, zostanie zaklasyfikowany jako Uncertain
. Na przykład, jeśli wymuszę warunek, że 80% lub więcej drzew musi zgodzić się na decyzję dotyczącą zaliczenia klasyfikacji, stwierdzę, że 99% przewidywań klasy jest poprawnych, ale około 40% obiektów jest binowanych jako Uncertain
.
Czy miałoby zatem sens wykorzystanie informacji z głosowania w celu uzyskania pewności prognoz? A może myślę w złym kierunku?
Odpowiedzi:
Ma to sens, a wszystkie implementacje losowych lasów, z którymi pracowałem (takich jak MATLAB), dostarczają również probabilistyczne wyniki, aby to zrobić.
Nie pracowałem z implementacją R, ale byłbym zszokowany, gdyby nie było prostego sposobu na uzyskanie miękkich wyników z głosów, a także trudnej decyzji.
Edycja: Rzuciłem okiem na R i przewiduj.randomForest również określa prawdopodobieństwo wyjściowe.
źródło
Jeśli używasz R, pakiet karetki uratuje cię przed ponownym wynalezieniem koła. Na przykład poniższy kod używa walidacji krzyżowej, aby wybrać parametry strojenia dla losowego modelu lasu, a następnie wyprowadza średnią i standardowe odchylenie dokładności dla każdego krotności walidacji krzyżowej. Na koniec oblicza prawdopodobieństwa klasowe dla modelu.
Zaletą karetki jest to, że bardzo łatwo jest porównywać różne modele predykcyjne. Na przykład, jeśli chcesz spróbować SVM, można zastąpić tekst
method='rf'
zmethod='svmLinear'
lubmethod='svmRadial'.
Można również wybrać parametry strojenia w oparciu o AUC niż dokładnością przez dodanie odpowiedniego wiersza do parametru trainControl:summaryFunction=twoClassSummary
.Na koniec jest trochę kodu z pakietu PerformanceAnalytics
chart.Correlation(Dataset[-5], col= Dataset$Class)
, który nie jest potrzebny do zbudowania modelu, ale zapewnia dobrą wizualizację twojego zestawu danych.źródło
modelLookup()
polecenie, aby uzyskać listę możliwych możliwości.prob
typpredict
jest również dostępny przy użyciurandomForest
do trenowania modelu (z użyciem lub bez użycia innych pakietów, takich jakcaret
lubPerformanceAnalytics
).Lasy losowe pakiet w R jest całkiem przyzwoity pakiet do dostania się do większych szczegółów o swojej analizy. Zapewnia ci głosy (jako część ułamkową lub surową) i oferuje wbudowaną zdolność do strojenia i krzyżowej weryfikacji, a nawet może dać ci więcej informacji na temat twoich funkcji (jeśli chcesz wiedzieć, które ze 100 są najważniejsze w analizie).
Jeśli już używasz tego pakietu, być może chcesz go bliżej przyjrzeć, a jeśli nie, to może go sprawdź.
źródło