Jestem nowicjuszem w uczeniu maszynowym (także niektóre statystyki), od dłuższego czasu uczę się wiedzy (algorytmy uczenia nadzorowanego / bez nadzoru, odpowiednie metody optymalizacji, regularyzacje, niektóre filozofie (takie jak kompromis odchylenie biasu?). Wiem, że bez prawdziwej praktyki nie uzyskałbym głębokiego zrozumienia tych rzeczy związanych z uczeniem maszynowym.
Zacznę więc od pewnego problemu z klasyfikacją rzeczywistych danych, na przykład odręcznej klasyfikacji cyfr (MNIST). Ku mojemu zaskoczeniu, bez uczenia się / inżynierii cech , dokładność osiąga 0,97 przy użyciu klasyfikatora losowego lasu z wartościami surowych pikseli jako danych wejściowych. Próbowałem także innych algorytmów uczenia się, takich jak SVM, LR z dostrajanymi parametrami.
Potem się zgubiłem, czy byłoby to zbyt łatwe, czy coś mi tu brakuje? Wystarczy pobrać algorytm uczenia się z zestawu narzędzi i dostroić niektóre parametry?
Gdyby w praktyce chodziło o uczenie maszynowe, straciłbym zainteresowanie tym zagadnieniem. Przez kilka dni myślałem i czytałem blogi i doszedłem do kilku wniosków:
Najważniejszą częścią uczenia maszynowego w praktyce jest inżynieria funkcji , to znaczy biorąc pod uwagę dane, znaleźć lepszą reprezentację funkcji.
Ważny jest również to, który algorytm uczenia się ma być użyty, także dostrajanie parametrów, ale ostateczny wybór dotyczy bardziej eksperymentów.
Nie jestem pewien, czy rozumiem to poprawnie, mając nadzieję, że każdy może mnie poprawić i dać mi sugestie dotyczące uczenia maszynowego w praktyce.
źródło
Odpowiedzi:
Uczenie maszynowe (ML) w praktyce zależy od tego, jaki jest cel robienia ML. W niektórych sytuacjach wystarczające może być solidne wstępne przetwarzanie i stosowanie zestawu gotowych metod ML. Jednak nawet w takich sytuacjach ważne jest, aby zrozumieć, jak działają te metody, aby móc rozwiązywać problemy, gdy coś pójdzie nie tak. Jednak ML w praktyce może być czymś więcej, a MNIST jest dobrym przykładem tego.
Zwodniczo łatwo jest uzyskać „dobrą” wydajność zestawu danych MNIST. Na przykład, zgodnie z witryną Yann Le Cun na temat wydajności MNIST , K najbliższych sąsiadów (K-NN) z metryką odległości euklidesowej (L2) również ma wskaźnik błędu 3%, taki sam jak twój domyślny losowy las. L2 K-NN jest tak prosty, jak tylko algorytm ML. Z drugiej strony najlepszy Yann, Yoshua, Leon i Patrick, pierwszy rzut oka na ten zestaw danych, LeNet-4, ma poziom błędu 0,7%, 0,7% to mniej niż jedna czwarta z 3%, więc jeśli włożysz ten system do ćwiczyć czytanie odręcznych cyfr, naiwny algorytm wymaga czterech razy więcej wysiłku człowieka, aby naprawić swoje błędy.
Splotowa sieć neuronowa, z której korzystali Yann i koledzy, jest dopasowana do zadania, ale nie nazwałbym tego „inżynierią cech”, tyle że starałbym się zrozumieć dane i zakodować to zrozumienie w algorytmie uczenia się.
Jakie są lekcje:
źródło
Myślę, że przykłady, które można znaleźć na blogu lub stronach internetowych, to przykłady, w których wiadomo, że popularne metody działają dobrze (nawet jeśli można je oczywiście ulepszyć).
Moja specjalizacja to inżynieria funkcji i mogę powiedzieć, że często standardowe algorytmy w ogóle nie działają dobrze. (Nie mam żadnej wiedzy na ten temat, ale często pracuję z ludźmi, którzy ją posiadają).
Oto prawdziwy problem, w którym pracowałem przez 6 miesięcy: Biorąc pod uwagę macierz X ze 100 próbkami i 10000 zmiennymi reprezentującymi wartość genetyczną pacjentów i wydajność y wielkości 100 x 1, która reprezentuje gęstość kości.
Czy możesz mi powiedzieć, które geny wpływają na gęstość kości?
Teraz pracuję nad innym problemem. Mam zbiór danych dotyczących produkcji przemysłowej z 2000 próbkami i 12000 zmiennymi. Mój szef chciałby wyodrębnić z tego zestawu danych nie więcej niż 30 zmiennych w sposób nienadzorowany.
Wypróbowałem kilka algorytmów, ale nie mogę wybrać mniej niż 600 zmiennych, ponieważ są one bardzo bardzo skorelowane między nimi. (Nadal nad tym pracuję ...)
Inną ważną kwestią do rozważenia jest wydajność różnych algorytmów. W wielu sytuacjach nie można czekać 20 minut na wynik. Na przykład musisz wiedzieć, kiedy używać NIPALS, a kiedy SVD do obliczania PCA.
Mam nadzieję, że to da ci wyobrażenie o problemach, które są powszechne w ml.
źródło